|
@@ -993,9 +993,10 @@ int btrfs_quota_disable(struct btrfs_trans_handle *trans,
|
|
mutex_lock(&fs_info->qgroup_ioctl_lock);
|
|
mutex_lock(&fs_info->qgroup_ioctl_lock);
|
|
if (!fs_info->quota_root)
|
|
if (!fs_info->quota_root)
|
|
goto out;
|
|
goto out;
|
|
- spin_lock(&fs_info->qgroup_lock);
|
|
|
|
fs_info->quota_enabled = 0;
|
|
fs_info->quota_enabled = 0;
|
|
fs_info->pending_quota_state = 0;
|
|
fs_info->pending_quota_state = 0;
|
|
|
|
+ btrfs_qgroup_wait_for_completion(fs_info);
|
|
|
|
+ spin_lock(&fs_info->qgroup_lock);
|
|
quota_root = fs_info->quota_root;
|
|
quota_root = fs_info->quota_root;
|
|
fs_info->quota_root = NULL;
|
|
fs_info->quota_root = NULL;
|
|
fs_info->qgroup_flags &= ~BTRFS_QGROUP_STATUS_FLAG_ON;
|
|
fs_info->qgroup_flags &= ~BTRFS_QGROUP_STATUS_FLAG_ON;
|