block: do not notify urgent request, when flush with data in flight
MMC device driver implements URGENT request execution with priority (using stop flow), as a result currently running (and prepeared) request may be reinserted back into I/O scheduler. This will break block layer logic of flushes (flush request should not be inserted into I/O scheduler). Block layer flush machinery keep q->flush_data_in_flight list updated with started but not completed flush requests with data (REQ_FUA). This change will not notify underling block device driver about pending urgent request during flushes in flight. Change-Id: I98113621223fe0c7d224de023db888a73bd62b48 Signed-off-by: Konstantin Dorfman <kdorfman@codeaurora.org>
This commit is contained in:
parent
8f2e06ac62
commit
552431dbf2
|
@ -312,7 +312,8 @@ inline void __blk_run_queue_uncond(struct request_queue *q)
|
|||
if (!q->notified_urgent &&
|
||||
q->elevator->type->ops.elevator_is_urgent_fn &&
|
||||
q->urgent_request_fn &&
|
||||
q->elevator->type->ops.elevator_is_urgent_fn(q)) {
|
||||
q->elevator->type->ops.elevator_is_urgent_fn(q) &&
|
||||
list_empty(&q->flush_data_in_flight)) {
|
||||
q->notified_urgent = true;
|
||||
q->urgent_request_fn(q);
|
||||
} else
|
||||
|
|
Loading…
Reference in New Issue