Messages in this thread Patch in this message | | | Date | Fri, 27 Mar 2009 16:30:50 +0800 | From | Gui Jianfeng <> | Subject | [PATCH] IO Controller: Don't store the pid in single queue circumstances |
| |
Vivek Goyal wrote: ... > +int elv_init_ioq(struct elevator_queue *eq, struct io_queue *ioq, > + void *sched_queue, int ioprio_class, int ioprio, > + int is_sync) > +{ > + struct elv_fq_data *efqd = &eq->efqd; > + struct io_group *iog = io_lookup_io_group_current(efqd->queue); > + > + RB_CLEAR_NODE(&ioq->entity.rb_node); > + atomic_set(&ioq->ref, 0); > + ioq->efqd = efqd; > + ioq->entity.budget = efqd->elv_slice[is_sync]; > + elv_ioq_set_ioprio_class(ioq, ioprio_class); > + elv_ioq_set_ioprio(ioq, ioprio); > + ioq->pid = current->pid;
Hi Vivek,
Storing a pid in single queue circumstances doesn't make sence. So just store the pid when cfq is used.
Signed-off-by: Gui Jianfeng <guijianfeng@cn.fujitsu.com> --- block/elevator-fq.c | 5 ++++- 1 files changed, 4 insertions(+), 1 deletions(-)
diff --git a/block/elevator-fq.c b/block/elevator-fq.c index df53418..c72f7e6 100644 --- a/block/elevator-fq.c +++ b/block/elevator-fq.c @@ -1988,7 +1988,10 @@ int elv_init_ioq(struct elevator_queue *eq, struct io_queue *ioq, ioq->entity.budget = efqd->elv_slice[is_sync]; elv_ioq_set_ioprio_class(ioq, ioprio_class); elv_ioq_set_ioprio(ioq, ioprio); - ioq->pid = current->pid; + if (elv_iosched_single_ioq(eq)) + ioq->pid = 0; + else + ioq->pid = current->pid; ioq->sched_queue = sched_queue; /* If generic idle logic is enabled, mark it */ -- 1.5.4.rc3
| |