On 02/06/2014 02:04 PM, Hannes Reinecke wrote: > EVPD page 0x83 is used to uniquely identify the device. > So instead of having each and every program issue a separate > SG_IO call to retrieve this information it does make far more > sense to display it in sysfs. > > Cc: Jeremy Linton <jlinton@xxxxxxxxxxxxx> > Cc: Doug Gilbert <dgilbert@xxxxxxxxxxxx> > Cc: Kai Makisara <kai.makisara@xxxxxxxxxxx> > Signed-off-by: Hannes Reinecke <hare@xxxxxxx> > --- > drivers/scsi/scsi_scan.c | 3 + > drivers/scsi/scsi_sysfs.c | 166 ++++++++++++++++++++++++++++++++++++++++++++- > include/scsi/scsi_device.h | 3 + > 3 files changed, 171 insertions(+), 1 deletion(-) > > diff --git a/drivers/scsi/scsi_scan.c b/drivers/scsi/scsi_scan.c > index 307a811..073fb84 100644 > --- a/drivers/scsi/scsi_scan.c > +++ b/drivers/scsi/scsi_scan.c > @@ -929,6 +929,9 @@ static int scsi_add_lun(struct scsi_device *sdev, unsigned char *inq_result, > if (*bflags & BLIST_SKIP_VPD_PAGES) > sdev->skip_vpd_pages = 1; > > + if (sdev->scsi_level >= SCSI_3) > + scsi_attach_vpd_ident(sdev); > + > transport_configure_device(&sdev->sdev_gendev); > > if (sdev->host->hostt->slave_configure) { > diff --git a/drivers/scsi/scsi_sysfs.c b/drivers/scsi/scsi_sysfs.c > index 9117d0b..ffe7cb5 100644 > --- a/drivers/scsi/scsi_sysfs.c > +++ b/drivers/scsi/scsi_sysfs.c > @@ -725,8 +725,170 @@ show_queue_type_field(struct device *dev, struct device_attribute *attr, > > static DEVICE_ATTR(queue_type, S_IRUGO, show_queue_type_field, NULL); > > +void scsi_attach_vpd_ident(struct scsi_device *sdev) > +{ > + int ret; > + int vpd_len = 255; > + unsigned char *buffer; > +retry: > + buffer = kmalloc(vpd_len, GFP_KERNEL); > + if (buffer) { > + ret = scsi_get_vpd_page(sdev, 0x83, buffer, vpd_len); > + if (ret == 0) { > + vpd_len = (buffer[2] << 8) + buffer[3]; > + if (vpd_len > 255) { > + kfree(buffer); > + goto retry; > + } > + sdev->vpd_ident_len = vpd_len; > + sdev->vpd_ident = buffer; > + } > + } > +} > + Bummer. A missing kfree() if scsi_get_vpd_page() returns an error. But this is just an RFC for now, so I'll be fixing it up once it looks as if it would be moving forward... Cheers, Hannes -- Dr. Hannes Reinecke zSeries & Storage hare@xxxxxxx +49 911 74053 688 SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg GF: J. Hawn, J. Guild, F. Imendörffer, HRB 16746 (AG Nürnberg) -- To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html