Skip to content

Commit 10beafc

Browse files
Mike Snitzeraxboe
authored andcommitted
block: change flush sequence list addition back to front add
Commit 1874198 inadvertently changed the rq flush insertion from a head to a tail insertion. Fix that back up. Signed-off-by: Mike Snitzer <[email protected]> Signed-off-by: Jens Axboe <[email protected]>
1 parent 7982e90 commit 10beafc

File tree

1 file changed

+7
-4
lines changed

1 file changed

+7
-4
lines changed

block/blk-flush.c

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -140,14 +140,17 @@ static void mq_flush_run(struct work_struct *work)
140140
blk_mq_insert_request(rq, false, true, false);
141141
}
142142

143-
static bool blk_flush_queue_rq(struct request *rq)
143+
static bool blk_flush_queue_rq(struct request *rq, bool add_front)
144144
{
145145
if (rq->q->mq_ops) {
146146
INIT_WORK(&rq->mq_flush_work, mq_flush_run);
147147
kblockd_schedule_work(rq->q, &rq->mq_flush_work);
148148
return false;
149149
} else {
150-
list_add_tail(&rq->queuelist, &rq->q->queue_head);
150+
if (add_front)
151+
list_add(&rq->queuelist, &rq->q->queue_head);
152+
else
153+
list_add_tail(&rq->queuelist, &rq->q->queue_head);
151154
return true;
152155
}
153156
}
@@ -193,7 +196,7 @@ static bool blk_flush_complete_seq(struct request *rq, unsigned int seq,
193196

194197
case REQ_FSEQ_DATA:
195198
list_move_tail(&rq->flush.list, &q->flush_data_in_flight);
196-
queued = blk_flush_queue_rq(rq);
199+
queued = blk_flush_queue_rq(rq, true);
197200
break;
198201

199202
case REQ_FSEQ_DONE:
@@ -326,7 +329,7 @@ static bool blk_kick_flush(struct request_queue *q)
326329
q->flush_rq->rq_disk = first_rq->rq_disk;
327330
q->flush_rq->end_io = flush_end_io;
328331

329-
return blk_flush_queue_rq(q->flush_rq);
332+
return blk_flush_queue_rq(q->flush_rq, false);
330333
}
331334

332335
static void flush_data_end_io(struct request *rq, int error)

0 commit comments

Comments
 (0)