]> git.ipfire.org Git - thirdparty/libcgroup.git/commitdiff
cgconfigparser: Change mkdir in cgroup_config_mount_fs to mkdir -p
authorDhaval Giani <dhaval@linux.vnet.ibm.com>
Thu, 18 Jun 2009 14:12:44 +0000 (19:42 +0530)
committerDhaval Giani <dhaval@linux.vnet.ibm.com>
Thu, 18 Jun 2009 14:19:39 +0000 (19:49 +0530)
https://bugzilla.redhat.com/show_bug.cgi?id=502687 mentioned that the directory
was not getting created when a cgconfig start was being run.

This is was because we failed the mkdir. The mkdir for directories at depth
was not succeeding.

Signed-off-by: Dhaval Giani <dhaval@linux.vnet.ibm.com>
Acked-by: Balbir Singh <balbir@linux.vnet.ibm.com>
src/api.c
src/config.c
src/libcgroup-internal.h

index c84675cb8d8c740cf3541d4245d22779e4b79595..4de06a3582eb9d9117cf701f8e2ac212c89b2afc 100644 (file)
--- a/src/api.c
+++ b/src/api.c
@@ -890,7 +890,7 @@ int cgroup_attach_task(struct cgroup *cgroup)
  * cg_mkdir_p, emulate the mkdir -p command (recursively creating paths)
  * @path: path to create
  */
-static int cg_mkdir_p(const char *path)
+int cg_mkdir_p(const char *path)
 {
        char *real_path = NULL;
        char *wd = NULL;
index a93fccee042de7f1bb85184d8fe0494c07936ced..5706e1dd6fe2236ba19a06e4bc6b0835dc3af9b1 100644 (file)
@@ -371,12 +371,9 @@ int cgroup_config_mount_fs()
                }
 
                if (errno == ENOENT) {
-                       ret = mkdir(curr->path,
-                                       S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);
-                       if (ret < 0) {
-                               last_errno = errno;
-                               return ECGOTHER;
-                       }
+                       ret = cg_mkdir_p(curr->path);
+                       if (ret)
+                               return ret;
                } else if (!S_ISDIR(buff.st_mode)) {
                        errno = ENOTDIR;
                        last_errno = errno;
index a80ae389bdc32f9b09594445a8be1f55e3a29366..705ac8824e4baace7d8c173a2a8abf99d15af26c 100644 (file)
@@ -91,6 +91,7 @@ struct cgroup_rule_list {
 /* Internal API */
 char *cg_build_path(char *name, char *path, char *type);
 int cgroup_get_uid_gid_from_procfs(pid_t pid, uid_t *euid, gid_t *egid);
+int cg_mkdir_p(const char *path);
 
 
 /*