On Fri, 2012-01-06 at 16:54 -0800, Roland Dreier wrote: > From: Roland Dreier <roland@xxxxxxxxxxxxxxx> > > According to SPC-4, the sense key for commands that are failed with > INVALID FIELD IN PARAMETER LIST and INVALID FIELD IN CDB should be > ILLEGAL REQUEST (5h) rather than ABORTED COMMAND (Bh). Without this > patch, a tcm_loop LUN incorrectly gives: > > # sg_raw -r 1 -v /dev/sda 3 1 0 0 ff 0 > Sense Information: > Fixed format, current; Sense key: Aborted Command > Additional sense: Invalid field in cdb > Raw sense data (in hex): > 70 00 0b 00 00 00 00 0a 00 00 00 00 24 00 00 00 > 00 00 > > While a real SCSI disk gives: > > Sense Information: > Fixed format, current; Sense key: Illegal Request > Additional sense: Invalid field in cdb > Raw sense data (in hex): > 70 00 05 00 00 00 00 18 00 00 00 00 24 00 00 00 > 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 > > with the main point being that the real disk gives a sense key of > ILLEGAL REQUEST (5h). > > Signed-off-by: Roland Dreier <roland@xxxxxxxxxxxxxxx> > --- > drivers/target/target_core_transport.c | 8 ++++---- > 1 files changed, 4 insertions(+), 4 deletions(-) > > diff --git a/drivers/target/target_core_transport.c b/drivers/target/target_core_transport.c > index 0257658..de5bf6a 100644 > --- a/drivers/target/target_core_transport.c > +++ b/drivers/target/target_core_transport.c > @@ -4397,16 +4397,16 @@ int transport_send_check_condition_and_sense( > case TCM_INVALID_CDB_FIELD: > /* CURRENT ERROR */ > buffer[offset] = 0x70; > - /* ABORTED COMMAND */ > - buffer[offset+SPC_SENSE_KEY_OFFSET] = ABORTED_COMMAND; > + /* ILLEGAL REQUEST */ > + buffer[offset+SPC_SENSE_KEY_OFFSET] = ILLEGAL_REQUEST; > /* INVALID FIELD IN CDB */ > buffer[offset+SPC_ASC_KEY_OFFSET] = 0x24; > break; > case TCM_INVALID_PARAMETER_LIST: > /* CURRENT ERROR */ > buffer[offset] = 0x70; > - /* ABORTED COMMAND */ > - buffer[offset+SPC_SENSE_KEY_OFFSET] = ABORTED_COMMAND; > + /* ILLEGAL REQUEST */ > + buffer[offset+SPC_SENSE_KEY_OFFSET] = ILLEGAL_REQUEST; > /* INVALID FIELD IN PARAMETER LIST */ > buffer[offset+SPC_ASC_KEY_OFFSET] = 0x26; > break; Good catch here. However this does not apply to lio-core and conflicts with the following patch: commit b8732e859410ce41ab5608b614fd282ce4e178e5 Author: Roland Dreier <roland@xxxxxxxxxxxxxxx> Date: Tue Dec 13 14:55:33 2011 -0800 target: Set additional sense length field in sense data I've gone ahead and applied it manually, and will queue this up for mainline for the second round of v3.3 updates. Thanks, --nab -- To unsubscribe from this list: send the line "unsubscribe target-devel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html