• David Sterba's avatar
    btrfs: protect snapshots from deleting during send · 521e0546
    David Sterba authored
    The patch "Btrfs: fix protection between send and root deletion"
    (18f687d5) does not actually prevent to delete the snapshot
    and just takes care during background cleaning, but this seems rather
    user unfriendly, this patch implements the idea presented in
    
    http://www.spinics.net/lists/linux-btrfs/msg30813.html
    
    - add an internal root_item flag to denote a dead root
    - check if the send_in_progress is set and refuse to delete, otherwise
      set the flag and proceed
    - check the flag in send similar to the btrfs_root_readonly checks, for
      all involved roots
    
    The root lookup in send via btrfs_read_fs_root_no_name will check if the
    root is really dead or not. If it is, ENOENT, aborted send. If it's
    alive, it's protected by send_in_progress, send can continue.
    
    CC: Miao Xie <miaox@cn.fujitsu.com>
    CC: Wang Shilong <wangsl.fnst@cn.fujitsu.com>
    Signed-off-by: default avatarDavid Sterba <dsterba@suse.cz>
    Signed-off-by: default avatarChris Mason <clm@fb.com>
    521e0546
ctree.h 133 KB