summaryrefslogtreecommitdiffstats
path: root/drivers/target
diff options
context:
space:
mode:
authorDavid Disseldorp <ddiss@suse.de>2016-12-23 05:37:53 -0500
committerBart Van Assche <bart.vanassche@sandisk.com>2017-01-10 11:40:32 -0500
commite864212078ded276bdb272b2e0ee6a979357ca8a (patch)
treed2129eb1023d4d95f030dc74257da09015d03c70 /drivers/target
parent7ce7d89f48834cefece7804d38fc5d85382edf77 (diff)
target: add XCOPY target/segment desc sense codes
As defined in http://www.t10.org/lists/asc-num.htm. To be used during validation of XCOPY target and segment descriptor lists. Signed-off-by: David Disseldorp <ddiss@suse.de> Reviewed-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Bart Van Assche <bart.vanassche@sandisk.com>
Diffstat (limited to 'drivers/target')
-rw-r--r--drivers/target/target_core_transport.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/drivers/target/target_core_transport.c b/drivers/target/target_core_transport.c
index 7dfefd66df93..1cadc9eefa21 100644
--- a/drivers/target/target_core_transport.c
+++ b/drivers/target/target_core_transport.c
@@ -1693,6 +1693,10 @@ void transport_generic_request_failure(struct se_cmd *cmd,
1693 case TCM_LOGICAL_BLOCK_APP_TAG_CHECK_FAILED: 1693 case TCM_LOGICAL_BLOCK_APP_TAG_CHECK_FAILED:
1694 case TCM_LOGICAL_BLOCK_REF_TAG_CHECK_FAILED: 1694 case TCM_LOGICAL_BLOCK_REF_TAG_CHECK_FAILED:
1695 case TCM_COPY_TARGET_DEVICE_NOT_REACHABLE: 1695 case TCM_COPY_TARGET_DEVICE_NOT_REACHABLE:
1696 case TCM_TOO_MANY_TARGET_DESCS:
1697 case TCM_UNSUPPORTED_TARGET_DESC_TYPE_CODE:
1698 case TCM_TOO_MANY_SEGMENT_DESCS:
1699 case TCM_UNSUPPORTED_SEGMENT_DESC_TYPE_CODE:
1696 break; 1700 break;
1697 case TCM_OUT_OF_RESOURCES: 1701 case TCM_OUT_OF_RESOURCES:
1698 sense_reason = TCM_LOGICAL_UNIT_COMMUNICATION_FAILURE; 1702 sense_reason = TCM_LOGICAL_UNIT_COMMUNICATION_FAILURE;
@@ -2808,6 +2812,26 @@ static const struct sense_info sense_info_table[] = {
2808 .key = ILLEGAL_REQUEST, 2812 .key = ILLEGAL_REQUEST,
2809 .asc = 0x26, /* INVALID FIELD IN PARAMETER LIST */ 2813 .asc = 0x26, /* INVALID FIELD IN PARAMETER LIST */
2810 }, 2814 },
2815 [TCM_TOO_MANY_TARGET_DESCS] = {
2816 .key = ILLEGAL_REQUEST,
2817 .asc = 0x26,
2818 .ascq = 0x06, /* TOO MANY TARGET DESCRIPTORS */
2819 },
2820 [TCM_UNSUPPORTED_TARGET_DESC_TYPE_CODE] = {
2821 .key = ILLEGAL_REQUEST,
2822 .asc = 0x26,
2823 .ascq = 0x07, /* UNSUPPORTED TARGET DESCRIPTOR TYPE CODE */
2824 },
2825 [TCM_TOO_MANY_SEGMENT_DESCS] = {
2826 .key = ILLEGAL_REQUEST,
2827 .asc = 0x26,
2828 .ascq = 0x08, /* TOO MANY SEGMENT DESCRIPTORS */
2829 },
2830 [TCM_UNSUPPORTED_SEGMENT_DESC_TYPE_CODE] = {
2831 .key = ILLEGAL_REQUEST,
2832 .asc = 0x26,
2833 .ascq = 0x09, /* UNSUPPORTED SEGMENT DESCRIPTOR TYPE CODE */
2834 },
2811 [TCM_PARAMETER_LIST_LENGTH_ERROR] = { 2835 [TCM_PARAMETER_LIST_LENGTH_ERROR] = {
2812 .key = ILLEGAL_REQUEST, 2836 .key = ILLEGAL_REQUEST,
2813 .asc = 0x1a, /* PARAMETER LIST LENGTH ERROR */ 2837 .asc = 0x1a, /* PARAMETER LIST LENGTH ERROR */