Support base in vserver-stat
authorDaniel Hokka Zakrisson <daniel@hozac.com>
Fri, 18 Mar 2011 13:07:54 +0000 (14:07 +0100)
committerDaniel Hokka Zakrisson <daniel@hozac.com>
Fri, 18 Mar 2011 13:07:54 +0000 (14:07 +0100)
src/vserver-stat.c

index 43e15f3..269edb0 100644 (file)
@@ -308,7 +308,7 @@ registerXidCgroups(struct Vector *vec, struct process_info *process)
     int                                cpu;
     char                       vhi_name[65],
                                filename[128],
-                               cgroup[65],
+                               cgroup[129],
                                buf[30];
     int                                fd;
     ssize_t                    cgroup_len;
@@ -347,6 +347,21 @@ registerXidCgroups(struct Vector *vec, struct process_info *process)
       cgroup[cgroup_len] = 0;
     }
 
+    if ((fd = open(DEFAULTCONFDIR "/cgroup/base", O_RDONLY)) != -1) {
+      len = read(fd, cgroup + cgroup_len, sizeof(cgroup) - cgroup_len);
+      if (len == -1) {
+        perror("read(cgroup/base)");
+        return;
+      }
+      close(fd);
+      cgroup_len += len;
+      if (cgroup[cgroup_len - 1] != '/') {
+        cgroup[cgroup_len] = '/';
+        cgroup_len += 1;
+      }
+      cgroup[cgroup_len] = 0;
+    }
+
     len = strlen(vhi_name);
     if ((len + sizeof("/cgroup/name")) >= sizeof(filename)) {
       WRITE_MSG(2, "too long context name: ");