Linux Btrfs filesystem development
 help / color / mirror / Atom feed
* [PATCH 1/2] Btrfs: send, add missing check for dead clone root
@ 2015-03-02 20:53 Filipe Manana
  2015-03-02 20:53 ` [PATCH 2/2] Btrfs: send, don't leave without decrementing clone root's send_progress Filipe Manana
  2015-03-09 16:43 ` [PATCH 1/2] Btrfs: send, add missing check for dead clone root David Sterba
  0 siblings, 2 replies; 4+ messages in thread
From: Filipe Manana @ 2015-03-02 20:53 UTC (permalink / raw)
  To: linux-btrfs; +Cc: Filipe Manana

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>
---
 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 d6033f5..6ec28f1 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;
-- 
2.1.3


^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2015-03-09 16:45 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-03-02 20:53 [PATCH 1/2] Btrfs: send, add missing check for dead clone root Filipe Manana
2015-03-02 20:53 ` [PATCH 2/2] Btrfs: send, don't leave without decrementing clone root's send_progress Filipe Manana
2015-03-09 16:45   ` David Sterba
2015-03-09 16:43 ` [PATCH 1/2] Btrfs: send, add missing check for dead clone root David Sterba

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox