Re: [PATCH 0/3] btrfs: allow BTRFS_IOC_SNAP_DESTROY_V2 to remove ghost subvolume
From: Zygo Blaxell <hidden>
Date: 2021-07-20 04:06:15
On Mon, Jun 28, 2021 at 06:16:34PM +0800, Qu Wenruo wrote:
Since we're busting ghost subvolumes, the branch is now called ghost_busters: https://github.com/adam900710/linux/tree/ghost_busters The first two patches are just cleanup found during the development. The first is a missing check for subvolid range, the missing check itself won't cause any harm, just returning -ENOENT from dentry lookup, other than the expected -EINVAL. The 2nd is a super old dead comment from the early age of btrfs. The final patch is the real work to allow patched "btrfs subvolume delete -i" to delete ghost subvolume. Tested with the image dump of previous submitted btrfs-progs patchset. Qu Wenruo (3): btrfs: return -EINVAL if some user wants to remove uuid/data_reloc tree btrfs: remove dead comment on btrfs_add_dead_root() btrfs: allow BTRFS_IOC_SNAP_DESTROY_V2 to remove ghost subvolume
I hit this bug on several machines while they were running 5.11. The ghost subvols seem to occur naturally--I didn't change my usual workloads to get them, they just showed up in fairly normal snapshot rotation. They don't seem to occur on 5.10 (up to .46) or on 5.12 and later, but once they are created, they don't go away without using this patch to remove them. This patch does get rid of the ghost subvols after the fact, quite nicely. Some users on IRC have hit the same problem. One was running Debian's backported 5.10, which doesn't fit the pattern of kernel versions I've observed, but maybe Debian backported something?
fs/btrfs/ioctl.c | 81 +++++++++++++++++++++++++++++++++++++++++- fs/btrfs/transaction.c | 7 ++-- 2 files changed, 84 insertions(+), 4 deletions(-) -- 2.32.0