Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=24f02e1d819ad91de46ad3a636cd3f2bf11c720f
Commit:     24f02e1d819ad91de46ad3a636cd3f2bf11c720f
Parent:     b27e66df78a9d8d43c05a6a5777ef45f2e238951
Author:     Salyzyn, Mark <[EMAIL PROTECTED]>
AuthorDate: Tue Jun 19 16:29:24 2007 -0400
Committer:  James Bottomley <[EMAIL PROTECTED]>
CommitDate: Tue Jun 19 21:59:09 2007 -0700

    [SCSI] aacraid: add support for long serial number information
    
    Support displaying long serial number information. Reuse sysfs handler
    internally as helper.
    
    Signed-off-by: Mark Salyzyn <[EMAIL PROTECTED]>
    Signed-off-by: James Bottomley <[EMAIL PROTECTED]>
---
 drivers/scsi/aacraid/aachba.c  |   10 ++++++----
 drivers/scsi/aacraid/aacraid.h |    4 ++++
 drivers/scsi/aacraid/linit.c   |   12 +++++++++---
 3 files changed, 19 insertions(+), 7 deletions(-)

diff --git a/drivers/scsi/aacraid/aachba.c b/drivers/scsi/aacraid/aachba.c
index 6345dbe..0b6fd0b 100644
--- a/drivers/scsi/aacraid/aachba.c
+++ b/drivers/scsi/aacraid/aachba.c
@@ -1179,6 +1179,7 @@ int aac_get_adapter_info(struct aac_dev* dev)
        }
 
        if (!dev->in_reset) {
+               char buffer[16];
                tmp = le32_to_cpu(dev->adapter_info.kernelrev);
                printk(KERN_INFO "%s%d: kernel %d.%d-%d[%d] %.*s\n",
                        dev->name, 
@@ -1199,10 +1200,11 @@ int aac_get_adapter_info(struct aac_dev* dev)
                        dev->name, dev->id,
                        tmp>>24,(tmp>>16)&0xff,tmp&0xff,
                        le32_to_cpu(dev->adapter_info.biosbuild));
-               if (le32_to_cpu(dev->adapter_info.serial[0]) != 0xBAD0)
-                       printk(KERN_INFO "%s%d: serial %x\n",
-                               dev->name, dev->id,
-                               le32_to_cpu(dev->adapter_info.serial[0]));
+               buffer[0] = '\0';
+               if (aac_show_serial_number(
+                 shost_to_class(dev->scsi_host_ptr), buffer))
+                       printk(KERN_INFO "%s%d: serial %s",
+                         dev->name, dev->id, buffer);
                if (dev->supplement_adapter_info.VpdInfo.Tsid[0]) {
                        printk(KERN_INFO "%s%d: TSID %.*s\n",
                          dev->name, dev->id,
diff --git a/drivers/scsi/aacraid/aacraid.h b/drivers/scsi/aacraid/aacraid.h
index 8abe4f9..f1d3b66 100644
--- a/drivers/scsi/aacraid/aacraid.h
+++ b/drivers/scsi/aacraid/aacraid.h
@@ -1822,6 +1822,10 @@ int aac_get_config_status(struct aac_dev *dev, int 
commit_flag);
 int aac_get_containers(struct aac_dev *dev);
 int aac_scsi_cmd(struct scsi_cmnd *cmd);
 int aac_dev_ioctl(struct aac_dev *dev, int cmd, void __user *arg);
+#ifndef shost_to_class
+#define shost_to_class(shost) &shost->shost_classdev
+#endif
+ssize_t aac_show_serial_number(struct class_device *class_dev, char *buf);
 int aac_do_ioctl(struct aac_dev * dev, int cmd, void __user *arg);
 int aac_rx_init(struct aac_dev *dev);
 int aac_rkt_init(struct aac_dev *dev);
diff --git a/drivers/scsi/aacraid/linit.c b/drivers/scsi/aacraid/linit.c
index 3870bd6..4fda01e 100644
--- a/drivers/scsi/aacraid/linit.c
+++ b/drivers/scsi/aacraid/linit.c
@@ -770,15 +770,21 @@ static ssize_t aac_show_bios_version(struct class_device 
*class_dev,
        return len;
 }
 
-static ssize_t aac_show_serial_number(struct class_device *class_dev,
-               char *buf)
+ssize_t aac_show_serial_number(struct class_device *class_dev, char *buf)
 {
        struct aac_dev *dev = (struct 
aac_dev*)class_to_shost(class_dev)->hostdata;
        int len = 0;
 
        if (le32_to_cpu(dev->adapter_info.serial[0]) != 0xBAD0)
-               len = snprintf(buf, PAGE_SIZE, "%x\n",
+               len = snprintf(buf, PAGE_SIZE, "%06X\n",
                  le32_to_cpu(dev->adapter_info.serial[0]));
+       if (len &&
+         !memcmp(&dev->supplement_adapter_info.MfgPcbaSerialNo[
+           sizeof(dev->supplement_adapter_info.MfgPcbaSerialNo)+2-len],
+         buf, len))
+               len = snprintf(buf, PAGE_SIZE, "%.*s\n",
+                 (int)sizeof(dev->supplement_adapter_info.MfgPcbaSerialNo),
+                 dev->supplement_adapter_info.MfgPcbaSerialNo);
        return len;
 }
 
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to