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