[dm-devel] scsi_id output & multipath

christophe.varoqui at free.fr christophe.varoqui at free.fr
Tue Jul 20 16:38:31 UTC 2004


Selon Patrick Mansfield <patmans at us.ibm.com>:

> Christophe -
>
> On Tue, Jul 20, 2004 at 02:48:10PM +0200, christophe.varoqui at free.fr wrote:
> > Hello,
> >
> > the multipath config tool names the devmaps after the uid fetch by scsi_id.
> > When such uid is a wwid, everything is well. But when this uid is a
> composite
> > aggregate of diverse info, like with JBODs or direct attached SCSI disks,
> the
> > spaces between uid components are problematic.
> >
> > devmap creation should be ok with these spaces, but common usage will be
> > compromised (ie mount "/dev/SSEAGATE ST336607LC     3JA7LHRB00007441H8FQ"
> /mnt)
> >
> > do you consider packing scsi_id output, or should I do this myself ?
>
> Don't pack it, as that could cause problems (unlikely but possible name
> collisions), just substitute underlines for spaces, either in your
> multipath program, or better send a patch for scsi_id.
>

is this ok with you ?

diff -urN scsi_id-0.5/scsi_id.c scsi_id-0.5-dense_id/scsi_id.c
--- scsi_id-0.5/scsi_id.c       2004-05-25 00:14:32.000000000 +0200
+++ scsi_id-0.5-dense_id/scsi_id.c      2004-07-20 18:35:49.000000000 +0200
@@ -573,6 +573,23 @@
 }

 /*
+ * format_serial: replace to whitespaces by underscores for calling
+ * programs that use the serial for device naming (multipath, Suse
+ * naming, etc...)
+ */
+static void format_serial(char *serial)
+{
+       char *p = serial;
+
+       while (*p != '\0') {
+               if (isspace(*p))
+                       *p = '_';
+               p++;
+       }
+       return;
+}
+
+/*
  * scsi_id: try to get an id, if one is found, printf it to stdout.
  * returns a value passed to exit() - 0 if printed an id, else 1. This
  * could be expanded, for example, if we want to report a failure like no
@@ -703,6 +720,7 @@
                retval = 0;
        }
        if (!retval) {
+               format_serial(serial);
                if (display_bus_id)
                        printf("%s: ", scsi_dev->name);
                printf("%s", serial);



> It is in my TODO, though I haven't worked on it at all. SUSE naming has a
> similiar problem.
>
> -- Patrick Mansfield
> --
> dm-devel mailing list
> dm-devel at redhat.com
> https://www.redhat.com/mailman/listinfo/dm-devel
>


--



More information about the dm-devel mailing list