Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8e56338d authored by Wang Shilong's avatar Wang Shilong Committed by Chris Mason
Browse files

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: default avatarWang Shilong <wangsl.fnst@cn.fujitsu.com>
Reviewed-by: default avatarMiao Xie <miaox@cn.fujitsu.com>
Signed-off-by: default avatarJosef Bacik <jbacik@fb.com>
Signed-off-by: default avatarChris Mason <clm@fb.com>
parent 18f687d5
Loading
Loading
Loading
Loading
+0 −29
Original line number Diff line number Diff line
@@ -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);

	/*
	 * 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
	 * not RO.