On Thu, 2018-12-06 at 22:17 -0700, Jens Axboe wrote: +AD4 Instead of making special cases for what we can direct issue, and now +AD4 having to deal with DM solving the livelock while still retaining a BUSY +AD4 condition feedback loop, always just add a request that has been through +AD4 -+AD4-queue+AF8-rq() to the hardware queue dispatch list. These are safe to use +AD4 as no merging can take place there. Additionally, if requests do have +AD4 prepped data from drivers, we aren't dependent on them not sharing space +AD4 in the request structure to safely add them to the IO scheduler lists. How about making blk+AF8-mq+AF8-sched+AF8-insert+AF8-request() complain if a request is passed to it in which the RQF+AF8-DONTPREP flag has been set to avoid that this problem is reintroduced in the future? Otherwise this patch looks fine to me. Bart.