]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
btrfs: qgroup: return ENOTCONN instead of EINVAL when quotas are not enabled
authorMarcos Paulo de Souza <mpdesouza@suse.com>
Tue, 26 Nov 2019 00:58:51 +0000 (21:58 -0300)
committerDavid Sterba <dsterba@suse.com>
Mon, 20 Jan 2020 15:40:50 +0000 (16:40 +0100)
[PROBLEM]
qgroup create/remove code is currently returning EINVAL when the user
tries to create a qgroup on a subvolume without quota enabled. EINVAL is
already being used for too many error scenarios so that is hard to
depict what is the problem.

[FIX]
Currently scrub and balance code return -ENOTCONN when the user tries to
cancel/pause and no scrub or balance is currently running for the
desired subvolume. Do the same here by returning -ENOTCONN  when a user
tries to create/delete/assing/list a qgroup on a subvolume without quota
enabled.

Reviewed-by: Qu Wenruo <wqu@suse.com>
Signed-off-by: Marcos Paulo de Souza <mpdesouza@suse.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/qgroup.c

index 0581ea6c4ae326d9856e7d496fcb6d14ede54b1d..98d9a50352d6d2bf6314cf4dc6720303e53e496e 100644 (file)
@@ -1259,7 +1259,7 @@ int btrfs_add_qgroup_relation(struct btrfs_trans_handle *trans, u64 src,
 
        mutex_lock(&fs_info->qgroup_ioctl_lock);
        if (!fs_info->quota_root) {
-               ret = -EINVAL;
+               ret = -ENOTCONN;
                goto out;
        }
        member = find_qgroup_rb(fs_info, src);
@@ -1318,7 +1318,7 @@ static int __del_qgroup_relation(struct btrfs_trans_handle *trans, u64 src,
                return -ENOMEM;
 
        if (!fs_info->quota_root) {
-               ret = -EINVAL;
+               ret = -ENOTCONN;
                goto out;
        }
 
@@ -1384,7 +1384,7 @@ int btrfs_create_qgroup(struct btrfs_trans_handle *trans, u64 qgroupid)
 
        mutex_lock(&fs_info->qgroup_ioctl_lock);
        if (!fs_info->quota_root) {
-               ret = -EINVAL;
+               ret = -ENOTCONN;
                goto out;
        }
        quota_root = fs_info->quota_root;
@@ -1418,7 +1418,7 @@ int btrfs_remove_qgroup(struct btrfs_trans_handle *trans, u64 qgroupid)
 
        mutex_lock(&fs_info->qgroup_ioctl_lock);
        if (!fs_info->quota_root) {
-               ret = -EINVAL;
+               ret = -ENOTCONN;
                goto out;
        }
 
@@ -1469,7 +1469,7 @@ int btrfs_limit_qgroup(struct btrfs_trans_handle *trans, u64 qgroupid,
 
        mutex_lock(&fs_info->qgroup_ioctl_lock);
        if (!fs_info->quota_root) {
-               ret = -EINVAL;
+               ret = -ENOTCONN;
                goto out;
        }