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 Original line 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);
	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 {
		if (add_front)
			list_add(&rq->queuelist, &rq->q->queue_head);
		else
			list_add_tail(&rq->queuelist, &rq->q->queue_head);
			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)