Re: 3.5.0-rc3 - Issue with CFQ and cgroup

From: Paul Rolland
Date: Thu Jun 28 2012 - 03:53:14 EST


Hello,

On Wed, 27 Jun 2012 11:22:02 -0700
Tejun Heo <tj@xxxxxxxxxx> wrote:

> Hello,
>
> > io scheduler noop registered
> Can you please test the following branch?
>
> git://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux-block.git
> for-linus

Well code is the same.... so is the result :

[root@tux ~]# uname -a
Linux tux.DEF.witbe.net 3.5.0-rc4-g6b16351 #1 SMP PREEMPT Thu Jun 28
09:11:07 CEST 2012 x86_64 x86_64 x86_64 GNU/Linux

and

------------[ cut here ]------------
WARNING: at block/blk-cgroup.c:867 blkcg_policy_register+0xb5/0xc0()
Hardware name: Vostro 1520
Modules linked in:
Pid: 1, comm: swapper/0 Not tainted 3.5.0-rc4-g6b16351 #1
Call Trace:
[<ffffffff8103a59a>] warn_slowpath_common+0x7a/0xb0
[<ffffffff81cafbee>] ? deadline_init+0x12/0x12
[<ffffffff8103a5e5>] warn_slowpath_null+0x15/0x20
[<ffffffff8131aab5>] blkcg_policy_register+0xb5/0xc0
[<ffffffff81cafc30>] cfq_init+0x42/0x9f
[<ffffffff810001ba>] do_one_initcall+0x3a/0x160
[<ffffffff81c8ed08>] kernel_init+0x137/0x1bb
[<ffffffff81c8e5c5>] ? do_early_param+0x87/0x87
[<ffffffff8169e954>] kernel_thread_helper+0x4/0x10
[<ffffffff81c8ebd1>] ? start_kernel+0x3b2/0x3b2
[<ffffffff8169e950>] ? gs_change+0xb/0xb
---[ end trace 82bc55f036371117 ]---

and of course cfq is missing in :
[root@tux ~]# cat /sys/block/sda/queue/scheduler
[noop] deadline

Looking at the code, it seems strange that cfq_init requires
blkcg_policy_register to be successfull, wether you have defined
CFQ_CGROUP_IOSCHED or not.

So, I applied the following patch, and I now have:
[root@tux ~]# cat /sys/block/sda/queue/scheduler
noop deadline [cfq]

Not sure this is the correct patch, but at least it works for me (tm) ;)

Signed-Off-by: Paul Rolland <rol@xxxxxxxxxx>

diff -urN block/cfq-iosched.orig block/cfq-iosched.c
--- block/cfq-iosched.orig 2012-06-28 09:39:06.000000000 +0200
+++ block/cfq-iosched.c 2012-06-28 09:39:31.000000000 +0200
@@ -4198,9 +4198,11 @@
cfq_group_idle = 0;
#endif

+#ifdef CONFIG_CFQ_GROUP_IOSCHED
ret = blkcg_policy_register(&blkcg_policy_cfq);
if (ret)
return ret;
+#endif

cfq_pool = KMEM_CACHE(cfq_queue, 0);
if (!cfq_pool)
@@ -4215,7 +4217,9 @@
err_free_pool:
kmem_cache_destroy(cfq_pool);
err_pol_unreg:
+#ifdef CONFIG_CFQ_GROUP_IOSCHED
blkcg_policy_unregister(&blkcg_policy_cfq);
+#endif
return ret;
}


Paul
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/