The following patches made over a combo of linus's tree and Martin's 6.1-queue tree (they are both missing patches so I couldn't build against just one) allow scsi_execute* users to control exactly which errors are retried, so we can reduce the sense/sshdr handling they have to do. The patches allow scsi_execute* users to pass in an array of failures which they want retried and also specify how many times they want them retried. If we hit an error that the user did not specify then we drop down to the default behavior. This allows us to remove almost all the retry logic from scsi_execute* users. We then only need to drive retries from the caller for: 1. wants to sleep between retries or had strict timings like in sd_spinup_disk or ufs. 2. needed to set some internal state between retries like in scsi_test_unit_ready) 3. retried based on the error code and it's internal state like in the alua rtpg handling. v3: - Use a for loop in scsi_check_passthrough - Fix result handling/testing. - Fix scsi_status_is_good handling. - make __scsi_exec_req take a const arg - Fix formatting in patch 24 v2: - Rename scsi_prep_sense - Change scsi_check_passthrough's loop and added some fixes - Modified scsi_execute* so it uses a struct to pass in args