btrfs-progs/tune
Qu Wenruo 68a04bc710 btrfs-progs: tune: add new option to convert back to extent tree
With previous btrfstune support to convert to block-group-tree, it has
implemented most of the infrastructure for bi-directional conversion.

This patch will implement the remaining conversion support to go back to
extent tree.

The modification includes:

- New convert_to_extent_tree() function in btrfstune.c
  It's almost the same as convert_to_bg_tree(), but with small changes:
  * No need to set extra features like NO_HOLES/FST.
  * Need to delete the block group tree when everything finished.

- Update btrfs_delete_and_free_root() to handle non-global roots
  Currently the function can only accepts global roots (extent/csum/free
  space trees)

  If we pass a non-global root into the function, we will screw up
  global_roots_tree and crash.

  Since we're going to use btrfs_delete_and_free_root() to free block
  group tree which is not a global tree, this is needed.

- New handling for half converted fs in get_last_converted_bg()
  There are two cases need to be handled:

  * The bg tree is already empty
    We need to grab the first bg in extent tree.
    Or at conversion function we will fail at grabbing the first bg.

  * The bg tree is not empty
    Then we need to grab the last bg in extent tree.

- Extra root switching in involved functions. This involves:

  * read_converting_block_groups()
  * insert_block_group_item()
  * update_block_group_item()

  We just need to update our target root according to the current
  compat_ro and super flags.

Signed-off-by: Qu Wenruo <wqu@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
2023-04-19 01:10:24 +02:00
..
change-csum.c btrfs-progs: tune: update checksum conversion 2023-02-28 20:11:22 +01:00
change-metadata-uuid.c btrfs-progs: tune: fix typos and mistakes in messages 2023-02-28 19:49:31 +01:00
change-uuid.c btrfs-progs: tune: fix typos and mistakes in messages 2023-02-28 19:49:31 +01:00
convert-bgt.c btrfs-progs: tune: add new option to convert back to extent tree 2023-04-19 01:10:24 +02:00
main.c btrfs-progs: tune: add new option to convert back to extent tree 2023-04-19 01:10:24 +02:00
seeding.c
tune.h btrfs-progs: tune: add new option to convert back to extent tree 2023-04-19 01:10:24 +02:00