linux_dsm_epyc7002/fs/btrfs/tests
Josef Bacik 8c38938c7b btrfs: move the root freeing stuff into btrfs_put_root
There are a few different ways to free roots, either you allocated them
yourself and you just do

free_extent_buffer(root->node);
free_extent_buffer(root->commit_node);
btrfs_put_root(root);

Which is the pattern for log roots.  Or for snapshots/subvolumes that
are being dropped you simply call btrfs_free_fs_root() which does all
the cleanup for you.

Unify this all into btrfs_put_root(), so that we don't free up things
associated with the root until the last reference is dropped.  This
makes the root freeing code much more significant.

The only caveat is at close_ctree() time we have to free the extent
buffers for all of our main roots (extent_root, chunk_root, etc) because
we have to drop the btree_inode and we'll run into issues if we hold
onto those nodes until ->kill_sb() time.  This will be addressed in the
future when we kill the btree_inode.

Signed-off-by: Josef Bacik <josef@toxicpanda.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
2020-03-23 17:01:59 +01:00
..
btrfs-tests.c btrfs: move the root freeing stuff into btrfs_put_root 2020-03-23 17:01:59 +01:00
btrfs-tests.h btrfs: selftests: Add support for dummy devices 2020-01-23 17:24:34 +01:00
extent-buffer-tests.c btrfs: tests: use standard error message after path allocation failure 2019-04-29 19:02:26 +02:00
extent-io-tests.c btrfs: Correctly handle empty trees in find_first_clear_extent_bit 2020-01-31 14:01:29 +01:00
extent-map-tests.c btrfs: Add self-tests for btrfs_rmap_block 2020-01-23 17:24:35 +01:00
free-space-tests.c btrfs: rename btrfs_block_group_cache 2019-11-18 17:51:51 +01:00
free-space-tree-tests.c btrfs: return error pointer from alloc_test_extent_buffer 2019-12-13 14:09:24 +01:00
inode-tests.c btrfs: drop create parameter to btrfs_get_extent() 2020-01-20 16:40:55 +01:00
qgroup-tests.c btrfs: return error pointer from alloc_test_extent_buffer 2019-12-13 14:09:24 +01:00