Re: [PATCHv2 0/5] SCSI EH cleanup

Bart Van Assche
2017-02-22T19:56:35Z

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.