On Fri, 2018-07-20 at 10:12 -0600, Keith Busch wrote: +AD4- On Fri, Jul 20, 2018 at 04:03:18PM +-0000, Bart Van Assche wrote: +AD4- +AD4- On Fri, 2018-07-20 at 09:56 -0600, Keith Busch wrote: +AD4- +AD4- +AD4- SCSI is the only block driver that wants this behavior. Moving it back +AD4- +AD4- +AD4- to generic where it used to be breaks other block drivers. +AD4- +AD4- +AD4- +AD4- That's new to me. What would break in the NVMe driver if the above change would be +AD4- +AD4- present in the block layer? +AD4- +AD4- This is what causes the block layer to lose completions, and most drivers +AD4- 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+AF8-RQ+AF8-TIMED+AF8-OUT state in https://www.mail-archive.com/linux-block+AEA-vger.kernel.org/msg22196.html Thanks, Bart.