btrfs-progs/cmds
Qu Wenruo 82f7d6c1d7 btrfs-progs: qgroup: handle stale qgroup deletion more accurately
The current stale qgroup deletion doesn't handle the following cases at
all:

- It doesn't detect stale qgroups correctly
  The current check is using the root backref, which means unlinked but
  not yet fully dropped subvolumes would mark its corresponding qgroups
  stale.

  This is incorrect. The real stale check should be based on the root
  item, not root backref.

- Squota non-empty but stale qgroups
  Such qgroups can not and should not be deleted, as future accounting
  still require them.

- Full accounting mode, stale qgroups but not empty
  Since qgroup numbers are inconsistent already, it's common to have
  such stale qgroups with non-zero numbers.

  Now it's dependent on the kernel to determine whether such qgroup can
  be deleted.

Address the above problems:

- Do root_item based detection
  So that btrfs_qgroup::stale would properly indicate if there is a
  subvolume root item for the qgroup.

- Do not attempt to delete squota stale but non-empty qgroups

- Attempt to delete stale but non-empty qgroups for full accounting mode
  And deletion failure would not count as an error.

Signed-off-by: Qu Wenruo <wqu@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
2024-05-17 17:55:04 +02:00
..
balance.c btrfs-progs: drop _fd from btrfs_open_dir_fd() 2024-02-20 12:56:24 +01:00
commands.h btrfs-progs: use unsigned type for bit shift values 2023-11-03 18:04:37 +01:00
device.c btrfs-progs: drop _fd from btrfs_open_mnt_fd() 2024-02-20 12:57:50 +01:00
filesystem-du.c btrfs-progs: rename btrfs_open_fd2() to btrfs_open_path() 2024-02-20 12:59:29 +01:00
filesystem-usage.c btrfs-progs: reorder key initializations 2024-04-30 21:49:15 +02:00
filesystem-usage.h btrfs-progs: convert device info to struct array 2023-10-17 19:34:00 +02:00
filesystem.c btrfs-progs: rename btrfs_open_fd2() to btrfs_open_path() 2024-02-20 12:59:29 +01:00
inspect-dump-super.c btrfs-progs: clean up includes, using include-what-you-use 2023-10-03 01:11:57 +02:00
inspect-dump-tree.c btrfs-progs: reorder key initializations 2024-04-30 21:49:15 +02:00
inspect-tree-stats.c btrfs-progs: clean up includes, using include-what-you-use 2023-10-03 01:11:57 +02:00
inspect.c btrfs-progs: reorder key initializations 2024-04-30 21:49:15 +02:00
property.c btrfs-progs: property set: fix typo in help message 2024-04-30 19:34:52 +02:00
props.h btrfs-progs: use unsigned type for bit shift values 2023-11-03 18:04:37 +01:00
qgroup.c btrfs-progs: qgroup: handle stale qgroup deletion more accurately 2024-05-17 17:55:04 +02:00
qgroup.h btrfs-progs: qgroups: remove support for num_ref_copies/num_excl_copies 2024-03-04 22:55:07 +01:00
quota.c btrfs-progs: drop _fd from btrfs_open_dir_fd() 2024-02-20 12:56:24 +01:00
receive-dump.c btrfs-progs: receive: add support for fs-verity 2022-10-11 09:08:08 +02:00
receive-dump.h btrfs-progs: cmds: update include lists 2022-10-11 09:07:59 +02:00
receive.c btrfs-progs: receive: properly report lack of zstd support 2023-12-07 14:29:54 +01:00
reflink.c btrfs-progs: implement arg_strtou64_with_suffix() with a new helper 2024-01-18 02:14:23 +01:00
replace.c btrfs-progs: fix double file descriptor close in cmd_replace_start() 2024-04-18 19:16:15 +02:00
rescue-chunk-recover.c btrfs-progs: reorder key initializations 2024-04-30 21:49:15 +02:00
rescue-super-recover.c btrfs-progs: clean up includes, using include-what-you-use 2023-10-03 01:11:57 +02:00
rescue.c btrfs-progs: rescue: properly close the fs for clear-ino-cache 2024-02-08 08:30:37 +01:00
rescue.h
restore.c btrfs-progs: reorder key initializations 2024-04-30 21:49:15 +02:00
scrub.c btrfs-progs: scrub start: use local buffer for data file path in scrub_start() 2024-04-18 19:16:15 +02:00
send.c btrfs-progs: use get_sysfs_proto_supported() in get_sysfs_proto_supported() 2023-12-01 01:58:56 +01:00
subvolume-list.c btrfs-progs: unify tree search header access 2024-03-16 18:15:51 +01:00
subvolume.c Revert "btrfs-progs: subvol delete: add options to delete the qgroup" 2024-04-30 21:49:15 +02:00
subvolume.h btrfs-progs: subvol: introduce rowspec definition for json output 2023-08-28 17:24:23 +02:00