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

Commit 229836bd authored by Namhyung Kim's avatar Namhyung Kim Committed by Jens Axboe
Browse files

cfq-iosched: reduce bit operations in cfq_choose_req()



Reduce the number of bit operations in cfq_choose_req() on average
(and worst) cases.

Signed-off-by: default avatarNamhyung Kim <namhyung@gmail.com>
Signed-off-by: default avatarJens Axboe <jaxboe@fusionio.com>
parent b9f8ce05
Loading
Loading
Loading
Loading
+5 −9
Original line number Diff line number Diff line
@@ -667,15 +667,11 @@ cfq_choose_req(struct cfq_data *cfqd, struct request *rq1, struct request *rq2,
	if (rq2 == NULL)
		return rq1;

	if (rq_is_sync(rq1) && !rq_is_sync(rq2))
		return rq1;
	else if (rq_is_sync(rq2) && !rq_is_sync(rq1))
		return rq2;
	if ((rq1->cmd_flags & REQ_META) && !(rq2->cmd_flags & REQ_META))
		return rq1;
	else if ((rq2->cmd_flags & REQ_META) &&
		 !(rq1->cmd_flags & REQ_META))
		return rq2;
	if (rq_is_sync(rq1) != rq_is_sync(rq2))
		return rq_is_sync(rq1) ? rq1 : rq2;

	if ((rq1->cmd_flags ^ rq2->cmd_flags) & REQ_META)
		return rq1->cmd_flags & REQ_META ? rq1 : rq2;

	s1 = blk_rq_pos(rq1);
	s2 = blk_rq_pos(rq2);