X-Git-Url: http://git.osdn.net/view?p=uclinux-h8%2Flinux.git;a=blobdiff_plain;f=fs%2Fbtrfs%2Fextent-tree.c;fp=fs%2Fbtrfs%2Fextent-tree.c;h=1c2bd1723e40ce8d1390223daf2bf4a7871ac051;hp=38b76cc02f486db1e9d7f887860aba8137d61205;hb=973097fed0dc6a0efd4c525d61d9537de0d3de53;hpb=579f2be0987351fcea0f2a06d6ac7a4baca4f96e diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c index 38b76cc02f48..1c2bd1723e40 100644 --- a/fs/btrfs/extent-tree.c +++ b/fs/btrfs/extent-tree.c @@ -9889,6 +9889,8 @@ void btrfs_delete_unused_bgs(struct btrfs_fs_info *fs_info) } spin_unlock(&fs_info->unused_bgs_lock); + mutex_lock(&root->fs_info->delete_unused_bgs_mutex); + /* Don't want to race with allocators so take the groups_sem */ down_write(&space_info->groups_sem); spin_lock(&block_group->lock); @@ -9983,6 +9985,7 @@ void btrfs_delete_unused_bgs(struct btrfs_fs_info *fs_info) end_trans: btrfs_end_transaction(trans, root); next: + mutex_unlock(&root->fs_info->delete_unused_bgs_mutex); btrfs_put_block_group(block_group); spin_lock(&fs_info->unused_bgs_lock); }