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

Commit 63de428b authored by Aaron Carroll's avatar Aaron Carroll Committed by Jens Axboe
Browse files

deadline-iosched: allow non-sequential batching



Deadline currently only batches sector-contiguous requests, so except
for a few circumstances (e.g. requests in a single direction), it is
essentially first come first served.  This is bad for throughput, so
change it to CSCAN, which means requests in a batch do not need to be
sequential and are issued in increasing sector order.

Signed-off-by: default avatarAaron Carroll <aaronc@gelato.unsw.edu.au>
Signed-off-by: default avatarJens Axboe <jens.axboe@oracle.com>
parent 766ca442
Loading
Loading
Loading
Loading
+3 −11
Original line number Diff line number Diff line
@@ -258,17 +258,9 @@ static int deadline_dispatch_requests(struct request_queue *q, int force)
	else
		rq = dd->next_rq[READ];

	if (rq) {
		/* we have a "next request" */
		
		if (dd->last_sector != rq->sector)
			/* end the batch on a non sequential request */
			dd->batching += dd->fifo_batch;
		
		if (dd->batching < dd->fifo_batch)
			/* we are still entitled to batch */
	if (rq && dd->batching < dd->fifo_batch)
		/* we have a next request are still entitled to batch */
		goto dispatch_request;
	}

	/*
	 * at this point we are not running a batch. select the appropriate