• Guoyu Ou's avatar
    bcachefs: skip invisible entries in empty subvolume checking · 0be5b38b
    Guoyu Ou authored
    When we are checking whether a subvolume is empty in the specified snapshot,
    entries that do not belong to this subvolume should be skipped.
    
    This fixes the following case:
    
        $ bcachefs subvolume create ./sub
        $ cd sub
        $ bcachefs subvolume create ./sub2
        $ bcachefs subvolume snapshot . ./snap
        $ ls -a snap
        . ..
        $ rmdir snap
        rmdir: failed to remove 'snap': Directory not empty
    
    As Kent suggested, we pass 0 in may_delete_deleted_inode() to ignore subvols
    in the subvol we are checking, because inode.bi_subvol is only set on
    subvolume roots, and we can't go through every inode in the subvolume and
    change bi_subvol when taking a snapshot. It makes the check less strict, but
    that's ok, the rest of fsck will still catch it.
    Signed-off-by: default avatarGuoyu Ou <benogy@gmail.com>
    Signed-off-by: default avatarKent Overstreet <kent.overstreet@linux.dev>
    0be5b38b
inode.c 29.9 KB