mirror of https://gitee.com/openkylin/linux.git
Revert "blk-flush: Queue through IO scheduler when flush not required"
This reverts commit1b2ff19e6a
. Jan writes: -- Thanks for report! After some investigation I found out we allocate elevator specific data in __get_request() only for non-flush requests. And this is actually required since the flush machinery uses the space in struct request for something else. Doh. So my patch is just wrong and not easy to fix since at the time __get_request() is called we are not sure whether the flush machinery will be used in the end. Jens, please revert1b2ff19e6a
. Thanks! I'm somewhat surprised that you can reliably hit the race where flushing gets disabled for the device just while the request is in flight. But I guess during boot it makes some sense. -- So let's just revert it, we can fix the queue run manually after the fact. This race is rare enough that it didn't trigger in testing, it requires the specific disable-while-in-flight scenario to trigger.
This commit is contained in:
parent
55ce0da1da
commit
dcd8376c36
|
@ -422,7 +422,7 @@ void blk_insert_flush(struct request *rq)
|
|||
if (q->mq_ops) {
|
||||
blk_mq_insert_request(rq, false, false, true);
|
||||
} else
|
||||
q->elevator->type->ops.elevator_add_req_fn(q, rq);
|
||||
list_add_tail(&rq->queuelist, &q->queue_head);
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue