Commit 2c0c9da0 authored by Ilya Dryomov's avatar Ilya Dryomov

Btrfs: fix "mutually exclusive op is running" error code

The error code that is returned in response to starting a mutually
exclusive operation when there is one already running got silently
changed from EINVAL to EINPROGRESS by 5ac00add.  Returning EINPROGRESS
to, say, add_dev, when rm_dev is running is misleading.  Furthermore,
the operation itself may want to use EINPROGRESS for other purposes.
Signed-off-by: default avatarIlya Dryomov <idryomov@gmail.com>
parent ed0fb78f
...@@ -1340,7 +1340,7 @@ static noinline int btrfs_ioctl_resize(struct file *file, ...@@ -1340,7 +1340,7 @@ static noinline int btrfs_ioctl_resize(struct file *file,
1)) { 1)) {
pr_info("btrfs: dev add/delete/balance/replace/resize operation in progress\n"); pr_info("btrfs: dev add/delete/balance/replace/resize operation in progress\n");
mnt_drop_write_file(file); mnt_drop_write_file(file);
return -EINPROGRESS; return -EINVAL;
} }
mutex_lock(&root->fs_info->volume_mutex); mutex_lock(&root->fs_info->volume_mutex);
...@@ -2192,7 +2192,7 @@ static int btrfs_ioctl_defrag(struct file *file, void __user *argp) ...@@ -2192,7 +2192,7 @@ static int btrfs_ioctl_defrag(struct file *file, void __user *argp)
if (atomic_xchg(&root->fs_info->mutually_exclusive_operation_running, if (atomic_xchg(&root->fs_info->mutually_exclusive_operation_running,
1)) { 1)) {
pr_info("btrfs: dev add/delete/balance/replace/resize operation in progress\n"); pr_info("btrfs: dev add/delete/balance/replace/resize operation in progress\n");
return -EINPROGRESS; return -EINVAL;
} }
ret = mnt_want_write_file(file); ret = mnt_want_write_file(file);
if (ret) { if (ret) {
...@@ -2266,7 +2266,7 @@ static long btrfs_ioctl_add_dev(struct btrfs_root *root, void __user *arg) ...@@ -2266,7 +2266,7 @@ static long btrfs_ioctl_add_dev(struct btrfs_root *root, void __user *arg)
if (atomic_xchg(&root->fs_info->mutually_exclusive_operation_running, if (atomic_xchg(&root->fs_info->mutually_exclusive_operation_running,
1)) { 1)) {
pr_info("btrfs: dev add/delete/balance/replace/resize operation in progress\n"); pr_info("btrfs: dev add/delete/balance/replace/resize operation in progress\n");
return -EINPROGRESS; return -EINVAL;
} }
mutex_lock(&root->fs_info->volume_mutex); mutex_lock(&root->fs_info->volume_mutex);
...@@ -2303,7 +2303,7 @@ static long btrfs_ioctl_rm_dev(struct file *file, void __user *arg) ...@@ -2303,7 +2303,7 @@ static long btrfs_ioctl_rm_dev(struct file *file, void __user *arg)
1)) { 1)) {
pr_info("btrfs: dev add/delete/balance/replace/resize operation in progress\n"); pr_info("btrfs: dev add/delete/balance/replace/resize operation in progress\n");
mnt_drop_write_file(file); mnt_drop_write_file(file);
return -EINPROGRESS; return -EINVAL;
} }
mutex_lock(&root->fs_info->volume_mutex); mutex_lock(&root->fs_info->volume_mutex);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment