Btrfs: move btrfs_free_qgroup_config() out of spin_lock and fix comments
btrfs_free_qgroup_config() is not only called by open/close_ctree(),but also btrfs_disable_quota().And for btrfs_disable_quota(),we have set 'quota_root' to be null before calling btrfs_free_qgroup_config(),so it is safe to cleanup in-memory structures without lock held. Signed-off-by: Wang Shilong <wangsl.fnst@cn.fujitsu.com> Reviewed-by: Miao Xie <miaox@cn.fujitsu.com> Signed-off-by: Josef Bacik <jbacik@fusionio.com> Signed-off-by: Chris Mason <chris.mason@fusionio.com>
This commit is contained in:
committed by
Chris Mason
parent
4082bd3d73
commit
e685da14af
@@ -432,8 +432,10 @@ out:
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This is only called from close_ctree() or open_ctree(), both in single-
|
* This is called from close_ctree() or open_ctree() or btrfs_quota_disable(),
|
||||||
* treaded paths. Clean up the in-memory structures. No locking needed.
|
* first two are in single-threaded paths.And for the third one, we have set
|
||||||
|
* quota_root to be null with qgroup_lock held before, so it is safe to clean
|
||||||
|
* up the in-memory structures without qgroup_lock held.
|
||||||
*/
|
*/
|
||||||
void btrfs_free_qgroup_config(struct btrfs_fs_info *fs_info)
|
void btrfs_free_qgroup_config(struct btrfs_fs_info *fs_info)
|
||||||
{
|
{
|
||||||
@@ -937,9 +939,10 @@ int btrfs_quota_disable(struct btrfs_trans_handle *trans,
|
|||||||
fs_info->pending_quota_state = 0;
|
fs_info->pending_quota_state = 0;
|
||||||
quota_root = fs_info->quota_root;
|
quota_root = fs_info->quota_root;
|
||||||
fs_info->quota_root = NULL;
|
fs_info->quota_root = NULL;
|
||||||
btrfs_free_qgroup_config(fs_info);
|
|
||||||
spin_unlock(&fs_info->qgroup_lock);
|
spin_unlock(&fs_info->qgroup_lock);
|
||||||
|
|
||||||
|
btrfs_free_qgroup_config(fs_info);
|
||||||
|
|
||||||
if (!quota_root) {
|
if (!quota_root) {
|
||||||
ret = -EINVAL;
|
ret = -EINVAL;
|
||||||
goto out;
|
goto out;
|
||||||
|
Reference in New Issue
Block a user