• Anastasia Kovaleva's avatar
    scsi: target: core: Change ASCQ for residual write · ead0ffc9
    Anastasia Kovaleva authored
    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.comSigned-off-by: default avatarAnastasia Kovaleva <a.kovaleva@yadro.com>
    Signed-off-by: default avatarRoman Bolshakov <r.bolshakov@yadro.com>
    Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
    ead0ffc9
target_core_transport.c 92.4 KB