On Tue, 2012-05-22 at 13:12 +0200, Lennart Poettering wrote: > > Hmm, this is misleading. THis has little to do with being ready, as the > cgroup VFS are mounted synchronously very early in PID 1 and it is > basically very hard to run in parallel with that. > > So this check actually would check for something different: whether the > system was booted with systemd at all, and whether the respective cgroup > controller has been enabled in the kernel at all. But for the former an > excplicit early check for sd_booted() would probably a nicer choice > (though I must say I shiver at the idea that we add this to all our > tools). And for the latter we should probably fix things so that the > tool works fine even if cpuacct, memory and blkio (or any subset of them > are not available), after all those controllers should be optional. > > How did you start cgtop so that you ran into this problem? > > Lennart > Amazingly enough, cgtop works just fine if we just silently ignore the missing ones here.
-- -Shawn Landden
>From f13e3be6ce9460016958f02877295fcfb2f1abf3 Mon Sep 17 00:00:00 2001 From: Shawn Landden <[email protected]> Date: Mon, 21 May 2012 22:54:41 -0700 Subject: [PATCH] cgtop: work even if not all cgroups are available cgtop quits on startup if all the cgroup mounts it expects are not available. Just continue without nonexistant ones. --- src/cgtop/cgtop.c | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/cgtop/cgtop.c b/src/cgtop/cgtop.c index ddb5709..f988adb 100644 --- a/src/cgtop/cgtop.c +++ b/src/cgtop/cgtop.c @@ -341,17 +341,22 @@ static int refresh(Hashmap *a, Hashmap *b, unsigned iteration) { r = refresh_one("name=systemd", "/", a, b, iteration, 0); if (r < 0) - return r; - + if (r != -ENOENT) + return r; r = refresh_one("cpuacct", "/", a, b, iteration, 0); if (r < 0) - return r; - + if (r != -ENOENT) + return r; r = refresh_one("memory", "/", a, b, iteration, 0); if (r < 0) - return r; + if (r != -ENOENT) + return r; - return refresh_one("blkio", "/", a, b, iteration, 0); + r = refresh_one("blkio", "/", a, b, iteration, 0); + if (r < 0) + if (r != -ENOENT) + return r; + return 0; } static int group_compare(const void*a, const void *b) { -- 1.7.9.5
_______________________________________________ systemd-devel mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/systemd-devel
