]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
btrfs: enhance btrfs_find_device_by_user_input() to check device path
authorAnand Jain <anand.jain@oracle.com>
Sat, 13 Feb 2016 02:01:37 +0000 (10:01 +0800)
committerDavid Sterba <dsterba@suse.com>
Mon, 15 Feb 2016 16:57:35 +0000 (17:57 +0100)
The operation of device replace and device delete follows same steps upto
some depth with in btrfs kernel, however they don't share codes. This
enhancement will help replace and delete to share codes.

Signed-off-by: Anand Jain <anand.jain@oracle.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/dev-replace.c
fs/btrfs/volumes.c

index 12d941d9b0e8ee0b7b9d18a03ed9ff4dbdd7e7d1..3e2616d151d9203a29407e91dac979bb364e7211 100644 (file)
@@ -320,10 +320,6 @@ int btrfs_dev_replace_start(struct btrfs_root *root,
                return -EINVAL;
        }
 
-       if ((args->start.srcdevid == 0 && args->start.srcdev_name[0] == '\0') ||
-           args->start.tgtdev_name[0] == '\0')
-               return -EINVAL;
-
        /* the disk copy procedure reuses the scrub code */
        mutex_lock(&fs_info->volume_mutex);
        ret = btrfs_find_device_by_user_input(root, args->start.srcdevid,
index 6d8b78ffb0a08549baa64ed06b579b020a495abf..fede69134368721fc6aaf7d40fb8f5be66de591b 100644 (file)
@@ -2112,6 +2112,9 @@ int btrfs_find_device_by_user_input(struct btrfs_root *root, u64 srcdevid,
                if (!*device)
                        ret = -ENOENT;
        } else {
+               if (!srcdev_name || !srcdev_name[0])
+                       return -EINVAL;
+
                ret = btrfs_find_device_missing_or_by_path(root, srcdev_name,
                                                           device);
        }