summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDhaval Giani <dhaval@linux.vnet.ibm.com>2009-06-18 19:42:44 +0530
committerDhaval Giani <dhaval@linux.vnet.ibm.com>2009-06-18 19:49:39 +0530
commit89874676e7a84e504e3b2829228c7c3863a6d500 (patch)
treeda9b132b5503ee01d599b67959fecd27d501837f
parent8d21aad52fa6d01148a82656b0e01417eaf4aa30 (diff)
downloadlibcg-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>
-rw-r--r--src/api.c2
-rw-r--r--src/config.c9
-rw-r--r--src/libcgroup-internal.h1
3 files changed, 5 insertions, 7 deletions
diff --git a/src/api.c b/src/api.c
index c84675c..4de06a3 100644
--- 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;
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);
/*