Author: mav
Date: Sat Sep 14 09:49:18 2013
New Revision: 255556
URL: http://svnweb.freebsd.org/changeset/base/255556

Log:
  MFC r254766:
  Add new attribute lunname to report only textual LUN-specific device IDs.
  While lunid attribute prefers to report numeric ones, having both may be
  useful in some situations.

Modified:
  stable/9/sys/cam/cam_xpt.c
  stable/9/sys/geom/geom_disk.c
Directory Properties:
  stable/9/sys/   (props changed)

Modified: stable/9/sys/cam/cam_xpt.c
==============================================================================
--- stable/9/sys/cam/cam_xpt.c  Sat Sep 14 09:42:01 2013        (r255555)
+++ stable/9/sys/cam/cam_xpt.c  Sat Sep 14 09:49:18 2013        (r255556)
@@ -1157,7 +1157,8 @@ xpt_getattr(char *buf, size_t len, const
                cdai.buftype = CDAI_TYPE_SERIAL_NUM;
        else if (!strcmp(attr, "GEOM::physpath"))
                cdai.buftype = CDAI_TYPE_PHYS_PATH;
-       else if (!strcmp(attr, "GEOM::lunid")) {
+       else if (strcmp(attr, "GEOM::lunid") == 0 ||
+                strcmp(attr, "GEOM::lunname") == 0) {
                cdai.buftype = CDAI_TYPE_SCSI_DEVID;
                cdai.bufsiz = CAM_SCSI_DEVID_MAXLEN;
        } else
@@ -1174,11 +1175,14 @@ xpt_getattr(char *buf, size_t len, const
        if (cdai.provsiz == 0)
                goto out;
        if (cdai.buftype == CDAI_TYPE_SCSI_DEVID) {
-               idd = scsi_get_devid((struct scsi_vpd_device_id *)cdai.buf,
-                   cdai.provsiz, scsi_devid_is_lun_naa);
-               if (idd == NULL)
+               if (strcmp(attr, "GEOM::lunid") == 0) {
                        idd = scsi_get_devid((struct scsi_vpd_device_id 
*)cdai.buf,
-                           cdai.provsiz, scsi_devid_is_lun_eui64);
+                           cdai.provsiz, scsi_devid_is_lun_naa);
+                       if (idd == NULL)
+                               idd = scsi_get_devid((struct scsi_vpd_device_id 
*)cdai.buf,
+                                   cdai.provsiz, scsi_devid_is_lun_eui64);
+               } else
+                       idd = NULL;
                if (idd == NULL)
                        idd = scsi_get_devid((struct scsi_vpd_device_id 
*)cdai.buf,
                            cdai.provsiz, scsi_devid_is_lun_t10);

Modified: stable/9/sys/geom/geom_disk.c
==============================================================================
--- stable/9/sys/geom/geom_disk.c       Sat Sep 14 09:42:01 2013        
(r255555)
+++ stable/9/sys/geom/geom_disk.c       Sat Sep 14 09:49:18 2013        
(r255556)
@@ -466,6 +466,12 @@ g_disk_dumpconf(struct sbuf *sb, const c
                        if (dp->d_getattr(bp) == 0)
                                sbuf_printf(sb, "%s<lunid>%s</lunid>\n",
                                    indent, buf);
+                       bp->bio_attribute = "GEOM::lunname";
+                       bp->bio_length = DISK_IDENT_SIZE;
+                       bp->bio_data = buf;
+                       if (dp->d_getattr(bp) == 0)
+                               sbuf_printf(sb, "%s<lunname>%s</lunname>\n",
+                                   indent, buf);
                        g_destroy_bio(bp);
                        g_free(buf);
                } else
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-stable-9
To unsubscribe, send any mail to "[email protected]"

Reply via email to