On 2022/12/21 17:40, John Garry wrote:
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.
This is not the same issue as I replied yesterday.
https://lkml.org/lkml/2022/12/19/1034
Thanks,
Jason