multipath: fix cciss device names
authorBenjamin Marzinski <bmarzins@redhat.com>
Fri, 27 Jul 2012 20:57:18 +0000 (15:57 -0500)
committerChristophe Varoqui <christophe.varoqui@opensvc.com>
Fri, 17 Aug 2012 19:56:51 +0000 (21:56 +0200)
When we're looking for cciss devices in sysfs, they have a "!" not a "/".
If users run multipath on a cciss device using it's devnode name,
/dev/cciss/cXdY, multipath should convert that to the sysfs name.

Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
multipath/main.c

index 9ea2ae3..628da6b 100644 (file)
@@ -393,6 +393,16 @@ get_dev_type(char *dev) {
                return DEV_DEVMAP;
 }
 
+static void
+convert_dev(char *dev)
+{
+       char *ptr = strstr(dev, "cciss/");
+       if (ptr) {
+               ptr += 5;
+               *ptr = '!';
+       }
+}
+
 int
 main (int argc, char *argv[])
 {
@@ -494,6 +504,8 @@ main (int argc, char *argv[])
 
                strncpy(conf->dev, argv[optind], FILE_NAME_SIZE);
                conf->dev_type = get_dev_type(conf->dev);
+               if (conf->dev_type == DEV_DEVNODE)
+                       convert_dev(conf->dev);
        }
        conf->daemon = 0;