2011-05-23 14:55:43

by Vivek Goyal

[permalink] [raw]
Subject: [PATCH] blk-cgroup: Initialize ioc->cgroup_changed at ioc creation time

If we don't explicitly initialize it to zero, CFQ might think that
cgroup of ioc has changed and it generates lots of unnecessary calls
to call_for_each_cic(changed_cgroup). Fix it.

cfq_get_io_context()
cfq_ioc_set_cgroup()
call_for_each_cic(ioc, changed_cgroup)

Signed-off-by: Vivek Goyal <[email protected]>
---
block/blk-ioc.c | 3 +++
1 file changed, 3 insertions(+)

Index: linux-2.6-block/block/blk-ioc.c
===================================================================
--- linux-2.6-block.orig/block/blk-ioc.c 2011-03-08 09:40:58.057296008 -0500
+++ linux-2.6-block/block/blk-ioc.c 2011-05-23 10:33:51.875994035 -0400
@@ -96,6 +96,9 @@ struct io_context *alloc_io_context(gfp_
INIT_RADIX_TREE(&ret->radix_root, GFP_ATOMIC | __GFP_HIGH);
INIT_HLIST_HEAD(&ret->cic_list);
ret->ioc_data = NULL;
+#if defined(CONFIG_BLK_CGROUP) || defined(CONFIG_BLK_CGROUP_MODULE)
+ ret->cgroup_changed = 0;
+#endif
}

return ret;


2011-05-23 17:36:07

by Jens Axboe

[permalink] [raw]
Subject: Re: [PATCH] blk-cgroup: Initialize ioc->cgroup_changed at ioc creation time

On 2011-05-23 16:55, Vivek Goyal wrote:
> If we don't explicitly initialize it to zero, CFQ might think that
> cgroup of ioc has changed and it generates lots of unnecessary calls
> to call_for_each_cic(changed_cgroup). Fix it.
>
> cfq_get_io_context()
> cfq_ioc_set_cgroup()
> call_for_each_cic(ioc, changed_cgroup)

Thanks Vivek, applied.

--
Jens Axboe