scsi: target: core: Change ASCQ for residual write
authorAnastasia Kovaleva <a.kovaleva@yadro.com>
Thu, 3 Dec 2020 08:20:35 +0000 (11:20 +0300)
committerMartin K. Petersen <martin.petersen@oracle.com>
Wed, 27 Jan 2021 04:12:18 +0000 (23:12 -0500)
commitead0ffc95a89b6b2c276702ee7b5a2b9bb445dfe
treeacb88b436575d2d1d1d0da572d1058d8e6590c1b
parentcc0b6ad72e18568dab245a0c5f8cc051b0936b33
scsi: target: core: Change ASCQ for residual write

According to FCP-4 (9.4.2):

  If the command requested that data beyond the length specified by the
  FCP_DL field be transferred, then the device server shall set the
  FCP_RESID_OVER bit (see 9.5.8) to one in the FCP_RSP IU and:

  a) process the command normally except that data beyond the FCP_DL count
  shall not be requested or transferred;

  b) transfer no data and return CHECK CONDITION status with the sense key
  set to ILLEGAL REQUEST and the additional sense code set to INVALID FIELD
  IN COMMAND INFORMATION UNIT; or

  c) may transfer data and return CHECK CONDITION status with the sense key
  set to ABORTED COMMAND and the additional sense code set to INVALID FIELD
  IN COMMAND INFORMATION UNIT.

TCM follows b) and transfers no data for residual writes but returns
INVALID FIELD IN CDB instead of INVALID FIELD IN COMMAND INFORMATION UNIT.

Change the ASCQ to INVALID FIELD IN COMMAND INFORMATION UNIT to meet the
standard.

Link: https://lore.kernel.org/r/20201203082035.54566-4-a.kovaleva@yadro.com
Signed-off-by: Anastasia Kovaleva <a.kovaleva@yadro.com>
Signed-off-by: Roman Bolshakov <r.bolshakov@yadro.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/target/target_core_transport.c
include/target/target_core_base.h