Commit 10beafc1 authored by Mike Snitzer's avatar Mike Snitzer Committed by Jens Axboe

block: change flush sequence list addition back to front add

Commit 18741986 inadvertently changed the rq flush insertion
from a head to a tail insertion. Fix that back up.
Signed-off-by: default avatarMike Snitzer <msnitzer@redhat.com>
Signed-off-by: default avatarJens Axboe <axboe@fb.com>
parent 7982e90c
...@@ -140,14 +140,17 @@ static void mq_flush_run(struct work_struct *work) ...@@ -140,14 +140,17 @@ static void mq_flush_run(struct work_struct *work)
blk_mq_insert_request(rq, false, true, false); blk_mq_insert_request(rq, false, true, false);
} }
static bool blk_flush_queue_rq(struct request *rq) static bool blk_flush_queue_rq(struct request *rq, bool add_front)
{ {
if (rq->q->mq_ops) { if (rq->q->mq_ops) {
INIT_WORK(&rq->mq_flush_work, mq_flush_run); INIT_WORK(&rq->mq_flush_work, mq_flush_run);
kblockd_schedule_work(rq->q, &rq->mq_flush_work); kblockd_schedule_work(rq->q, &rq->mq_flush_work);
return false; return false;
} else { } else {
list_add_tail(&rq->queuelist, &rq->q->queue_head); if (add_front)
list_add(&rq->queuelist, &rq->q->queue_head);
else
list_add_tail(&rq->queuelist, &rq->q->queue_head);
return true; return true;
} }
} }
...@@ -193,7 +196,7 @@ static bool blk_flush_complete_seq(struct request *rq, unsigned int seq, ...@@ -193,7 +196,7 @@ static bool blk_flush_complete_seq(struct request *rq, unsigned int seq,
case REQ_FSEQ_DATA: case REQ_FSEQ_DATA:
list_move_tail(&rq->flush.list, &q->flush_data_in_flight); list_move_tail(&rq->flush.list, &q->flush_data_in_flight);
queued = blk_flush_queue_rq(rq); queued = blk_flush_queue_rq(rq, true);
break; break;
case REQ_FSEQ_DONE: case REQ_FSEQ_DONE:
...@@ -326,7 +329,7 @@ static bool blk_kick_flush(struct request_queue *q) ...@@ -326,7 +329,7 @@ static bool blk_kick_flush(struct request_queue *q)
q->flush_rq->rq_disk = first_rq->rq_disk; q->flush_rq->rq_disk = first_rq->rq_disk;
q->flush_rq->end_io = flush_end_io; q->flush_rq->end_io = flush_end_io;
return blk_flush_queue_rq(q->flush_rq); return blk_flush_queue_rq(q->flush_rq, false);
} }
static void flush_data_end_io(struct request *rq, int error) static void flush_data_end_io(struct request *rq, int error)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment