Btrfs: use tree_root to avoid edquot when disabling quota
authorWang Shilong <wangsl-fnst@cn.fujitsu.com>
Mon, 8 Apr 2013 10:56:22 +0000 (10:56 +0000)
committerJosef Bacik <jbacik@fusionio.com>
Mon, 6 May 2013 19:54:41 +0000 (15:54 -0400)
Steps to reproduce:
mkfs.btrfs <disk>
mount <disk> <mnt>
btrfs quota enable <mnt>
btrfs sub create <mnt>/subv
btrfs qgroup limit 10K <mnt>/subv
btrfs quota disable <mnt>/subv

It is wrong for qgroup to reserve when disabling quota,
so just use tree_root to avoid edquot when disabling quota.

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

index 4fc9751d2e0cfa754c413b0a0b957561eda1a38d..ace88c1df5405927ffc0840fa94d412ed8591754 100644 (file)
@@ -3699,7 +3699,7 @@ static long btrfs_ioctl_quota_ctl(struct file *file, void __user *arg)
 
        down_write(&root->fs_info->subvol_sem);
        if (sa->cmd != BTRFS_QUOTA_CTL_RESCAN) {
-               trans = btrfs_start_transaction(root, 2);
+               trans = btrfs_start_transaction(root->fs_info->tree_root, 2);
                if (IS_ERR(trans)) {
                        ret = PTR_ERR(trans);
                        goto out;
@@ -3725,7 +3725,7 @@ static long btrfs_ioctl_quota_ctl(struct file *file, void __user *arg)
                ret = -EFAULT;
 
        if (trans) {
-               err = btrfs_commit_transaction(trans, root);
+               err = btrfs_commit_transaction(trans, root->fs_info->tree_root);
                if (err && !ret)
                        ret = err;
        }