On Fri, Jul 20, 2018 at 04:20:01PM +0000, Bart Van Assche wrote: > On Fri, 2018-07-20 at 10:12 -0600, Keith Busch wrote: > > On Fri, Jul 20, 2018 at 04:03:18PM +0000, Bart Van Assche wrote: > > > On Fri, 2018-07-20 at 09:56 -0600, Keith Busch wrote: > > > > SCSI is the only block driver that wants this behavior. Moving it back > > > > to generic where it used to be breaks other block drivers. > > > > > > That's new to me. What would break in the NVMe driver if the above change would be > > > present in the block layer? > > > > This is what causes the block layer to lose completions, and most drivers > > don't want the kernel to lose their completions. > > Hello Keith, > > Have you considered to introduce a fourth state for block layer requests to > avoid that completions that occur while a timeout handler is in progress get > lost? That would avoid that completions get lost not only for the NVMe driver > but also for SCSI drivers. See e.g. the MQ_RQ_TIMED_OUT state in > https://www.mail-archive.com/linux-block@xxxxxxxxxxxxxxx/msg22196.html Yes, I've considered that, and I really want to use it, but scsi may still reference a freed request in scmd_eh_abort_handler that way.