On Fri, 2018-07-27 at 10:57 -0600, Keith Busch wrote: +AD4- You skip that code if the driver returns BLK+AF8-EH+AF8-DONT+AF8-RESET+AF8-TIMER. How about applying the following patch on top of this series? diff --git a/block/blk-mq.c b/block/blk-mq.c index a97ab5ba9d18..aa66535604fd 100644 --- a/block/blk-mq.c +-+-+- b/block/blk-mq.c +AEAAQA- -854,10 +-854,10 +AEAAQA- static void blk+AF8-mq+AF8-rq+AF8-timed+AF8-out(struct request +ACo-req, bool reserved) +ACo- latter case, if blk+AF8-mq+AF8-complete+AF8-request() was called while +ACo- the timeout handler was in progress, ignore that call. +ACo-/ - if (ret +AD0APQ- BLK+AF8-EH+AF8-DONT+AF8-RESET+AF8-TIMER) - return+ADs- - WARN+AF8-ON+AF8-ONCE(ret +ACEAPQ- BLK+AF8-EH+AF8-RESET+AF8-TIMER)+ADs- - blk+AF8-mq+AF8-add+AF8-timer(req)+ADs- +- if (ret +AD0APQ- BLK+AF8-EH+AF8-RESET+AF8-TIMER) +- blk+AF8-mq+AF8-add+AF8-timer(req)+ADs- +- else +- WARN+AF8-ON+AF8-ONCE(ret +ACEAPQ- BLK+AF8-EH+AF8-DONT+AF8-RESET+AF8-TIMER)+ADs- again: if (blk+AF8-mq+AF8-change+AF8-rq+AF8-state(req, MQ+AF8-RQ+AF8-TIMED+AF8-OUT, MQ+AF8-RQ+AF8-IN+AF8-FLIGHT)) return+ADs- Bart.