On 02/22/2017 08:07 AM, Hannes Reinecke wrote: > this is a resend of a small patchset for cleaning up SCSI EH. > Primary goal is to make asynchronous aborts mandatory; there hasn't > been a single report so far where asynchronous abort won't work, so > the 'no_async_abort' flag has never been used and will be removed > with this patchset. > Additionally there's a cleanup for handle failed EH commands, and > to detect retries of failed commands. > > As usual, comments and reviews are welcome. Hello Hannes, Supporting asynchronous aborts means that if no response is received for an abort after a certain time that the abort has to be considered as failed. A SCSI LLD may have to allocate resources before a TMF can be sent (e.g. ib_srp has to do that). These resources have to be cleaned up if a TMF times out. We don't want to see a TMF timeout handler in every LLD that supports asynchronous aborts. So we need a TMF timeout handler in the SCSI core. Have you considered to allocate a new SCSI request for submitting a TMF instead of overwriting fields in an existing scsi_cmnd structure? In that case we will be able to reuse the block layer timeout handler. Something else I noticed is that the access of .eh_action in scsi_eh_done() races with the shost->eh_action = NULL assigment in scsi_send_eh_cmnd(). Shouldn't these accesses be protected by locking? Thanks, Bart.