scsi: uas: Drop DID_TARGET_FAILURE use
authorMike Christie <michael.christie@oracle.com>
Fri, 12 Aug 2022 01:00:20 +0000 (20:00 -0500)
committerMartin K. Petersen <martin.petersen@oracle.com>
Wed, 7 Sep 2022 02:05:58 +0000 (22:05 -0400)
DID_TARGET_FAILURE is internal to the SCSI layer. Drivers must not use it
because:

 1. It's not propagated upwards, so SG IO/passthrough users will not see an
    error and think a command was successful.

 2. There is no handling for it in scsi_decide_disposition() so it results
    in entering SCSI error handling.

It looks like the driver wanted a hard failure so this swaps it with
DID_BAD_TARGET which gives us that behavior. The error looks like it's for
a case where the target did not support a TMF we wanted to use (maybe not a
bad target but disappointing so close enough).

Link: https://lore.kernel.org/r/20220812010027.8251-4-michael.christie@oracle.com
Signed-off-by: Mike Christie <michael.christie@oracle.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/usb/storage/uas.c

index 84dc270..de38364 100644 (file)
@@ -283,7 +283,7 @@ static bool uas_evaluate_response_iu(struct response_iu *riu, struct scsi_cmnd *
                set_host_byte(cmnd, DID_OK);
                break;
        case RC_TMF_NOT_SUPPORTED:
-               set_host_byte(cmnd, DID_TARGET_FAILURE);
+               set_host_byte(cmnd, DID_BAD_TARGET);
                break;
        default:
                uas_log_cmd_state(cmnd, "response iu", response_code);