Btrfs: fix a warning when updating qgroup limit
authorWang Shilong <wangsl-fnst@cn.fujitsu.com>
Sun, 7 Apr 2013 10:50:20 +0000 (10:50 +0000)
committerJosef Bacik <jbacik@fusionio.com>
Mon, 6 May 2013 19:54:41 +0000 (15:54 -0400)
Step to reproduce:
mkfs.btrfs <disk>
mount <disk> <mnt>
btrfs quota enable <mnt>
btrfs qgroup limit 0/1 <mnt>
dmesg

If the relative qgroup dosen't exist, flag 'BTRFS_QGROUP_STATUS_
FLAG_INCONSISTENT' will be set, and print the noise message.
This is wrong, we can just move find_qgroup_rb() before
update_qgroup_limit_item().this dosen't change the logic of the
function. But it can avoid unnecessary noise message and wrong set of flag.

Signed-off-by: Wang Shilong <wangsl-fnst@cn.fujitsu.com>
Signed-off-by: Josef Bacik <jbacik@fusionio.com>
fs/btrfs/qgroup.c

index 2293da6f9e72f4ed2ae04db7743abcc47db456f1..e089fc108483f3a65685df1c52aa2d3f1a7a51aa 100644 (file)
@@ -1092,6 +1092,11 @@ int btrfs_limit_qgroup(struct btrfs_trans_handle *trans,
                goto out;
        }
 
+       qgroup = find_qgroup_rb(fs_info, qgroupid);
+       if (!qgroup) {
+               ret = -ENOENT;
+               goto out;
+       }
        ret = update_qgroup_limit_item(trans, quota_root, qgroupid,
                                       limit->flags, limit->max_rfer,
                                       limit->max_excl, limit->rsv_rfer,
@@ -1102,11 +1107,6 @@ int btrfs_limit_qgroup(struct btrfs_trans_handle *trans,
                       (unsigned long long)qgroupid);
        }
 
-       qgroup = find_qgroup_rb(fs_info, qgroupid);
-       if (!qgroup) {
-               ret = -ENOENT;
-               goto out;
-       }
        spin_lock(&fs_info->qgroup_lock);
        qgroup->lim_flags = limit->flags;
        qgroup->max_rfer = limit->max_rfer;