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.c177
1 files changed, 176 insertions, 1 deletions
diff --git a/freebsd/sys/cam/scsi/scsi_all.c b/freebsd/sys/cam/scsi/scsi_all.c
index 324a8e3a..bf002dbe 100644
--- a/freebsd/sys/cam/scsi/scsi_all.c
+++ b/freebsd/sys/cam/scsi/scsi_all.c
@@ -760,7 +760,7 @@ static struct asc_table_entry asc_table[] = {
*
* SCSI ASC/ASCQ Assignments
* Numeric Sorted Listing
- * as of 7/29/08
+ * as of 5/20/12
*
* D - DIRECT ACCESS DEVICE (SBC-2) device column key
* .T - SEQUENTIAL ACCESS DEVICE (SSC) -------------------
@@ -846,6 +846,12 @@ static struct asc_table_entry asc_table[] = {
/* DT R MAEBKV */
{ SST(0x00, 0x1E, SS_RDEF, /* XXX TBD */
"Conflicting SA creation request") },
+ /* DT B */
+ { SST(0x00, 0x1F, SS_RDEF, /* XXX TBD */
+ "Logical unit transitioning to another power condition") },
+ /* DT P B */
+ { SST(0x00, 0x20, SS_RDEF, /* XXX TBD */
+ "Extended copy information available") },
/* D W O BK */
{ SST(0x01, 0x00, SS_RDEF,
"No index/sector signal") },
@@ -915,6 +921,33 @@ static struct asc_table_entry asc_table[] = {
/* DT R MAEBKV */
{ SST(0x04, 0x13, SS_RDEF, /* XXX TBD */
"Logical unit not ready, SA creation in progress") },
+ /* D B */
+ { SST(0x04, 0x14, SS_RDEF, /* XXX TBD */
+ "Logical unit not ready, space allocation in progress") },
+ /* M */
+ { SST(0x04, 0x15, SS_RDEF, /* XXX TBD */
+ "Logical unit not ready, robotics disabled") },
+ /* M */
+ { SST(0x04, 0x16, SS_RDEF, /* XXX TBD */
+ "Logical unit not ready, configuration required") },
+ /* M */
+ { SST(0x04, 0x17, SS_RDEF, /* XXX TBD */
+ "Logical unit not ready, calibration required") },
+ /* M */
+ { SST(0x04, 0x18, SS_RDEF, /* XXX TBD */
+ "Logical unit not ready, a door is open") },
+ /* M */
+ { SST(0x04, 0x19, SS_RDEF, /* XXX TBD */
+ "Logical unit not ready, operating in sequential mode") },
+ /* DT B */
+ { SST(0x04, 0x1A, SS_RDEF, /* XXX TBD */
+ "Logical unit not ready, START/STOP UNIT command in progress") },
+ /* D B */
+ { SST(0x04, 0x1B, SS_RDEF, /* XXX TBD */
+ "Logical unit not ready, sanitize in progress") },
+ /* DT MAEB */
+ { SST(0x04, 0x1C, SS_RDEF, /* XXX TBD */
+ "Logical unit not ready, additional power use not yet granted") },
/* DTL WROMAEBKVF */
{ SST(0x05, 0x00, SS_RDEF,
"Logical unit does not respond to selection") },
@@ -981,6 +1014,12 @@ static struct asc_table_entry asc_table[] = {
/* DTLPWROMAEBKVF */
{ SST(0x0B, 0x07, SS_RDEF, /* XXX TBD */
"Warning - degraded power to non-volatile cache") },
+ /* DTLPWROMAEBKVF */
+ { SST(0x0B, 0x08, SS_RDEF, /* XXX TBD */
+ "Warning - power loss expected") },
+ /* D */
+ { SST(0x0B, 0x09, SS_RDEF, /* XXX TBD */
+ "Warning - device statistics notification available") },
/* T R */
{ SST(0x0C, 0x00, SS_RDEF,
"Write error") },
@@ -1023,6 +1062,9 @@ static struct asc_table_entry asc_table[] = {
/* DTLPWRO AEBKVF */
{ SST(0x0C, 0x0D, SS_RDEF, /* XXX TBD */
"Write error - not enough unsolicited data") },
+ /* DT W O BK */
+ { SST(0x0C, 0x0E, SS_RDEF, /* XXX TBD */
+ "Multiple write errors") },
/* R */
{ SST(0x0C, 0x0F, SS_RDEF, /* XXX TBD */
"Defects in error window") },
@@ -1068,6 +1110,12 @@ static struct asc_table_entry asc_table[] = {
/* DT W O */
{ SST(0x10, 0x03, SS_RDEF, /* XXX TBD */
"Logical block reference tag check failed") },
+ /* T */
+ { SST(0x10, 0x04, SS_RDEF, /* XXX TBD */
+ "Logical block protection error on recovered buffer data") },
+ /* T */
+ { SST(0x10, 0x05, SS_RDEF, /* XXX TBD */
+ "Logical block protection method error") },
/* DT WRO BK */
{ SST(0x11, 0x00, SS_RDEF,
"Unrecovered read error") },
@@ -1272,6 +1320,9 @@ static struct asc_table_entry asc_table[] = {
/* DT WRO BK */
{ SST(0x1D, 0x00, SS_FATAL,
"Miscompare during verify operation") },
+ /* D B */
+ { SST(0x1D, 0x01, SS_RDEF, /* XXX TBD */
+ "Miscomparable verify of unmapped LBA") },
/* D W O BK */
{ SST(0x1E, 0x00, SS_NOP | SSQ_PRINT_SENSE,
"Recovered ID with ECC correction") },
@@ -1314,6 +1365,9 @@ static struct asc_table_entry asc_table[] = {
/* DT PWROMAEBK */
{ SST(0x20, 0x0B, SS_RDEF, /* XXX TBD */
"Access denied - ACL LUN conflict") },
+ /* T */
+ { SST(0x20, 0x0C, SS_FATAL | EINVAL,
+ "Illegal command when not in append-only mode") },
/* DT WRO BK */
{ SST(0x21, 0x00, SS_FATAL | EINVAL,
"Logical block address out of range") },
@@ -1329,6 +1383,39 @@ static struct asc_table_entry asc_table[] = {
/* D */
{ SST(0x22, 0x00, SS_FATAL | EINVAL,
"Illegal function (use 20 00, 24 00, or 26 00)") },
+ /* DT P B */
+ { SST(0x23, 0x00, SS_RDEF, /* XXX TBD */
+ "Invalid token operation, cause not reportable") },
+ /* DT P B */
+ { SST(0x23, 0x01, SS_RDEF, /* XXX TBD */
+ "Invalid token operation, unsupported token type") },
+ /* DT P B */
+ { SST(0x23, 0x02, SS_RDEF, /* XXX TBD */
+ "Invalid token operation, remote token usage not supported") },
+ /* DT P B */
+ { SST(0x23, 0x03, SS_RDEF, /* XXX TBD */
+ "Invalid token operation, remote ROD token creation not supported") },
+ /* DT P B */
+ { SST(0x23, 0x04, SS_RDEF, /* XXX TBD */
+ "Invalid token operation, token unknown") },
+ /* DT P B */
+ { SST(0x23, 0x05, SS_RDEF, /* XXX TBD */
+ "Invalid token operation, token corrupt") },
+ /* DT P B */
+ { SST(0x23, 0x06, SS_RDEF, /* XXX TBD */
+ "Invalid token operation, token revoked") },
+ /* DT P B */
+ { SST(0x23, 0x07, SS_RDEF, /* XXX TBD */
+ "Invalid token operation, token expired") },
+ /* DT P B */
+ { SST(0x23, 0x08, SS_RDEF, /* XXX TBD */
+ "Invalid token operation, token cancelled") },
+ /* DT P B */
+ { SST(0x23, 0x09, SS_RDEF, /* XXX TBD */
+ "Invalid token operation, token deleted") },
+ /* DT P B */
+ { SST(0x23, 0x0A, SS_RDEF, /* XXX TBD */
+ "Invalid token operation, invalid token length") },
/* DTLPWROMAEBKVF */
{ SST(0x24, 0x00, SS_FATAL | EINVAL,
"Invalid field in CDB") },
@@ -1437,6 +1524,9 @@ static struct asc_table_entry asc_table[] = {
/* R F */
{ SST(0x27, 0x06, SS_RDEF, /* XXX TBD */
"Conditional write protect") },
+ /* D B */
+ { SST(0x27, 0x07, SS_RDEF, /* XXX TBD */
+ "Space allocation failed write protect") },
/* DTLPWROMAEBKVF */
{ SST(0x28, 0x00, SS_FATAL | ENXIO,
"Not ready to ready change, medium may have changed") },
@@ -1535,6 +1625,9 @@ static struct asc_table_entry asc_table[] = {
/* DT R MAEBKV */
{ SST(0x2A, 0x14, SS_RDEF, /* XXX TBD */
"SA creation capabilities data has changed") },
+ /* T M V */
+ { SST(0x2A, 0x15, SS_RDEF, /* XXX TBD */
+ "Medium removal prevention preempted") },
/* DTLPWRO K */
{ SST(0x2B, 0x00, SS_RDEF,
"Copy cannot execute since host cannot disconnect") },
@@ -1574,6 +1667,9 @@ static struct asc_table_entry asc_table[] = {
/* T */
{ SST(0x2C, 0x0B, SS_RDEF, /* XXX TBD */
"Not reserved") },
+ /* D */
+ { SST(0x2C, 0x0C, SS_RDEF, /* XXX TBD */
+ "ORWRITE generation does not match") },
/* T */
{ SST(0x2D, 0x00, SS_RDEF,
"Overwrite error on update in place") },
@@ -1637,6 +1733,9 @@ static struct asc_table_entry asc_table[] = {
/* M */
{ SST(0x30, 0x12, SS_RDEF, /* XXX TBD */
"Incompatible volume qualifier") },
+ /* M */
+ { SST(0x30, 0x13, SS_RDEF, /* XXX TBD */
+ "Cleaning volume expired") },
/* DT WRO BK */
{ SST(0x31, 0x00, SS_RDEF,
"Medium format corrupted") },
@@ -1646,6 +1745,9 @@ static struct asc_table_entry asc_table[] = {
/* R */
{ SST(0x31, 0x02, SS_RDEF, /* XXX TBD */
"Zoned formatting failed due to spare linking") },
+ /* D B */
+ { SST(0x31, 0x03, SS_RDEF, /* XXX TBD */
+ "SANITIZE command failed") },
/* D W O BK */
{ SST(0x32, 0x00, SS_RDEF,
"No defect spare location available") },
@@ -1694,6 +1796,9 @@ static struct asc_table_entry asc_table[] = {
/* B */
{ SST(0x38, 0x06, SS_RDEF, /* XXX TBD */
"ESN - device busy class event") },
+ /* D */
+ { SST(0x38, 0x07, SS_RDEF, /* XXX TBD */
+ "Thin provisioning soft threshold reached") },
/* DTL WROMAE K */
{ SST(0x39, 0x00, SS_RDEF,
"Saving parameters not supported") },
@@ -1793,6 +1898,9 @@ static struct asc_table_entry asc_table[] = {
/* M */
{ SST(0x3B, 0x1B, SS_RDEF, /* XXX TBD */
"Data transfer device inserted") },
+ /* T */
+ { SST(0x3B, 0x1C, SS_RDEF, /* XXX TBD */
+ "Too many logical objects on partition to support operation") },
/* DTLPWROMAE K */
{ SST(0x3D, 0x00, SS_RDEF,
"Invalid bits in IDENTIFY message") },
@@ -1896,6 +2004,9 @@ static struct asc_table_entry asc_table[] = {
/* DTLPWROMAEBKVF */
{ SST(0x44, 0x00, SS_RDEF,
"Internal target failure") },
+ /* DT P MAEBKVF */
+ { SST(0x44, 0x01, SS_RDEF, /* XXX TBD */
+ "Persistent reservation information lost") },
/* DT B */
{ SST(0x44, 0x71, SS_RDEF, /* XXX TBD */
"ATA device failed set features") },
@@ -1959,6 +2070,27 @@ static struct asc_table_entry asc_table[] = {
/* DT PWROMAEBK */
{ SST(0x4B, 0x06, SS_RDEF, /* XXX TBD */
"Initiator response timeout") },
+ /* DT PWROMAEBK F */
+ { SST(0x4B, 0x07, SS_RDEF, /* XXX TBD */
+ "Connection lost") },
+ /* DT PWROMAEBK F */
+ { SST(0x4B, 0x08, SS_RDEF, /* XXX TBD */
+ "Data-in buffer overflow - data buffer size") },
+ /* DT PWROMAEBK F */
+ { SST(0x4B, 0x09, SS_RDEF, /* XXX TBD */
+ "Data-in buffer overflow - data buffer descriptor area") },
+ /* DT PWROMAEBK F */
+ { SST(0x4B, 0x0A, SS_RDEF, /* XXX TBD */
+ "Data-in buffer error") },
+ /* DT PWROMAEBK F */
+ { SST(0x4B, 0x0B, SS_RDEF, /* XXX TBD */
+ "Data-out buffer overflow - data buffer size") },
+ /* DT PWROMAEBK F */
+ { SST(0x4B, 0x0C, SS_RDEF, /* XXX TBD */
+ "Data-out buffer overflow - data buffer descriptor area") },
+ /* DT PWROMAEBK F */
+ { SST(0x4B, 0x0D, SS_RDEF, /* XXX TBD */
+ "Data-out buffer error") },
/* DTLPWROMAEBKVF */
{ SST(0x4C, 0x00, SS_RDEF,
"Logical unit failed self-configuration") },
@@ -2004,6 +2136,18 @@ static struct asc_table_entry asc_table[] = {
/* T */
{ SST(0x53, 0x04, SS_RDEF, /* XXX TBD */
"Medium thread or unthread failure") },
+ /* M */
+ { SST(0x53, 0x05, SS_RDEF, /* XXX TBD */
+ "Volume identifier invalid") },
+ /* T */
+ { SST(0x53, 0x06, SS_RDEF, /* XXX TBD */
+ "Volume identifier missing") },
+ /* M */
+ { SST(0x53, 0x07, SS_RDEF, /* XXX TBD */
+ "Duplicate volume identifier") },
+ /* M */
+ { SST(0x53, 0x08, SS_RDEF, /* XXX TBD */
+ "Element status unknown") },
/* P */
{ SST(0x54, 0x00, SS_RDEF,
"SCSI to host system interface failure") },
@@ -2040,6 +2184,15 @@ static struct asc_table_entry asc_table[] = {
/* M */
{ SST(0x55, 0x0A, SS_RDEF, /* XXX TBD */
"Data currently unavailable") },
+ /* DTLPWROMAEBKVF */
+ { SST(0x55, 0x0B, SS_RDEF, /* XXX TBD */
+ "Insufficient power for operation") },
+ /* DT P B */
+ { SST(0x55, 0x0C, SS_RDEF, /* XXX TBD */
+ "Insufficient resources to create ROD") },
+ /* DT P B */
+ { SST(0x55, 0x0D, SS_RDEF, /* XXX TBD */
+ "Insufficient resources to create ROD token") },
/* R */
{ SST(0x57, 0x00, SS_RDEF,
"Unable to recover table-of-contents") },
@@ -2346,6 +2499,24 @@ static struct asc_table_entry asc_table[] = {
/* DTLPWRO A K */
{ SST(0x5E, 0x04, SS_RDEF,
"Standby condition activated by command") },
+ /* DTLPWRO A K */
+ { SST(0x5E, 0x05, SS_RDEF,
+ "Idle-B condition activated by timer") },
+ /* DTLPWRO A K */
+ { SST(0x5E, 0x06, SS_RDEF,
+ "Idle-B condition activated by command") },
+ /* DTLPWRO A K */
+ { SST(0x5E, 0x07, SS_RDEF,
+ "Idle-C condition activated by timer") },
+ /* DTLPWRO A K */
+ { SST(0x5E, 0x08, SS_RDEF,
+ "Idle-C condition activated by command") },
+ /* DTLPWRO A K */
+ { SST(0x5E, 0x09, SS_RDEF,
+ "Standby-Y condition activated by timer") },
+ /* DTLPWRO A K */
+ { SST(0x5E, 0x0A, SS_RDEF,
+ "Standby-Y condition activated by command") },
/* B */
{ SST(0x5E, 0x41, SS_RDEF, /* XXX TBD */
"Power state change to active") },
@@ -3044,6 +3215,10 @@ scsi_command_string(struct cam_device *device, struct ccb_scsiio *csio,
sizeof(cdb_str)));
}
+#ifdef _KERNEL
+ xpt_free_ccb((union ccb *)cgd);
+#endif
+
return(0);
}