target: Add DIF CHECK_CONDITION ASC/ASCQ exception cases
This patch adds support for DIF related CHECK_CONDITION ASC/ASCQ exception cases into transport_send_check_condition_and_sense(). This includes: LOGICAL BLOCK GUARD CHECK FAILED LOGICAL BLOCK APPLICATION TAG CHECK FAILED LOGICAL BLOCK REFERENCE TAG CHECK FAILED that used by DIF TYPE1 and TYPE3 failure cases. Cc: Martin K. Petersen <martin.petersen@oracle.com> Cc: Christoph Hellwig <hch@lst.de> Cc: Hannes Reinecke <hare@suse.de> Cc: Sagi Grimberg <sagig@mellanox.com> Cc: Or Gerlitz <ogerlitz@mellanox.com> Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
This commit is contained in:
parent
ce65e5b97b
commit
fcc4f17b9c
|
@ -2674,6 +2674,36 @@ transport_send_check_condition_and_sense(struct se_cmd *cmd,
|
|||
buffer[SPC_ASC_KEY_OFFSET] = 0x1d;
|
||||
buffer[SPC_ASCQ_KEY_OFFSET] = 0x00;
|
||||
break;
|
||||
case TCM_LOGICAL_BLOCK_GUARD_CHECK_FAILED:
|
||||
/* CURRENT ERROR */
|
||||
buffer[0] = 0x70;
|
||||
buffer[SPC_ADD_SENSE_LEN_OFFSET] = 10;
|
||||
/* ILLEGAL REQUEST */
|
||||
buffer[SPC_SENSE_KEY_OFFSET] = ILLEGAL_REQUEST;
|
||||
/* LOGICAL BLOCK GUARD CHECK FAILED */
|
||||
buffer[SPC_ASC_KEY_OFFSET] = 0x10;
|
||||
buffer[SPC_ASCQ_KEY_OFFSET] = 0x01;
|
||||
break;
|
||||
case TCM_LOGICAL_BLOCK_APP_TAG_CHECK_FAILED:
|
||||
/* CURRENT ERROR */
|
||||
buffer[0] = 0x70;
|
||||
buffer[SPC_ADD_SENSE_LEN_OFFSET] = 10;
|
||||
/* ILLEGAL REQUEST */
|
||||
buffer[SPC_SENSE_KEY_OFFSET] = ILLEGAL_REQUEST;
|
||||
/* LOGICAL BLOCK APPLICATION TAG CHECK FAILED */
|
||||
buffer[SPC_ASC_KEY_OFFSET] = 0x10;
|
||||
buffer[SPC_ASCQ_KEY_OFFSET] = 0x02;
|
||||
break;
|
||||
case TCM_LOGICAL_BLOCK_REF_TAG_CHECK_FAILED:
|
||||
/* CURRENT ERROR */
|
||||
buffer[0] = 0x70;
|
||||
buffer[SPC_ADD_SENSE_LEN_OFFSET] = 10;
|
||||
/* ILLEGAL REQUEST */
|
||||
buffer[SPC_SENSE_KEY_OFFSET] = ILLEGAL_REQUEST;
|
||||
/* LOGICAL BLOCK REFERENCE TAG CHECK FAILED */
|
||||
buffer[SPC_ASC_KEY_OFFSET] = 0x10;
|
||||
buffer[SPC_ASCQ_KEY_OFFSET] = 0x03;
|
||||
break;
|
||||
case TCM_LOGICAL_UNIT_COMMUNICATION_FAILURE:
|
||||
default:
|
||||
/* CURRENT ERROR */
|
||||
|
|
|
@ -205,6 +205,9 @@ enum tcm_sense_reason_table {
|
|||
TCM_OUT_OF_RESOURCES = R(0x12),
|
||||
TCM_PARAMETER_LIST_LENGTH_ERROR = R(0x13),
|
||||
TCM_MISCOMPARE_VERIFY = R(0x14),
|
||||
TCM_LOGICAL_BLOCK_GUARD_CHECK_FAILED = R(0x15),
|
||||
TCM_LOGICAL_BLOCK_APP_TAG_CHECK_FAILED = R(0x16),
|
||||
TCM_LOGICAL_BLOCK_REF_TAG_CHECK_FAILED = R(0x17),
|
||||
#undef R
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in a new issue