Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+7 −4
Original line number Diff line number Diff line
@@ -140,13 +140,16 @@ static void mq_flush_run(struct work_struct *work)
	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) {
		INIT_WORK(&rq->mq_flush_work, mq_flush_run);
		kblockd_schedule_work(rq->q, &rq->mq_flush_work);
		return false;
	} else {
		if (add_front)
			list_add(&rq->queuelist, &rq->q->queue_head);
		else
			list_add_tail(&rq->queuelist, &rq->q->queue_head);
		return true;
	}
@@ -193,7 +196,7 @@ static bool blk_flush_complete_seq(struct request *rq, unsigned int seq,

	case REQ_FSEQ_DATA:
		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;

	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->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)