Re: [PATCH V2] scsi: libsas: Directly kick-off EH when ATA device fell off

From: John Garry
Date: Wed Dec 21 2022 - 04:43:50 EST


On 20/12/2022 09:49, Jason Yan wrote:

Itering tagset in libsas is odd.

Itering with block layer APIs is just a method to deal with each active IO. However, libsas should not be aborting IO directly. It may provide helper routines, but the LLDD should be dealing with aborting IO.

>
> The question is, shall we implement the aborting from the driver side,
> such as what sas_ata_device_link_abort() do. Or shall we implement the
> aborting from the upper side(scsi middle layer or block layer), such as
> trigger block layer time out handler immediately after we found device
> is gone?

As mentioned, aborting each IO should be the job of the LLDD. However, just making the IO timeout will lead to EH kicking in earlier, and EH will do usual per-IO handling in sas_eh_handle_sas_errors() that would happen when the IO timesout normally - so what are we really gaining here? Just EH kicks in earlier. But we still have the problem of all other per-host IO being blocked while EH is active.

Thanks,
John