提交 e87ac136 编写于 作者: M Miao Xie 提交者: Josef Bacik

Btrfs: don't start the log transaction if the log tree init fails

The old code would start the log transaction even the log tree init
failed, it was unnecessary. Fix it.
Signed-off-by: NMiao Xie <miaox@cn.fujitsu.com>
Signed-off-by: NJosef Bacik <jbacik@fb.com>
上级 48cab2e0
......@@ -139,7 +139,6 @@ static int start_log_trans(struct btrfs_trans_handle *trans,
struct btrfs_root *root)
{
int ret;
int err = 0;
mutex_lock(&root->log_mutex);
if (root->log_root) {
......@@ -155,24 +154,27 @@ static int start_log_trans(struct btrfs_trans_handle *trans,
mutex_unlock(&root->log_mutex);
return 0;
}
root->log_multiple_pids = false;
root->log_start_pid = current->pid;
ret = 0;
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);
if (ret)
err = ret;
}
if (err == 0 && !root->log_root) {
mutex_unlock(&root->fs_info->tree_log_mutex);
if (ret)
goto out;
if (!root->log_root) {
ret = btrfs_add_log_tree(trans, root);
if (ret)
err = ret;
goto out;
}
mutex_unlock(&root->fs_info->tree_log_mutex);
root->log_multiple_pids = false;
root->log_start_pid = current->pid;
atomic_inc(&root->log_batch);
atomic_inc(&root->log_writers);
out:
mutex_unlock(&root->log_mutex);
return err;
return ret;
}
/*
......@@ -4116,7 +4118,7 @@ static int btrfs_log_inode_parent(struct btrfs_trans_handle *trans,
ret = start_log_trans(trans, root);
if (ret)
goto end_trans;
goto end_no_trans;
ret = btrfs_log_inode(trans, root, inode, inode_only);
if (ret)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册