Skip to content
  • Filipe Manana's avatar
    Btrfs: send, don't error in the presence of subvols/snapshots · 70510742
    Filipe Manana authored
    
    
    commit 1af56070e3ef9477dbc7eba3b9ad7446979c7974 upstream.
    
    If we are doing an incremental send and the base snapshot has a
    directory with name X that doesn't exist anymore in the second
    snapshot and a new subvolume/snapshot exists in the second snapshot
    that has the same name as the directory (name X), the incremental
    send would fail with -ENOENT error. This is because it attempts
    to lookup for an inode with a number matching the objectid of a
    root, which doesn't exist.
    
    Steps to reproduce:
    
        mkfs.btrfs -f /dev/sdd
        mount /dev/sdd /mnt
    
        mkdir /mnt/testdir
        btrfs subvolume snapshot -r /mnt /mnt/mysnap1
    
        rmdir /mnt/testdir
        btrfs subvolume create /mnt/testdir
        btrfs subvolume snapshot -r /mnt /mnt/mysnap2
    
        btrfs send -p /mnt/mysnap1 /mnt/mysnap2 -f /tmp/send.data
    
    A test case for xfstests follows.
    
    Reported-by: default avatarRobert White <rwhite@pobox.com>
    Signed-off-by: default avatarFilipe David Borba Manana <fdmanana@gmail.com>
    Signed-off-by: default avatarChris Mason <clm@fb.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    70510742