On Wed, 2018-07-18 at 15:17 -0600, Keith Busch wrote: +AD4- There are not that many blk-mq drivers, so we can go through them all. I'm not sure that's the right approach. I think it is the responsibility of the block layer to handle races between completion handling and timeout handling and that this is not the responsibility of e.g. a block driver. If you look at e.g. the legacy block layer then you will see that it takes care of this race and that legacy block drivers do not have to worry about this race. Bart.