btrfs-progs/kernel-shared
Boris Burkov 92d92e99b7 btrfs-progs: mkfs: support free space tree as -R option
Add a runtime feature (-R) flag for the free space tree. A filesystem
that is mkfs'd with -R free-space-tree then mounted with no options has
the same contents as one mkfs'd without the option, then mounted with
'-o space_cache=v2'.

The only tricky thing is in exactly how to call the tree creation code.
Using btrfs_create_free_space_tree as is did not quite work, because an
extra reference to the eb (root->commit_root) is leaked, which mkfs
complains about with a warning. I opted to follow how the uuid tree is
created by adding it to the dirty roots list for cleanup by
commit_tree_roots in commit_transaction. As a result,
btrfs_create_free_space_tree no longer exactly matches the version in
the kernel sources.

Reviewed-by: Josef Bacik <josef@toxicpanda.com>
Signed-off-by: Boris Burkov <boris@bur.io>
Signed-off-by: David Sterba <dsterba@suse.com>
2020-09-08 22:06:04 +02:00
..
backref.c btrfs-progs: move transaction.c to kernel-shared/ 2020-08-31 17:01:06 +02:00
backref.h btrfs-progs: move extent_io.c to kernel-shared/ 2020-08-31 17:01:04 +02:00
ctree.c btrfs-progs: move volumes.c to kernel-shared/ 2020-08-31 17:01:06 +02:00
ctree.h btrfs-progs: make btrfs_lookup_dir_index in parity with kernel code 2020-08-31 17:09:49 +02:00
delayed-ref.c btrfs-progs: move transaction.c to kernel-shared/ 2020-08-31 17:01:06 +02:00
delayed-ref.h btrfs-progs: move delayed-ref.[ch] to kernel-shared/ 2020-03-31 18:37:34 +02:00
dir-item.c btrfs-progs: make btrfs_lookup_dir_index in parity with kernel code 2020-08-31 17:09:49 +02:00
disk-io.c btrfs-progs: mkfs: support free space tree as -R option 2020-09-08 22:06:04 +02:00
disk-io.h btrfs-progs: move ctree.c to kernel-shared/ 2020-08-31 17:01:05 +02:00
extent-tree.c btrfs-progs: move volumes.c to kernel-shared/ 2020-08-31 17:01:06 +02:00
extent_io.c btrfs-progs: move volumes.c to kernel-shared/ 2020-08-31 17:01:06 +02:00
extent_io.h btrfs-progs: move extent_io.c to kernel-shared/ 2020-08-31 17:01:04 +02:00
file-item.c btrfs-progs: move transaction.c to kernel-shared/ 2020-08-31 17:01:06 +02:00
file.c btrfs-progs: move transaction.c to kernel-shared/ 2020-08-31 17:01:06 +02:00
free-space-cache.c btrfs-progs: move transaction.c to kernel-shared/ 2020-08-31 17:01:06 +02:00
free-space-cache.h btrfs-progs: move ctree.c to kernel-shared/ 2020-08-31 17:01:05 +02:00
free-space-tree.c btrfs-progs: mkfs: support free space tree as -R option 2020-09-08 22:06:04 +02:00
free-space-tree.h btrfs-progs: rename btrfs_block_group_cache to btrfs_block_group 2020-05-11 20:50:00 +02:00
inode-item.c btrfs-progs: move transaction.c to kernel-shared/ 2020-08-31 17:01:06 +02:00
inode.c btrfs-progs: make btrfs_lookup_dir_index in parity with kernel code 2020-08-31 17:09:49 +02:00
print-tree.c btrfs-progs: move ctree.c to kernel-shared/ 2020-08-31 17:01:05 +02:00
print-tree.h btrfs-progs: move print-tree.c to kernel-shared/ 2020-08-31 17:01:05 +02:00
root-tree.c btrfs-progs: move transaction.c to kernel-shared/ 2020-08-31 17:01:06 +02:00
transaction.c btrfs-progs: move transaction.c to kernel-shared/ 2020-08-31 17:01:06 +02:00
transaction.h btrfs-progs: move transaction.c to kernel-shared/ 2020-08-31 17:01:06 +02:00
ulist.c btrfs-progs: move ctree.c to kernel-shared/ 2020-08-31 17:01:05 +02:00
ulist.h btrfs-progs: build: drop kernel-lib from -I and update paths 2019-07-03 20:49:04 +02:00
uuid-tree.c btrfs-progs: move transaction.c to kernel-shared/ 2020-08-31 17:01:06 +02:00
volumes.c btrfs-progs: move volumes.c to kernel-shared/ 2020-08-31 17:01:06 +02:00
volumes.h btrfs-progs: move volumes.c to kernel-shared/ 2020-08-31 17:01:06 +02:00