On Wed, 2018-07-18 at 11:45 -0600, Keith Busch wrote: +AD4- On Wed, Jul 18, 2018 at 05:18:45PM +-0000, Bart Van Assche wrote: +AD4- +AD4- On Wed, 2018-07-18 at 11:00 -0600, Keith Busch wrote: +AD4- +AD4- +AD4- - cancel+AF8-work+AF8-sync(+ACY-q-+AD4-timeout+AF8-work)+ADs- +AD4- +AD4- +AD4- - +AD4- +AD4- +AD4- if (q-+AD4-mq+AF8-ops) +AHs- +AD4- +AD4- +AD4- struct blk+AF8-mq+AF8-hw+AF8-ctx +ACo-hctx+ADs- +AD4- +AD4- +AD4- int i+ADs- +AD4- +AD4- +AD4- +AEAAQA- -415,6 +-412,8 +AEAAQA- void blk+AF8-sync+AF8-queue(struct request+AF8-queue +ACo-q) +AD4- +AD4- +AD4- queue+AF8-for+AF8-each+AF8-hw+AF8-ctx(q, hctx, i) +AD4- +AD4- +AD4- cancel+AF8-delayed+AF8-work+AF8-sync(+ACY-hctx-+AD4-run+AF8-work)+ADs- +AD4- +AD4- +AD4- +AH0- else +AHs- +AD4- +AD4- +AD4- +- del+AF8-timer+AF8-sync(+ACY-q-+AD4-timeout)+ADs- +AD4- +AD4- +AD4- +- cancel+AF8-work+AF8-sync(+ACY-q-+AD4-timeout+AF8-work)+ADs- +AD4- +AD4- +AD4- cancel+AF8-delayed+AF8-work+AF8-sync(+ACY-q-+AD4-delay+AF8-work)+ADs- +AD4- +AD4- +AD4- +AH0- +AD4- +AD4- +AD4- +AH0- +AD4- +AD4- +AD4- +AD4- What is the impact of this change on the md driver, which is the only driver +AD4- +AD4- that calls blk+AF8-sync+AF8-queue() directly? What will happen if timeout processing +AD4- +AD4- happens concurrently with or after blk+AF8-sync+AF8-queue() has returned? +AD4- +AD4- That's a make+AF8-request+AF8-fn stacking driver, right? There should be +AD4- no impact in that case, since the change above affects only mq. +AD4- +AD4- I'm actually a little puzzled why md calls blk+AF8-sync+AF8-queue. Are the +AD4- queue timers ever used for bio-based drivers? Hello Keith, For all md drivers that I verified calling md+AF8-make+AF8-request() triggers one or more generic+AF8-make+AF8-request() calls for the underlying devices. So it's not clear to me why the md driver calls blk+AF8-sync+AF8-queue(). Bart.