Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 92f183aa authored by Wang Shilong's avatar Wang Shilong Committed by Josef Bacik
Browse files

Btrfs: use tree_root to avoid edquot when disabling quota



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: default avatarWang Shilong <wangsl-fnst@cn.fujitsu.com>
Signed-off-by: default avatarJosef Bacik <jbacik@fusionio.com>
parent ddb47afa
Loading
Loading
Loading
Loading
+2 −2
Original line number Original line Diff line number Diff line
@@ -3699,7 +3699,7 @@ static long btrfs_ioctl_quota_ctl(struct file *file, void __user *arg)


	down_write(&root->fs_info->subvol_sem);
	down_write(&root->fs_info->subvol_sem);
	if (sa->cmd != BTRFS_QUOTA_CTL_RESCAN) {
	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)) {
		if (IS_ERR(trans)) {
			ret = PTR_ERR(trans);
			ret = PTR_ERR(trans);
			goto out;
			goto out;
@@ -3725,7 +3725,7 @@ static long btrfs_ioctl_quota_ctl(struct file *file, void __user *arg)
		ret = -EFAULT;
		ret = -EFAULT;


	if (trans) {
	if (trans) {
		err = btrfs_commit_transaction(trans, root);
		err = btrfs_commit_transaction(trans, root->fs_info->tree_root);
		if (err && !ret)
		if (err && !ret)
			ret = err;
			ret = err;
	}
	}