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: Mike Snitzer <msnitzer@redhat.com>
Signed-off-by: Jens Axboe <axboe@fb.com>
This commit is contained in:
parent
7982e90c3a
commit
10beafc190
|
@ -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,
|
||||||
|
|
||||||
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)
|
||||||
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)
|
||||||
|
|
Loading…
Reference in New Issue