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

Commit 22e2c507 authored by Jens Axboe's avatar Jens Axboe Committed by Linus Torvalds
Browse files

[PATCH] Update cfq io scheduler to time sliced design



This updates the CFQ io scheduler to the new time sliced design (cfq
v3).  It provides full process fairness, while giving excellent
aggregate system throughput even for many competing processes.  It
supports io priorities, either inherited from the cpu nice value or set
directly with the ioprio_get/set syscalls.  The latter closely mimic
set/getpriority.

This import is based on my latest from -mm.

Signed-off-by: default avatarJens Axboe <axboe@suse.de>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 020f46a3
Loading
Loading
Loading
Loading
+2 −0
Original line number Original line Diff line number Diff line
@@ -289,3 +289,5 @@ ENTRY(sys_call_table)
	.long sys_add_key
	.long sys_add_key
	.long sys_request_key
	.long sys_request_key
	.long sys_keyctl
	.long sys_keyctl
	.long sys_ioprio_set
	.long sys_ioprio_get		/* 290 */
+2 −2
Original line number Original line Diff line number Diff line
@@ -1577,8 +1577,8 @@ sys_call_table:
	data8 sys_add_key
	data8 sys_add_key
	data8 sys_request_key
	data8 sys_request_key
	data8 sys_keyctl
	data8 sys_keyctl
	data8 sys_ni_syscall
	data8 sys_ioprio_set
	data8 sys_ni_syscall			// 1275
	data8 sys_ioprio_get			// 1275
	data8 sys_set_zone_reclaim
	data8 sys_set_zone_reclaim
	data8 sys_ni_syscall
	data8 sys_ni_syscall
	data8 sys_ni_syscall
	data8 sys_ni_syscall
+2 −0
Original line number Original line Diff line number Diff line
@@ -1449,3 +1449,5 @@ _GLOBAL(sys_call_table)
	.long sys_request_key		/* 270 */
	.long sys_request_key		/* 270 */
	.long sys_keyctl
	.long sys_keyctl
	.long sys_waitid
	.long sys_waitid
	.long sys_ioprio_set
	.long sys_ioprio_get
+3 −2
Original line number Original line Diff line number Diff line
@@ -1806,7 +1806,8 @@ static void as_put_request(request_queue_t *q, struct request *rq)
	rq->elevator_private = NULL;
	rq->elevator_private = NULL;
}
}


static int as_set_request(request_queue_t *q, struct request *rq, int gfp_mask)
static int as_set_request(request_queue_t *q, struct request *rq,
			  struct bio *bio, int gfp_mask)
{
{
	struct as_data *ad = q->elevator->elevator_data;
	struct as_data *ad = q->elevator->elevator_data;
	struct as_rq *arq = mempool_alloc(ad->arq_pool, gfp_mask);
	struct as_rq *arq = mempool_alloc(ad->arq_pool, gfp_mask);
@@ -1827,7 +1828,7 @@ static int as_set_request(request_queue_t *q, struct request *rq, int gfp_mask)
	return 1;
	return 1;
}
}


static int as_may_queue(request_queue_t *q, int rw)
static int as_may_queue(request_queue_t *q, int rw, struct bio *bio)
{
{
	int ret = ELV_MQUEUE_MAY;
	int ret = ELV_MQUEUE_MAY;
	struct as_data *ad = q->elevator->elevator_data;
	struct as_data *ad = q->elevator->elevator_data;
+1276 −634

File changed.

Preview size limit exceeded, changes collapsed.

Loading