Commit 34eb2a52 authored by Zhaolei's avatar Zhaolei Committed by Chris Mason

btrfs: Remove useless condition in start_log_trans()

Dan Carpenter <dan.carpenter@oracle.com> reported a smatch warning
for start_log_trans():
 fs/btrfs/tree-log.c:178 start_log_trans()
 warn: we tested 'root->log_root' before and it was 'false'

 fs/btrfs/tree-log.c
 147          if (root->log_root) {
 We test "root->log_root" here.
 ...

Reason:
 Condition of:
 fs/btrfs/tree-log.c:178: if (!root->log_root) {
 is not necessary after commit: 7237f183

 It caused a smatch warning, and no functionally error.

Fix:
 Deleting above condition will make smatch shut up,
 but a better way is to do cleanup for start_log_trans()
 to remove duplicated code and make code more readable.
Reported-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: default avatarZhao Lei <zhaolei@cn.fujitsu.com>
Signed-off-by: default avatarChris Mason <clm@fb.com>
parent 46cd2855
...@@ -140,34 +140,23 @@ static int start_log_trans(struct btrfs_trans_handle *trans, ...@@ -140,34 +140,23 @@ static int start_log_trans(struct btrfs_trans_handle *trans,
struct btrfs_root *root, struct btrfs_root *root,
struct btrfs_log_ctx *ctx) struct btrfs_log_ctx *ctx)
{ {
int index; int ret = 0;
int ret;
mutex_lock(&root->log_mutex); mutex_lock(&root->log_mutex);
if (root->log_root) { if (root->log_root) {
if (btrfs_need_log_full_commit(root->fs_info, trans)) { if (btrfs_need_log_full_commit(root->fs_info, trans)) {
ret = -EAGAIN; ret = -EAGAIN;
goto out; goto out;
} }
if (!root->log_start_pid) { if (!root->log_start_pid) {
root->log_start_pid = current->pid;
clear_bit(BTRFS_ROOT_MULTI_LOG_TASKS, &root->state); clear_bit(BTRFS_ROOT_MULTI_LOG_TASKS, &root->state);
root->log_start_pid = current->pid;
} else if (root->log_start_pid != current->pid) { } else if (root->log_start_pid != current->pid) {
set_bit(BTRFS_ROOT_MULTI_LOG_TASKS, &root->state); set_bit(BTRFS_ROOT_MULTI_LOG_TASKS, &root->state);
} }
} else {
atomic_inc(&root->log_batch);
atomic_inc(&root->log_writers);
if (ctx) {
index = root->log_transid % 2;
list_add_tail(&ctx->list, &root->log_ctxs[index]);
ctx->log_transid = root->log_transid;
}
mutex_unlock(&root->log_mutex);
return 0;
}
ret = 0;
mutex_lock(&root->fs_info->tree_log_mutex); mutex_lock(&root->fs_info->tree_log_mutex);
if (!root->fs_info->log_root_tree) if (!root->fs_info->log_root_tree)
ret = btrfs_init_log_root_tree(trans, root->fs_info); ret = btrfs_init_log_root_tree(trans, root->fs_info);
...@@ -175,20 +164,22 @@ static int start_log_trans(struct btrfs_trans_handle *trans, ...@@ -175,20 +164,22 @@ static int start_log_trans(struct btrfs_trans_handle *trans,
if (ret) if (ret)
goto out; goto out;
if (!root->log_root) {
ret = btrfs_add_log_tree(trans, root); ret = btrfs_add_log_tree(trans, root);
if (ret) if (ret)
goto out; goto out;
}
clear_bit(BTRFS_ROOT_MULTI_LOG_TASKS, &root->state); clear_bit(BTRFS_ROOT_MULTI_LOG_TASKS, &root->state);
root->log_start_pid = current->pid; root->log_start_pid = current->pid;
}
atomic_inc(&root->log_batch); atomic_inc(&root->log_batch);
atomic_inc(&root->log_writers); atomic_inc(&root->log_writers);
if (ctx) { if (ctx) {
index = root->log_transid % 2; int index = root->log_transid % 2;
list_add_tail(&ctx->list, &root->log_ctxs[index]); list_add_tail(&ctx->list, &root->log_ctxs[index]);
ctx->log_transid = root->log_transid; ctx->log_transid = root->log_transid;
} }
out: out:
mutex_unlock(&root->log_mutex); mutex_unlock(&root->log_mutex);
return ret; return ret;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment