9202477
From: Filipe Manana <fdmanana@suse.com>
9202477
Date: Mon, 2 Mar 2015 20:53:52 +0000
9202477
Subject: [PATCH] Btrfs: send, add missing check for dead clone root
9202477
9202477
After we locked the root's root item, a concurrent snapshot deletion
9202477
call might have set the dead flag on it. So check if the dead flag
9202477
is set and abort if it is, just like we do for the parent root.
9202477
9202477
Signed-off-by: Filipe Manana <fdmanana@suse.com>
9202477
Reviewed-by: David Sterba <dsterba@suse.cz>
9202477
Signed-off-by: Chris Mason <clm@fb.com>
9202477
---
9202477
 fs/btrfs/send.c | 3 ++-
9202477
 1 file changed, 2 insertions(+), 1 deletion(-)
9202477
9202477
diff --git a/fs/btrfs/send.c b/fs/btrfs/send.c
9202477
index d6033f540cc7..6ec28f13659e 100644
9202477
--- a/fs/btrfs/send.c
9202477
+++ b/fs/btrfs/send.c
9202477
@@ -5855,7 +5855,8 @@ long btrfs_ioctl_send(struct file *mnt_file, void __user *arg_)
9202477
 			clone_sources_to_rollback = i + 1;
9202477
 			spin_lock(&clone_root->root_item_lock);
9202477
 			clone_root->send_in_progress++;
9202477
-			if (!btrfs_root_readonly(clone_root)) {
9202477
+			if (!btrfs_root_readonly(clone_root) ||
9202477
+			    btrfs_root_dead(clone_root)) {
9202477
 				spin_unlock(&clone_root->root_item_lock);
9202477
 				srcu_read_unlock(&fs_info->subvol_srcu, index);
9202477
 				ret = -EPERM;