On 10/20/20 2:53 PM, Mike Christie wrote: > On 10/19/20 2:26 PM, Muneendra Kumar M wrote: >> Hi Michael, >> >>> check_type: >>> + /* >>> + * Check whether caller has decided not to do retries on >>> + * abort success by setting the SCMD_NORETRIES_ABORT bit >>> + */ >>> + if ((test_bit(SCMD_NORETRIES_ABORT, &scmd->state)) && >>> + (scmd->request->cmd_flags & REQ_FAILFAST_TRANSPORT)) { >>> + set_host_byte(scmd, DID_TRANSPORT_MARGINAL); >> >>> Hey, one other thing that might be confusing me is this check and the >>> naming. The 0/17 email description and the SCMD_NORETRIES_ABORT name makes >>> me think we want to only run this if the cmd timedout and we went >through >>> the SCSI EH TMF operations. However, I think this will end up failing other >>> errors with DID_TRANSPORT_MARGINAL right? >> >>> Did you want just the the SCSI EH timeout/abort case to hit this or any >>> errors that hit this code path? >> [Muneendra]At present we want SCSI EH timeout/abort case to hit this. > > What about adding a new eh callout that the transport classes can implement. > They can check the port state at this time and decide if the cmd should be > retried or failed. It would be similar to fc_eh_timed_out for example. > Or, in the fc_eh_timed_out callout set the SCMD_NORETRIES_ABORT if port state is marginal and it indicates it wants to abort the cmd. In scsi_noretry_cmd above then you know we got there, because the cmd timedout and we tried/were going to abort it. We don't need the code to loop over running commands, the chkready changes, etc.