From 7ca112786e6174c89cbea78ec9615643f784ca0e Mon Sep 17 00:00:00 2001 From: Alexander Eremin Date: Thu, 27 Jan 2011 18:50:51 +0000 Subject: [PATCH] 429 "iostat -E" does not report serial number... Reviewed by: garrett@nexenta.com Reviewed by: gwr@nexenta.com Approved by: trisk@nexenta.com --- usr/src/uts/common/io/scsi/targets/sd.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/usr/src/uts/common/io/scsi/targets/sd.c b/usr/src/uts/common/io/scsi/targets/sd.c index bb6e488f20..3eaa68f1f3 100644 --- a/usr/src/uts/common/io/scsi/targets/sd.c +++ b/usr/src/uts/common/io/scsi/targets/sd.c @@ -22,6 +22,9 @@ /* * Copyright (c) 1990, 2010, Oracle and/or its affiliates. All rights reserved. */ +/* + * Copyright 2011 Nexenta Systems, Inc. All rights reserved. + */ /* * SCSI disk target driver. @@ -9105,6 +9108,7 @@ static void sd_set_errstats(struct sd_lun *un) { struct sd_errstats *stp; + char *sn; ASSERT(un != NULL); ASSERT(un->un_errstats != NULL); @@ -9143,6 +9147,17 @@ sd_set_errstats(struct sd_lun *un) if (bcmp(&SD_INQUIRY(un)->inq_pid[9], "SUN", 3) == 0) { bcopy(&SD_INQUIRY(un)->inq_serial, stp->sd_serial.value.c, sizeof (SD_INQUIRY(un)->inq_serial)); + } else { + /* + * Set the "Serial No" kstat for non-Sun qualified drives + */ + if (ddi_prop_lookup_string(DDI_DEV_T_ANY, SD_DEVINFO(un), + DDI_PROP_NOTPROM | DDI_PROP_DONTPASS, + INQUIRY_SERIAL_NO, &sn) == DDI_SUCCESS) { + (void) strlcpy(stp->sd_serial.value.c, sn, + sizeof (stp->sd_serial.value.c)); + ddi_prop_free(sn); + } } if (un->un_f_blockcount_is_valid != TRUE) { -- 2.11.4.GIT