On Fri, 2018-12-07 at 09:35 -0700, Jens Axboe wrote: +AD4 diff --git a/block/blk-mq-sched.c b/block/blk-mq-sched.c +AD4 index 29bfe8017a2d..9e5bda8800f8 100644 +AD4 --- a/block/blk-mq-sched.c +AD4 +-+-+- b/block/blk-mq-sched.c +AD4 +AEAAQA -377,6 +-377,16 +AEAAQA void blk+AF8-mq+AF8-sched+AF8-insert+AF8-request(struct request +ACo-rq, bool at+AF8-head, +AD4 +AD4 WARN+AF8-ON(e +ACYAJg (rq-+AD4-tag +ACEAPQ -1))+ADs +AD4 +AD4 +- /+ACo +AD4 +- +ACo It's illegal to insert a request into the scheduler that has +AD4 +- +ACo been through -+AD4-queue+AF8-rq(). Warn for that case, and use a bypass +AD4 +- +ACo insert to be safe. +AD4 +- +ACo-/ Shouldn't this refer to requests that have been prepared instead of requests that have been through -+AD4-queue+AF8-rq()? I think this function is called for requests that are requeued. Requeued requests have been through -+AD4-queue+AF8-rq() but are unprepared before being requeued. Thanks, Bart.