summaryrefslogtreecommitdiffstats
path: root/freebsd/sys/cam/scsi/scsi_all.c
diff options
context:
space:
mode:
Diffstat (limited to 'freebsd/sys/cam/scsi/scsi_all.c')
-rw-r--r--freebsd/sys/cam/scsi/scsi_all.c31
1 files changed, 18 insertions, 13 deletions
diff --git a/freebsd/sys/cam/scsi/scsi_all.c b/freebsd/sys/cam/scsi/scsi_all.c
index 4cad972d..7e268bb1 100644
--- a/freebsd/sys/cam/scsi/scsi_all.c
+++ b/freebsd/sys/cam/scsi/scsi_all.c
@@ -1110,13 +1110,13 @@ static struct asc_table_entry asc_table[] = {
{ SST(0x04, 0x09, SS_RDEF, /* XXX TBD */
"Logical unit not ready, self-test in progress") },
/* DTLPWROMAEBKVF */
- { SST(0x04, 0x0A, SS_RDEF, /* XXX TBD */
+ { SST(0x04, 0x0A, SS_TUR | SSQ_MANY | SSQ_DECREMENT_COUNT | ENXIO,
"Logical unit not accessible, asymmetric access state transition")},
/* DTLPWROMAEBKVF */
- { SST(0x04, 0x0B, SS_RDEF, /* XXX TBD */
+ { SST(0x04, 0x0B, SS_FATAL | ENXIO,
"Logical unit not accessible, target port in standby state") },
/* DTLPWROMAEBKVF */
- { SST(0x04, 0x0C, SS_RDEF, /* XXX TBD */
+ { SST(0x04, 0x0C, SS_FATAL | ENXIO,
"Logical unit not accessible, target port in unavailable state") },
/* F */
{ SST(0x04, 0x0D, SS_RDEF, /* XXX TBD */
@@ -5158,7 +5158,7 @@ scsi_print_inquiry(struct scsi_inquiry_data *inq_data)
{
u_int8_t type;
char *dtype, *qtype;
- char vendor[16], product[48], revision[16], rstr[4];
+ char vendor[16], product[48], revision[16], rstr[12];
type = SID_TYPE(inq_data);
@@ -5166,7 +5166,7 @@ scsi_print_inquiry(struct scsi_inquiry_data *inq_data)
* Figure out basic device type and qualifier.
*/
if (SID_QUAL_IS_VENDOR_UNIQUE(inq_data)) {
- qtype = "(vendor-unique qualifier)";
+ qtype = " (vendor-unique qualifier)";
} else {
switch (SID_QUAL(inq_data)) {
case SID_QUAL_LU_CONNECTED:
@@ -5174,15 +5174,15 @@ scsi_print_inquiry(struct scsi_inquiry_data *inq_data)
break;
case SID_QUAL_LU_OFFLINE:
- qtype = "(offline)";
+ qtype = " (offline)";
break;
case SID_QUAL_RSVD:
- qtype = "(reserved qualifier)";
+ qtype = " (reserved qualifier)";
break;
default:
case SID_QUAL_BAD_LU:
- qtype = "(LUN not supported)";
+ qtype = " (LUN not supported)";
break;
}
}
@@ -5251,11 +5251,16 @@ scsi_print_inquiry(struct scsi_inquiry_data *inq_data)
cam_strvis(revision, inq_data->revision, sizeof(inq_data->revision),
sizeof(revision));
- if (SID_ANSI_REV(inq_data) == SCSI_REV_CCS)
- bcopy("CCS", rstr, 4);
- else
- snprintf(rstr, sizeof (rstr), "%d", SID_ANSI_REV(inq_data));
- printf("<%s %s %s> %s %s SCSI-%s device %s\n",
+ if (SID_ANSI_REV(inq_data) == SCSI_REV_0)
+ snprintf(rstr, sizeof(rstr), "SCSI");
+ else if (SID_ANSI_REV(inq_data) <= SCSI_REV_SPC) {
+ snprintf(rstr, sizeof(rstr), "SCSI-%d",
+ SID_ANSI_REV(inq_data));
+ } else {
+ snprintf(rstr, sizeof(rstr), "SPC-%d SCSI",
+ SID_ANSI_REV(inq_data) - 2);
+ }
+ printf("<%s %s %s> %s %s %s device%s\n",
vendor, product, revision,
SID_IS_REMOVABLE(inq_data) ? "Removable" : "Fixed",
dtype, rstr, qtype);