Btrfs: remove unnecessary transaction commit before send
We will finish orphan cleanups during snapshot, so we don't have to commit transaction here. Signed-off-by: Wang Shilong <wangsl.fnst@cn.fujitsu.com> Reviewed-by: Miao Xie <miaox@cn.fujitsu.com> Signed-off-by: Josef Bacik <jbacik@fb.com> Signed-off-by: Chris Mason <clm@fb.com>
This commit is contained in:
parent
18f687d538
commit
8e56338d7d
@ -4775,35 +4775,6 @@ long btrfs_ioctl_send(struct file *mnt_file, void __user *arg_)
|
|||||||
*/
|
*/
|
||||||
WARN_ON(send_root->orphan_cleanup_state != ORPHAN_CLEANUP_DONE);
|
WARN_ON(send_root->orphan_cleanup_state != ORPHAN_CLEANUP_DONE);
|
||||||
|
|
||||||
/*
|
|
||||||
* If we just created this root we need to make sure that the orphan
|
|
||||||
* cleanup has been done and committed since we search the commit root,
|
|
||||||
* so check its commit root transid with our otransid and if they match
|
|
||||||
* commit the transaction to make sure everything is updated.
|
|
||||||
*/
|
|
||||||
down_read(&send_root->fs_info->extent_commit_sem);
|
|
||||||
if (btrfs_header_generation(send_root->commit_root) ==
|
|
||||||
btrfs_root_otransid(&send_root->root_item)) {
|
|
||||||
struct btrfs_trans_handle *trans;
|
|
||||||
|
|
||||||
up_read(&send_root->fs_info->extent_commit_sem);
|
|
||||||
|
|
||||||
trans = btrfs_attach_transaction_barrier(send_root);
|
|
||||||
if (IS_ERR(trans)) {
|
|
||||||
if (PTR_ERR(trans) != -ENOENT) {
|
|
||||||
ret = PTR_ERR(trans);
|
|
||||||
goto out;
|
|
||||||
}
|
|
||||||
/* ENOENT means theres no transaction */
|
|
||||||
} else {
|
|
||||||
ret = btrfs_commit_transaction(trans, send_root);
|
|
||||||
if (ret)
|
|
||||||
goto out;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
up_read(&send_root->fs_info->extent_commit_sem);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Userspace tools do the checks and warn the user if it's
|
* Userspace tools do the checks and warn the user if it's
|
||||||
* not RO.
|
* not RO.
|
||||||
|
Loading…
Reference in New Issue
Block a user