summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2011-03-15 21:21:38 +0100
committerLennart Poettering <lennart@poettering.net>2011-03-15 21:21:38 +0100
commit0ac10822732008aa2c0af7a0499c838446ac0a82 (patch)
treef501494a0c636f67ebb2d558b328843242472384
parent8f7a3c1402a8de36b2c63935358a53510d2fe7c1 (diff)
cgroup: don't recheck all the time whether the systemd hierarchy is mounted, to make strace outputs nicer and save a few stat()s
-rw-r--r--src/cgroup-util.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/src/cgroup-util.c b/src/cgroup-util.c
index bbadc789a1..090573bd31 100644
--- a/src/cgroup-util.c
+++ b/src/cgroup-util.c
@@ -484,6 +484,7 @@ int cg_get_path(const char *controller, const char *path, const char *suffix, ch
const char *p;
char *mp;
int r;
+ static __thread bool good = false;
assert(controller);
assert(fs);
@@ -504,9 +505,14 @@ int cg_get_path(const char *controller, const char *path, const char *suffix, ch
if (asprintf(&mp, "/sys/fs/cgroup/%s", p) < 0)
return -ENOMEM;
- if ((r = path_is_mount_point(mp)) <= 0) {
- free(mp);
- return r < 0 ? r : -ENOENT;
+ if (!good) {
+ if ((r = path_is_mount_point(mp)) <= 0) {
+ free(mp);
+ return r < 0 ? r : -ENOENT;
+ }
+
+ /* Cache this to save a few stat()s */
+ good = true;
}
if (path && suffix)