Improve inquiry printing, take 3
Subsystems (4)
PATCH 1/1 Improve inquiry printing, take 3
- Replace scsi_device_types array API with scsi_device_type function API. Gets rid of a lot of common code, as well as being easier to use.
- Add the new device types in SPC4 r05a, and rename some of the older ones.
- Reformat the printing of inquiry data; now fits on one line and includes PQ.
I think I've addressed all the feedback from the previous versions. My current test box prints:
scsi 2:0:1:0: Direct access HP 18.2G ATLAS10K3_18_SCA HP05 PQ: 0 ANSI: 2
Index: ./drivers/block/cciss_scsi.c
===================================================================
RCS file: /var/cvs/linux-2.6/drivers/block/cciss_scsi.c,v retrieving revision 1.16
drivers/block/cciss_scsi.c +5 -9
@@ -251,10 +251,6 @@ scsi_cmd_stack_free(int ctlr) stk->pool =NULL ; } -/* scsi_device_types comes from scsi.h */ -#define DEVICETYPE (n) (n<0 || n>MAX_SCSI_DEVICE_CODE) ? \ - "Unknown" : scsi_device_types[n] -#if 0 static int xmargin=8 ;static int amargin=60 ;
@@ -389,7 +385,7 @@ cciss_scsi_add_entry(int ctlr, int hostntime anyway (the scsi layer's inquiries will show that info) */ if (hostno !=-1 )printk ("cciss%d: %s device c%db%dt%dl%d added.\n" , - ctlr,DEVICETYPE (sd->devtype), hostno, + ctlr,scsi_device_type (sd->devtype), hostno, sd->bus, sd->target, sd->lun);return 0 ; }
@@ -407,7 +403,7 @@ cciss_scsi_remove_entry(int ctlr, int ho ccissscsi[ctlr].dev[i] = ccissscsi[ctlr].dev[i+1 ]; ccissscsi[ctlr].ndevices--;printk ("cciss%d: %s device c%db%dt%dl%d removed.\n" , - ctlr,DEVICETYPE (sd.devtype), hostno, + ctlr,scsi_device_type (sd.devtype), hostno, sd.bus, sd.target, sd.lun); }
@@ -458,7 +454,7 @@ adjust_cciss_scsi_table(int ctlr, int hoif (found ==0 ) {/* device no longer present. */ changes++;/* printk("cciss%d: %s device c%db%dt%dl%d removed.\n", -ctlr, DEVICETYPE(csd->devtype), hostno, +ctlr, scsi_device_type(csd->devtype), hostno, csd->bus, csd->target, csd->lun); */ cciss_scsi_remove_entry (ctlr, hostno, i);/* note, i not incremented */
@@ -468,7 +464,7 @@ adjust_cciss_scsi_table(int ctlr, int hoprintk ("cciss%d: device c%db%dt%dl%d type changed " "(device type now %s).\n" , ctlr, hostno, csd->bus, csd->target, csd->lun, -DEVICETYPE (csd->devtype)); +scsi_device_type (csd->devtype)); csd->devtype = sd[j].devtype; i++;/* so just move along. */ }else /* device is same as it ever was, */
@@ -1098,7 +1094,7 @@ cciss_update_non_disk_devices(int cntl_nif (ncurrent >=CCISS_MAX_SCSI_DEVS_PER_HBA ) {printk (KERN_INFO "cciss%d: %s ignored, " "too many devices.\n" , cntl_num, -DEVICETYPE (devtype)); +scsi_device_type (devtype));break ; } memcpy(¤tsd[ncurrent].scsi3addr[0],
Index: ./drivers/scsi/fcal.c
===================================================================
RCS file: /var/cvs/linux-2.6/drivers/scsi/fcal.c,v retrieving revision 1.8
drivers/scsi/fcal.c +1 -2
@@ -249,8 +249,7 @@ int fcal_proc_info (struct Scsi_Host *hoif (scd->id == target) {SPRINTF (" [AL-PA: %02x, Id: %02d, Port WWN: %08x%08x, Node WWN: %08x%08x] " , alpa, target, u1[0 ], u1[1 ], u2[0 ], u2[1 ]); -SPRINTF ("%s " , (scd->type <MAX_SCSI_DEVICE_CODE ) ? - scsi_device_types[(short ) scd->type] :"Unknown device" ); +SPRINTF ("%s " ,scsi_device_type (scd->type));for (j =0 ; (j <8 ) && (scd->vendor[j] >=0x20 ); j++)SPRINTF ("%c" , scd->vendor[j]);
Index: ./drivers/scsi/g_NCR5380.c
===================================================================
RCS file: /var/cvs/linux-2.6/drivers/scsi/g_NCR5380.c,v retrieving revision 1.14
drivers/scsi/g_NCR5380.c +1 -2
@@ -813,7 +813,6 @@ static int generic_NCR5380_proc_info(strstruct NCR5380_hostdata *hostdata;#ifdef NCR5380_STATS struct scsi_device *dev; -extern const char *const scsi_device_types[MAX_SCSI_DEVICE_CODE ];#endif NCR5380_setup (scsi_ptr);
@@ -853,7 +852,7 @@ static int generic_NCR5380_proc_info(strlong tr = hostdata->time_read[dev->id] /HZ ;long tw = hostdata->time_write[dev->id] /HZ ; - PRINTP(" T:%d %s " ANDP dev->id ANDP(dev->type < MAX_SCSI_DEVICE_CODE) ? scsi_device_types[(int) dev->type] : "Unknown"); + PRINTP(" T:%d %s " ANDP dev->id ANDP scsi_device_type(dev->type));for (i =0 ; i <8 ; i++)if (dev->vendor[i] >=0x20 ) *(buffer + (len++)) = dev->vendor[i];
Index: ./drivers/scsi/megaraid.c
===================================================================
RCS file: /var/cvs/linux-2.6/drivers/scsi/megaraid.c,v retrieving revision 1.26
drivers/scsi/megaraid.c +1 -3
@@ -2822,9 +2822,7 @@ mega_print_inquiry(char *page, char *scs i = scsi_inq[0 ] &0x1f ; - len +=sprintf (page+len," Type: %s " , - i <MAX_SCSI_DEVICE_CODE ? scsi_device_types[i] : -"Unknown " ); + len +=sprintf (page+len," Type: %s " ,scsi_device_type (i)); len +=sprintf (page+len," ANSI SCSI revision: %02x" , scsi_inq[2 ] &0x07 );
Index: ./drivers/scsi/scsi.c
===================================================================
RCS file: /var/cvs/linux-2.6/drivers/scsi/scsi.c,v retrieving revision 1.34
drivers/scsi/scsi.c +26 -10
@@ -97,24 +97,40 @@ unsigned int scsi_logging_level;EXPORT_SYMBOL (scsi_logging_level);#endif -const char *const scsi_device_types[MAX_SCSI_DEVICE_CODE ] = { -"Direct-Access " , -"Sequential-Access" , +static const char *const scsi_device_types[] = { +"Direct access " , +"Sequential access" ,"Printer " ,"Processor " ,"WORM " , -"CD-ROM " , +"CD/DVD " ,"Scanner " , -"Optical Device " , -"Medium Changer " , +"Optical memory " , +"Media changer " ,"Communications " , -"Unknown " , -"Unknown " , +"ASC IT8 " , +"ASC IT8 " ,"RAID " ,"Enclosure " , -"Direct-Access-RBC" , +"Direct access RBC" , +"Optical card " , +"Bridge controller" , +"Object storage " , +"Automation/Drive " , }; -EXPORT_SYMBOL (scsi_device_types); + +const char *scsi_device_type (unsigned type) +{ +if (type ==0x1e ) +return "Well-known LUN " ; +if (type ==0x1f ) +return "No Device " ; +if (type >ARRAY_SIZE (scsi_device_types)) +return "Unknown " ; +return scsi_device_types[type]; +} + +EXPORT_SYMBOL (scsi_device_type);/* * Function: scsi_allocate_request
Index: ./drivers/scsi/scsi_proc.c
===================================================================
RCS file: /var/cvs/linux-2.6/drivers/scsi/scsi_proc.c,v retrieving revision 1.9
drivers/scsi/scsi_proc.c +1 -3
@@ -178,9 +178,7 @@ static int proc_print_scsidevice(structseq_printf (s,"\n" ); -seq_printf (s," Type: %s " , - sdev->type <MAX_SCSI_DEVICE_CODE ? - scsi_device_types[(int ) sdev->type] :"Unknown " ); +seq_printf (s," Type: %s " ,scsi_device_type (sdev->type));seq_printf (s," ANSI" " SCSI revision: %02x" , (sdev->scsi_level -1 ) ? sdev->scsi_level -1 :1 );
Index: ./drivers/scsi/scsi_scan.c
===================================================================
RCS file: /var/cvs/linux-2.6/drivers/scsi/scsi_scan.c,v retrieving revision 1.41
drivers/scsi/scsi_scan.c +8 -58
90 lines not on this page · raw message
Index: ./include/scsi/scsi.h
===================================================================
RCS file: /var/cvs/linux-2.6/include/scsi/scsi.h,v retrieving revision 1.19
include/scsi/scsi.h +3 -7
@@ -25,13 +25,6 @@ extern const unsigned char scsi_command_#define COMMAND_SIZE (opcode) scsi_command_size[((opcode) >> 5) & 7]/* -* SCSI device types -*/ - -#define MAX_SCSI_DEVICE_CODE 15 -extern const char *const scsi_device_types[MAX_SCSI_DEVICE_CODE ]; - -/* * Special value for scanning to specify scanning or rescanning of all * possible channels, (target) ids, or luns on a given shost. */
@@ -224,6 +217,9 @@ static inline int scsi_status_is_good(in#define TYPE_ENCLOSURE 0x0d/* Enclosure Services Device */ #define TYPE_RBC 0x0e#define TYPE_NO_LUN 0x7f + +/* Returns a human-readable name for the device */ +extern const char *scsi_device_type (unsigned type);/* * standard mode-select header prepended to all mode-select commands
Ping
Quoted 349 lines · Matthew Wilcox
- Replace
scsi_device_typesarray API withscsi_device_typefunction API. Gets rid of a lot of common code, as well as being easier to use.
- Add the new device types in SPC4 r05a, and rename some of the older ones.
- Reformat the printing of inquiry data; now fits on one line and includes PQ.I think I've addressed all the feedback from the previous versions. My current test box prints:
scsi 2:0:1:0: Direct access HP 18.2G
ATLAS10K3_18_SCAHP05 PQ: 0 ANSI: 2Signed-off-by Matthew Wilcox <[email protected]>Index:
./drivers/block/cciss_scsi.c
===================================================================
RCS file:/var/cvs/linux-2.6/drivers/block/cciss_scsi.c,vretrieving revision 1.16
diff -u -p -r1.16cciss_scsi.cdrivers/block/cciss_scsi.c +5
-9@@ -251,10 +251,6 @@ scsi_cmd_stack_free(int ctlr) stk->pool =NULL ; } -/* scsi_device_types comes from scsi.h */ -#define DEVICETYPE (n) (n<0 || n>MAX_SCSI_DEVICE_CODE) ? \ - "Unknown" : scsi_device_types[n] -#if 0 static int xmargin=8 ;static int amargin=60 ;@@ -389,7 +385,7 @@ cciss_scsi_add_entry(int ctlr, int hostntime anyway (the scsi layer's inquiries will show that info) */ if (hostno !=-1 )printk ("cciss%d: %s device c%db%dt%dl%d added.\n" , - ctlr,DEVICETYPE (sd->devtype), hostno, + ctlr,scsi_device_type (sd->devtype), hostno, sd->bus, sd->target, sd->lun);return 0 ; }@@ -407,7 +403,7 @@ cciss_scsi_remove_entry(int ctlr, int ho ccissscsi[ctlr].dev[i] = ccissscsi[ctlr].dev[i+1 ]; ccissscsi[ctlr].ndevices--;printk ("cciss%d: %s device c%db%dt%dl%d removed.\n" , - ctlr,DEVICETYPE (sd.devtype), hostno, + ctlr,scsi_device_type (sd.devtype), hostno, sd.bus, sd.target, sd.lun); }@@ -458,7 +454,7 @@ adjust_cciss_scsi_table(int ctlr, int hoif (found ==0 ) {/* device no longer present. */ changes++;/* printk("cciss%d: %s device c%db%dt%dl%d removed.\n", -ctlr, DEVICETYPE(csd->devtype), hostno, +ctlr, scsi_device_type(csd->devtype), hostno, csd->bus, csd->target, csd->lun); */ cciss_scsi_remove_entry (ctlr, hostno, i);/* note, i not incremented */ @@ -468,7 +464,7 @@ adjust_cciss_scsi_table(int ctlr, int hoprintk ("cciss%d: device c%db%dt%dl%d type changed " "(device type now %s).\n" , ctlr, hostno, csd->bus, csd->target, csd->lun, -DEVICETYPE (csd->devtype)); +scsi_device_type (csd->devtype)); csd->devtype = sd[j].devtype; i++;/* so just move along. */ }else /* device is same as it ever was, */ @@ -1098,7 +1094,7 @@ cciss_update_non_disk_devices(int cntl_nif (ncurrent >=CCISS_MAX_SCSI_DEVS_PER_HBA ) {printk (KERN_INFO "cciss%d: %s ignored, " "too many devices.\n" , cntl_num, -DEVICETYPE (devtype)); +scsi_device_type (devtype));break ; } memcpy(¤tsd[ncurrent].scsi3addr[0],Index:
./drivers/scsi/fcal.c
===================================================================
RCS file:/var/cvs/linux-2.6/drivers/scsi/fcal.c,vretrieving revision 1.8
diff -u -p -r1.8fcal.cdrivers/scsi/fcal.c +1
-2@@ -249,8 +249,7 @@ int fcal_proc_info (struct Scsi_Host *hoif (scd->id == target) {SPRINTF (" [AL-PA: %02x, Id: %02d, Port WWN: %08x%08x, Node WWN: %08x%08x] " , alpa, target, u1[0 ], u1[1 ], u2[0 ], u2[1 ]); -SPRINTF ("%s " , (scd->type <MAX_SCSI_DEVICE_CODE ) ? - scsi_device_types[(short ) scd->type] :"Unknown device" ); +SPRINTF ("%s " ,scsi_device_type (scd->type));for (j =0 ; (j <8 ) && (scd->vendor[j] >=0x20 ); j++)SPRINTF ("%c" , scd->vendor[j]);Index:
./drivers/scsi/g_NCR5380.c
===================================================================
RCS file:/var/cvs/linux-2.6/drivers/scsi/g_NCR5380.c,vretrieving revision 1.14
diff -u -p -r1.14g_NCR5380.cdrivers/scsi/g_NCR5380.c +1
-2@@ -813,7 +813,6 @@ static int generic_NCR5380_proc_info(strstruct NCR5380_hostdata *hostdata;#ifdef NCR5380_STATS struct scsi_device *dev; -extern const char *const scsi_device_types[MAX_SCSI_DEVICE_CODE ];#endif NCR5380_setup (scsi_ptr);@@ -853,7 +852,7 @@ static int generic_NCR5380_proc_info(strlong tr = hostdata->time_read[dev->id] /HZ ;long tw = hostdata->time_write[dev->id] /HZ ; - PRINTP(" T:%d %s " ANDP dev->id ANDP(dev->type < MAX_SCSI_DEVICE_CODE) ? scsi_device_types[(int) dev->type] : "Unknown"); + PRINTP(" T:%d %s " ANDP dev->id ANDP scsi_device_type(dev->type));for (i =0 ; i <8 ; i++)if (dev->vendor[i] >=0x20 ) *(buffer + (len++)) = dev->vendor[i];Index:
./drivers/scsi/megaraid.c
===================================================================
RCS file:/var/cvs/linux-2.6/drivers/scsi/megaraid.c,vretrieving revision 1.26
diff -u -p -r1.26megaraid.cdrivers/scsi/megaraid.c +1
-3@@ -2822,9 +2822,7 @@ mega_print_inquiry(char *page, char *scs i = scsi_inq[0 ] &0x1f ; - len +=sprintf (page+len," Type: %s " , - i <MAX_SCSI_DEVICE_CODE ? scsi_device_types[i] : -"Unknown " ); + len +=sprintf (page+len," Type: %s " ,scsi_device_type (i)); len +=sprintf (page+len," ANSI SCSI revision: %02x" , scsi_inq[2 ] &0x07 );Index:
./drivers/scsi/scsi.c
===================================================================
RCS file:/var/cvs/linux-2.6/drivers/scsi/scsi.c,vretrieving revision 1.34
diff -u -p -r1.34scsi.cdrivers/scsi/scsi.c +26
-10@@ -97,24 +97,40 @@ unsigned int scsi_logging_level;EXPORT_SYMBOL (scsi_logging_level);#endif -const char *const scsi_device_types[MAX_SCSI_DEVICE_CODE ] = { -"Direct-Access " , -"Sequential-Access" , +static const char *const scsi_device_types[] = { +"Direct access " , +"Sequential access" ,"Printer " ,"Processor " ,"WORM " , -"CD-ROM " , +"CD/DVD " ,"Scanner " , -"Optical Device " , -"Medium Changer " , +"Optical memory " , +"Media changer " ,"Communications " , -"Unknown " , -"Unknown " , +"ASC IT8 " , +"ASC IT8 " ,"RAID " ,"Enclosure " , -"Direct-Access-RBC" , +"Direct access RBC" , +"Optical card " , +"Bridge controller" , +"Object storage " , +"Automation/Drive " , }; -EXPORT_SYMBOL (scsi_device_types); + +const char *scsi_device_type (unsigned type) +{ +if (type ==0x1e ) +return "Well-known LUN " ; +if (type ==0x1f ) +return "No Device " ; +if (type >ARRAY_SIZE (scsi_device_types)) +return "Unknown " ; +return scsi_device_types[type]; +} + +EXPORT_SYMBOL (scsi_device_type);/* * Function: scsi_allocate_request Index:
./drivers/scsi/scsi_proc.c
===================================================================
RCS file:/var/cvs/linux-2.6/drivers/scsi/scsi_proc.c,vretrieving revision 1.9
diff -u -p -r1.9scsi_proc.cdrivers/scsi/scsi_proc.c +1
-3@@ -178,9 +178,7 @@ static int proc_print_scsidevice(structseq_printf (s,"\n" ); -seq_printf (s," Type: %s " , - sdev->type <MAX_SCSI_DEVICE_CODE ? - scsi_device_types[(int ) sdev->type] :"Unknown " ); +seq_printf (s," Type: %s " ,scsi_device_type (sdev->type));seq_printf (s," ANSI" " SCSI revision: %02x" , (sdev->scsi_level -1 ) ? sdev->scsi_level -1 :1 );Index:
./drivers/scsi/scsi_scan.c
===================================================================
RCS file:/var/cvs/linux-2.6/drivers/scsi/scsi_scan.c,vretrieving revision 1.41
diff -u -p -r1.41scsi_scan.cdrivers/scsi/scsi_scan.c +8
-58@@ -186,59 +186,6 @@ static void scsi_unlock_floptical(struct }/** -* print_inquiry - printk the inquiry information -* @inq_result: printk this SCSI INQUIRY -* -* Description: -* printk the vendor, model, and other information found in the -* INQUIRY data in @inq_result. -* -* Notes: -* Remove this, and replace with a hotplug event that logs any -* relevant information. -**/ -static void print_inquiry (unsigned char *inq_result) -{ -int i; - -printk (KERN_NOTICE " Vendor: " ); -for (i =8 ; i <16 ; i++) -if (inq_result[i] >=0x20 && i < inq_result[4 ] +5 ) -printk ("%c" , inq_result[i]); -else -printk (" " ); - -printk (" Model: " ); -for (i =16 ; i <32 ; i++) -if (inq_result[i] >=0x20 && i < inq_result[4 ] +5 ) -printk ("%c" , inq_result[i]); -else -printk (" " ); - -printk (" Rev: " ); -for (i =32 ; i <36 ; i++) -if (inq_result[i] >=0x20 && i < inq_result[4 ] +5 ) -printk ("%c" , inq_result[i]); -else -printk (" " ); - -printk ("\n" ); - - i = inq_result[0 ] &0x1f ; - -printk (KERN_NOTICE " Type: %s " , - i < -MAX_SCSI_DEVICE_CODE ? scsi_device_types[i] : -"Unknown " ); -printk (" ANSI SCSI revision: %02x" , - inq_result[2 ] &0x07 ); -if ((inq_result[2 ] &0x07 ) ==1 && (inq_result[3 ] &0x0f ) ==1 ) -printk (" CCS\n" ); -else -printk ("\n" ); -} - -/** * scsi_alloc_sdev - allocate and setup a scsi_Device * * Description: @@ -706,9 +653,8 @@ static int scsi_add_lun(struct scsi_deviif (*bflags &BLIST_ISROM ) {/* * It would be better to modify sdev->type, and set -* sdev->removable, but then the print_inquiry() output -* would not show TYPE_ROM; if print_inquiry() is removed -* the issue goes away. +* sdev->removable; this can now be done since +* print_inquiry has gone away. */ inq_result[0 ] =TYPE_ROM ; inq_result[1 ] |=0x80 ;/* removable */ @@ -737,8 +683,6 @@ static int scsi_add_lun(struct scsi_deviprintk (KERN_INFO "scsi: unknown device type %d\n" , sdev->type); } -print_inquiry (inq_result); -/* * For a peripheral qualifier (PQ) value of 1 (001b), the SCSI * spec says: The device server is capable of supporting the @@ -767,6 +711,12 @@ static int scsi_add_lun(struct scsi_devi sdev->wdtr =1 ;if (inq_result[7 ] &0x10 ) sdev->sdtr =1 ; + +sdev_printk (KERN_NOTICE "scsi" , sdev,"%s %.8s %.16s %.4s PQ: %d " +"ANSI: %d%s\n" ,scsi_device_type (sdev->type), + sdev->vendor, sdev->model, sdev->rev, + sdev->inq_periph_qual, inq_result[2 ] &0x07 , + (inq_result[3 ] &0x0f ) ==1 ?" CCS" :"" );/* * End sysfs code. Index:
./include/scsi/scsi.h
===================================================================
RCS file:/var/cvs/linux-2.6/include/scsi/scsi.h,vretrieving revision 1.19
diff -u -p -r1.19scsi.hinclude/scsi/scsi.h +3
-8@@ -25,13 +25,6 @@ extern const unsigned char scsi_command_#define COMMAND_SIZE (opcode) scsi_command_size[((opcode) >> 5) & 7]/* -* SCSI device types -*/ - -#define MAX_SCSI_DEVICE_CODE 15 -extern const char *const scsi_device_types[MAX_SCSI_DEVICE_CODE ]; - -/* * Special value for scanning to specify scanning or rescanning of all * possible channels, (target) ids, or luns on a given shost. */ @@ -224,6 +217,9 @@ static inline int scsi_status_is_good(in#define TYPE_ENCLOSURE 0x0d/* Enclosure Services Device */ #define TYPE_RBC 0x0e#define TYPE_NO_LUN 0x7f + +/* Returns a human-readable name for the device */ +extern const char *scsi_device_type (unsigned type);/* * standard mode-select header prepended to all mode-select commands -To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Reping
Quoted 357 lines · Matthew Wilcox
Ping
Quoted 346 lines · Matthew Wilcox
- Replace
scsi_device_typesarray API withscsi_device_typefunction API. Gets rid of a lot of common code, as well as being easier to use.
- Add the new device types in SPC4 r05a, and rename some of the older ones.
- Reformat the printing of inquiry data; now fits on one line and includes PQ.I think I've addressed all the feedback from the previous versions. My current test box prints:
scsi 2:0:1:0: Direct access HP 18.2G
ATLAS10K3_18_SCAHP05 PQ: 0 ANSI: 2Signed-off-by Matthew Wilcox <[email protected]>Index:
./drivers/block/cciss_scsi.c
===================================================================
RCS file:/var/cvs/linux-2.6/drivers/block/cciss_scsi.c,vretrieving revision 1.16
diff -u -p -r1.16cciss_scsi.cdrivers/block/cciss_scsi.c +5
-9@@ -251,10 +251,6 @@ scsi_cmd_stack_free(int ctlr) stk->pool =NULL ; } -/* scsi_device_types comes from scsi.h */ -#define DEVICETYPE (n) (n<0 || n>MAX_SCSI_DEVICE_CODE) ? \ - "Unknown" : scsi_device_types[n] -#if 0 static int xmargin=8 ;static int amargin=60 ;@@ -389,7 +385,7 @@ cciss_scsi_add_entry(int ctlr, int hostntime anyway (the scsi layer's inquiries will show that info) */ if (hostno !=-1 )printk ("cciss%d: %s device c%db%dt%dl%d added.\n" , - ctlr,DEVICETYPE (sd->devtype), hostno, + ctlr,scsi_device_type (sd->devtype), hostno, sd->bus, sd->target, sd->lun);return 0 ; }@@ -407,7 +403,7 @@ cciss_scsi_remove_entry(int ctlr, int ho ccissscsi[ctlr].dev[i] = ccissscsi[ctlr].dev[i+1 ]; ccissscsi[ctlr].ndevices--;printk ("cciss%d: %s device c%db%dt%dl%d removed.\n" , - ctlr,DEVICETYPE (sd.devtype), hostno, + ctlr,scsi_device_type (sd.devtype), hostno, sd.bus, sd.target, sd.lun); }@@ -458,7 +454,7 @@ adjust_cciss_scsi_table(int ctlr, int hoif (found ==0 ) {/* device no longer present. */ changes++;/* printk("cciss%d: %s device c%db%dt%dl%d removed.\n", -ctlr, DEVICETYPE(csd->devtype), hostno, +ctlr, scsi_device_type(csd->devtype), hostno, csd->bus, csd->target, csd->lun); */ cciss_scsi_remove_entry (ctlr, hostno, i);/* note, i not incremented */ @@ -468,7 +464,7 @@ adjust_cciss_scsi_table(int ctlr, int hoprintk ("cciss%d: device c%db%dt%dl%d type changed " "(device type now %s).\n" , ctlr, hostno, csd->bus, csd->target, csd->lun, -DEVICETYPE (csd->devtype)); +scsi_device_type (csd->devtype)); csd->devtype = sd[j].devtype; i++;/* so just move along. */ }else /* device is same as it ever was, */ @@ -1098,7 +1094,7 @@ cciss_update_non_disk_devices(int cntl_nif (ncurrent >=CCISS_MAX_SCSI_DEVS_PER_HBA ) {printk (KERN_INFO "cciss%d: %s ignored, " "too many devices.\n" , cntl_num, -DEVICETYPE (devtype)); +scsi_device_type (devtype));break ; } memcpy(¤tsd[ncurrent].scsi3addr[0],Index:
./drivers/scsi/fcal.c
===================================================================
RCS file:/var/cvs/linux-2.6/drivers/scsi/fcal.c,vretrieving revision 1.8
diff -u -p -r1.8fcal.cdrivers/scsi/fcal.c +1
-2@@ -249,8 +249,7 @@ int fcal_proc_info (struct Scsi_Host *hoif (scd->id == target) {SPRINTF (" [AL-PA: %02x, Id: %02d, Port WWN: %08x%08x, Node WWN: %08x%08x] " , alpa, target, u1[0 ], u1[1 ], u2[0 ], u2[1 ]); -SPRINTF ("%s " , (scd->type <MAX_SCSI_DEVICE_CODE ) ? - scsi_device_types[(short ) scd->type] :"Unknown device" ); +SPRINTF ("%s " ,scsi_device_type (scd->type));for (j =0 ; (j <8 ) && (scd->vendor[j] >=0x20 ); j++)SPRINTF ("%c" , scd->vendor[j]);Index:
./drivers/scsi/g_NCR5380.c
===================================================================
RCS file:/var/cvs/linux-2.6/drivers/scsi/g_NCR5380.c,vretrieving revision 1.14
diff -u -p -r1.14g_NCR5380.cdrivers/scsi/g_NCR5380.c +1
-2@@ -813,7 +813,6 @@ static int generic_NCR5380_proc_info(strstruct NCR5380_hostdata *hostdata;#ifdef NCR5380_STATS struct scsi_device *dev; -extern const char *const scsi_device_types[MAX_SCSI_DEVICE_CODE ];#endif NCR5380_setup (scsi_ptr);@@ -853,7 +852,7 @@ static int generic_NCR5380_proc_info(strlong tr = hostdata->time_read[dev->id] /HZ ;long tw = hostdata->time_write[dev->id] /HZ ; - PRINTP(" T:%d %s " ANDP dev->id ANDP(dev->type < MAX_SCSI_DEVICE_CODE) ? scsi_device_types[(int) dev->type] : "Unknown"); + PRINTP(" T:%d %s " ANDP dev->id ANDP scsi_device_type(dev->type));for (i =0 ; i <8 ; i++)if (dev->vendor[i] >=0x20 ) *(buffer + (len++)) = dev->vendor[i];Index:
./drivers/scsi/megaraid.c
===================================================================
RCS file:/var/cvs/linux-2.6/drivers/scsi/megaraid.c,vretrieving revision 1.26
diff -u -p -r1.26megaraid.cdrivers/scsi/megaraid.c +1
-3@@ -2822,9 +2822,7 @@ mega_print_inquiry(char *page, char *scs i = scsi_inq[0 ] &0x1f ; - len +=sprintf (page+len," Type: %s " , - i <MAX_SCSI_DEVICE_CODE ? scsi_device_types[i] : -"Unknown " ); + len +=sprintf (page+len," Type: %s " ,scsi_device_type (i)); len +=sprintf (page+len," ANSI SCSI revision: %02x" , scsi_inq[2 ] &0x07 );Index:
./drivers/scsi/scsi.c
===================================================================
RCS file:/var/cvs/linux-2.6/drivers/scsi/scsi.c,vretrieving revision 1.34
diff -u -p -r1.34scsi.cdrivers/scsi/scsi.c +26
-10@@ -97,24 +97,40 @@ unsigned int scsi_logging_level;EXPORT_SYMBOL (scsi_logging_level);#endif -const char *const scsi_device_types[MAX_SCSI_DEVICE_CODE ] = { -"Direct-Access " , -"Sequential-Access" , +static const char *const scsi_device_types[] = { +"Direct access " , +"Sequential access" ,"Printer " ,"Processor " ,"WORM " , -"CD-ROM " , +"CD/DVD " ,"Scanner " , -"Optical Device " , -"Medium Changer " , +"Optical memory " , +"Media changer " ,"Communications " , -"Unknown " , -"Unknown " , +"ASC IT8 " , +"ASC IT8 " ,"RAID " ,"Enclosure " , -"Direct-Access-RBC" , +"Direct access RBC" , +"Optical card " , +"Bridge controller" , +"Object storage " , +"Automation/Drive " , }; -EXPORT_SYMBOL (scsi_device_types); + +const char *scsi_device_type (unsigned type) +{ +if (type ==0x1e ) +return "Well-known LUN " ; +if (type ==0x1f ) +return "No Device " ; +if (type >ARRAY_SIZE (scsi_device_types)) +return "Unknown " ; +return scsi_device_types[type]; +} + +EXPORT_SYMBOL (scsi_device_type);/* * Function: scsi_allocate_request Index:
./drivers/scsi/scsi_proc.c
===================================================================
RCS file:/var/cvs/linux-2.6/drivers/scsi/scsi_proc.c,vretrieving revision 1.9
diff -u -p -r1.9scsi_proc.cdrivers/scsi/scsi_proc.c +1
-3@@ -178,9 +178,7 @@ static int proc_print_scsidevice(structseq_printf (s,"\n" ); -seq_printf (s," Type: %s " , - sdev->type <MAX_SCSI_DEVICE_CODE ? - scsi_device_types[(int ) sdev->type] :"Unknown " ); +seq_printf (s," Type: %s " ,scsi_device_type (sdev->type));seq_printf (s," ANSI" " SCSI revision: %02x" , (sdev->scsi_level -1 ) ? sdev->scsi_level -1 :1 );Index:
./drivers/scsi/scsi_scan.c
===================================================================
RCS file:/var/cvs/linux-2.6/drivers/scsi/scsi_scan.c,vretrieving revision 1.41
diff -u -p -r1.41scsi_scan.cdrivers/scsi/scsi_scan.c +8
-58@@ -186,59 +186,6 @@ static void scsi_unlock_floptical(struct }/** -* print_inquiry - printk the inquiry information -* @inq_result: printk this SCSI INQUIRY -* -* Description: -* printk the vendor, model, and other information found in the -* INQUIRY data in @inq_result. -* -* Notes: -* Remove this, and replace with a hotplug event that logs any -* relevant information. -**/ -static void print_inquiry (unsigned char *inq_result) -{ -int i; - -printk (KERN_NOTICE " Vendor: " ); -for (i =8 ; i <16 ; i++) -if (inq_result[i] >=0x20 && i < inq_result[4 ] +5 ) -printk ("%c" , inq_result[i]); -else -printk (" " ); - -printk (" Model: " ); -for (i =16 ; i <32 ; i++) -if (inq_result[i] >=0x20 && i < inq_result[4 ] +5 ) -printk ("%c" , inq_result[i]); -else -printk (" " ); - -printk (" Rev: " ); -for (i =32 ; i <36 ; i++) -if (inq_result[i] >=0x20 && i < inq_result[4 ] +5 ) -printk ("%c" , inq_result[i]); -else -printk (" " ); - -printk ("\n" ); - - i = inq_result[0 ] &0x1f ; - -printk (KERN_NOTICE " Type: %s " , - i < -MAX_SCSI_DEVICE_CODE ? scsi_device_types[i] : -"Unknown " ); -printk (" ANSI SCSI revision: %02x" , - inq_result[2 ] &0x07 ); -if ((inq_result[2 ] &0x07 ) ==1 && (inq_result[3 ] &0x0f ) ==1 ) -printk (" CCS\n" ); -else -printk ("\n" ); -} - -/** * scsi_alloc_sdev - allocate and setup a scsi_Device * * Description: @@ -706,9 +653,8 @@ static int scsi_add_lun(struct scsi_deviif (*bflags &BLIST_ISROM ) {/* * It would be better to modify sdev->type, and set -* sdev->removable, but then the print_inquiry() output -* would not show TYPE_ROM; if print_inquiry() is removed -* the issue goes away. +* sdev->removable; this can now be done since +* print_inquiry has gone away. */ inq_result[0 ] =TYPE_ROM ; inq_result[1 ] |=0x80 ;/* removable */ @@ -737,8 +683,6 @@ static int scsi_add_lun(struct scsi_deviprintk (KERN_INFO "scsi: unknown device type %d\n" , sdev->type); } -print_inquiry (inq_result); -/* * For a peripheral qualifier (PQ) value of 1 (001b), the SCSI * spec says: The device server is capable of supporting the @@ -767,6 +711,12 @@ static int scsi_add_lun(struct scsi_devi sdev->wdtr =1 ;if (inq_result[7 ] &0x10 ) sdev->sdtr =1 ; + +sdev_printk (KERN_NOTICE "scsi" , sdev,"%s %.8s %.16s %.4s PQ: %d " +"ANSI: %d%s\n" ,scsi_device_type (sdev->type), + sdev->vendor, sdev->model, sdev->rev, + sdev->inq_periph_qual, inq_result[2 ] &0x07 , + (inq_result[3 ] &0x0f ) ==1 ?" CCS" :"" );/* * End sysfs code. Index:
./include/scsi/scsi.h
===================================================================
RCS file:/var/cvs/linux-2.6/include/scsi/scsi.h,vretrieving revision 1.19
diff -u -p -r1.19scsi.hinclude/scsi/scsi.h +3
-8@@ -25,13 +25,6 @@ extern const unsigned char scsi_command_#define COMMAND_SIZE (opcode) scsi_command_size[((opcode) >> 5) & 7]/* -* SCSI device types -*/ - -#define MAX_SCSI_DEVICE_CODE 15 -extern const char *const scsi_device_types[MAX_SCSI_DEVICE_CODE ]; - -/* * Special value for scanning to specify scanning or rescanning of all * possible channels, (target) ids, or luns on a given shost. */ @@ -224,6 +217,9 @@ static inline int scsi_status_is_good(in#define TYPE_ENCLOSURE 0x0d/* Enclosure Services Device */ #define TYPE_RBC 0x0e#define TYPE_NO_LUN 0x7f + +/* Returns a human-readable name for the device */ +extern const char *scsi_device_type (unsigned type);/* * standard mode-select header prepended to all mode-select commands -Quoted 3 lines
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html-
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html