btrfs-progs/check
Qu Wenruo 9ad15a7301 btrfs-progs: use btrfs_link_subvolume() to replace btrfs_mksubvol()
The function btrfs_mksubvol() is very different between btrfs-progs and
kernel, the former version is really just linking a subvolume to another
directory inode, but the kernel version is really to make a completely
new subvolume.

Instead of same-named function, introduce btrfs_link_subvolume() and use
it to replace the old btrfs_mksubvol().

This is done by:

- Introduce btrfs_link_subvolume()
  Which does extra checks before doing any modification:
  * Make sure the target inode is a directory
  * Make sure no filename conflict

  Then do the linkage:
  * Add the dir_item/dir_index into the parent inode
  * Add the forward and backward root refs into tree root

- Introduce link_image_subvolume() helper
  Currently btrfs_mksubvol() has a dedicated convert filename retry
  behavior, which is unnecessary and should be done by the convert code.

  Now move the filename retry behavior into the helper.

- Remove btrfs_mksubvol()
  Since there is only one caller utilizing btrfs_mksubvol(), and it's
  now gone, we can remove the old btrfs_mksubvol().

Signed-off-by: Qu Wenruo <wqu@suse.com>
2024-07-30 19:54:50 +02:00
..
common.h btrfs-progs: add extra chunk alignment checks 2024-01-16 19:14:37 +01:00
main.c btrfs-progs: use btrfs_link_subvolume() to replace btrfs_mksubvol() 2024-07-30 19:54:50 +02:00
mode-common.c btrfs-progs: fix warnings reported by -Wold-style-definition 2024-07-30 19:53:32 +02:00
mode-common.h btrfs-progs: check: use bool for option status variables 2024-04-30 19:34:52 +02:00
mode-lowmem.c btrfs-progs: do not check ram_bytes for non-compressed data extents 2024-06-25 17:42:17 +02:00
mode-lowmem.h btrfs-progs: do not check ram_bytes for non-compressed data extents 2024-06-25 17:42:17 +02:00
mode-original.h btrfs-progs: do not check ram_bytes for non-compressed data extents 2024-06-25 17:42:17 +02:00
qgroup-verify.c btrfs-progs: reorder key initializations 2024-04-30 21:49:15 +02:00
qgroup-verify.h btrfs-progs: check: update include lists 2022-10-11 09:06:12 +02:00
repair.c btrfs-progs: reorder key initializations 2024-04-30 21:49:15 +02:00
repair.h btrfs-progs: clean up includes, using include-what-you-use 2023-10-03 01:11:57 +02:00