diff options
author | Dhaval Giani <dhaval@linux.vnet.ibm.com> | 2009-06-18 19:42:44 +0530 |
---|---|---|
committer | Dhaval Giani <dhaval@linux.vnet.ibm.com> | 2009-06-18 19:49:39 +0530 |
commit | 89874676e7a84e504e3b2829228c7c3863a6d500 (patch) | |
tree | da9b132b5503ee01d599b67959fecd27d501837f /src | |
parent | 8d21aad52fa6d01148a82656b0e01417eaf4aa30 (diff) | |
download | libcg-89874676e7a84e504e3b2829228c7c3863a6d500.tar.gz libcg-89874676e7a84e504e3b2829228c7c3863a6d500.tar.xz libcg-89874676e7a84e504e3b2829228c7c3863a6d500.zip |
cgconfigparser: Change mkdir in cgroup_config_mount_fs to mkdir -p
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>
Diffstat (limited to 'src')
-rw-r--r-- | src/api.c | 2 | ||||
-rw-r--r-- | src/config.c | 9 | ||||
-rw-r--r-- | src/libcgroup-internal.h | 1 |
3 files changed, 5 insertions, 7 deletions
@@ -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; diff --git a/src/config.c b/src/config.c index a93fcce..5706e1d 100644 --- a/src/config.c +++ b/src/config.c @@ -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; diff --git a/src/libcgroup-internal.h b/src/libcgroup-internal.h index a80ae38..705ac88 100644 --- a/src/libcgroup-internal.h +++ b/src/libcgroup-internal.h @@ -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); /* |