diff --git a/fs/btrfs/disk-io.c b/fs/btrfs/disk-io.c index f1143741f6ba057685de32ca6e94e80ba15c0a94..7b66a8e4ca5420cfdcc1d4bb8fcf8020f55840a2 100644 --- a/fs/btrfs/disk-io.c +++ b/fs/btrfs/disk-io.c @@ -1994,6 +1994,7 @@ void btrfs_put_root(struct btrfs_root *root) if (refcount_dec_and_test(&root->refs)) { WARN_ON(!RB_EMPTY_ROOT(&root->inode_tree)); + WARN_ON(test_bit(BTRFS_ROOT_DEAD_RELOC_TREE, &root->state)); if (root->anon_dev) free_anon_bdev(root->anon_dev); btrfs_drew_lock_destroy(&root->snapshot_lock); diff --git a/fs/btrfs/relocation.c b/fs/btrfs/relocation.c index 81b076e4614356f7b264340e0e3a37dad96b7e4a..68dd7a771e5e5206d218515a147e0c8260b799d1 100644 --- a/fs/btrfs/relocation.c +++ b/fs/btrfs/relocation.c @@ -1935,6 +1935,8 @@ void merge_reloc_roots(struct reloc_control *rc) root->reloc_root = NULL; btrfs_put_root(reloc_root); } + clear_bit(BTRFS_ROOT_DEAD_RELOC_TREE, + &root->state); btrfs_put_root(root); }