diff options
author | Miao Xie <miaox@cn.fujitsu.com> | 2013-09-25 15:47:43 +0200 |
---|---|---|
committer | Chris Mason <chris.mason@fusionio.com> | 2013-10-11 03:30:53 +0200 |
commit | 14927d95464956ffe8af4278331a6bfea94ab780 (patch) | |
tree | eb9dcde86e2ea82d4c4f9997646cc6bcde75a49e /fs/btrfs | |
parent | Btrfs: limit delalloc pages outside of find_delalloc_range (diff) | |
download | linux-14927d95464956ffe8af4278331a6bfea94ab780.tar.xz linux-14927d95464956ffe8af4278331a6bfea94ab780.zip |
Btrfs: insert orphan roots into fs radix tree
Now we don't drop all the deleted snapshots/subvolumes before the space
balance. It means we have to relocate the space which is held by the dead
snapshots/subvolumes. So we must into them into fs radix tree, or we would
forget to commit the change of them when doing transaction commit, and it
would corrupt the metadata.
Signed-off-by: Miao Xie <miaox@cn.fujitsu.com>
Signed-off-by: Josef Bacik <jbacik@fusionio.com>
Signed-off-by: Chris Mason <chris.mason@fusionio.com>
Diffstat (limited to 'fs/btrfs')
-rw-r--r-- | fs/btrfs/root-tree.c | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/fs/btrfs/root-tree.c b/fs/btrfs/root-tree.c index 0b1f4ef8db98..ec71ea44d2b4 100644 --- a/fs/btrfs/root-tree.c +++ b/fs/btrfs/root-tree.c @@ -299,11 +299,6 @@ int btrfs_find_orphan_roots(struct btrfs_root *tree_root) continue; } - if (btrfs_root_refs(&root->root_item) == 0) { - btrfs_add_dead_root(root); - continue; - } - err = btrfs_init_fs_root(root); if (err) { btrfs_free_fs_root(root); @@ -318,6 +313,9 @@ int btrfs_find_orphan_roots(struct btrfs_root *tree_root) btrfs_free_fs_root(root); break; } + + if (btrfs_root_refs(&root->root_item) == 0) + btrfs_add_dead_root(root); } btrfs_free_path(path); |