summaryrefslogtreecommitdiff
path: root/cgroup.c
diff options
context:
space:
mode:
authorJens Axboe <jens.axboe@oracle.com>2009-12-04 19:26:22 +0100
committerJens Axboe <jens.axboe@oracle.com>2009-12-04 19:26:22 +0100
commit3858bf9eb509136b800cda1a08247e9c0ff167b9 (patch)
treee557282f1f2e920fafab33389bda6d5ca34bb839 /cgroup.c
parent39f22027248f658ade599e89c2fe6afae02ac9d7 (diff)
downloadfio-3858bf9eb509136b800cda1a08247e9c0ff167b9.tar.gz
cgroup cleanups/fixes
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
Diffstat (limited to 'cgroup.c')
-rw-r--r--cgroup.c48
1 files changed, 24 insertions, 24 deletions
diff --git a/cgroup.c b/cgroup.c
index b0c7ea20..417c50be 100644
--- a/cgroup.c
+++ b/cgroup.c
@@ -82,15 +82,11 @@ static char *get_cgroup_root(struct thread_data *td)
return str;
}
-/*
- * Add pid to given class
- */
-static int cgroup_add_pid(struct thread_data *td)
+static int cgroup_write_pid(struct thread_data *td, const char *root)
{
- char *root, tmp[256];
+ char tmp[256];
FILE *f;
-
- root = get_cgroup_root(td);
+
sprintf(tmp, "%s/tasks", root);
f = fopen(tmp, "w");
if (!f) {
@@ -100,30 +96,31 @@ static int cgroup_add_pid(struct thread_data *td)
fprintf(f, "%d", td->pid);
fclose(f);
- free(root);
return 0;
+
}
/*
- * Move pid to root class
+ * Add pid to given class
*/
-static int cgroup_del_pid(struct thread_data *td)
+static int cgroup_add_pid(struct thread_data *td)
{
- char tmp[256];
- FILE *f;
-
- sprintf(tmp, "%s/tasks", td->o.cgroup_root);
- f = fopen(tmp, "w");
- if (!f) {
- td_verror(td, errno, "cgroup open tasks");
- return 1;
- }
+ char *root;
+ int ret;
- fprintf(f, "%d", td->pid);
- fclose(f);
- return 0;
+ root = get_cgroup_root(td);
+ ret = cgroup_write_pid(td, root);
+ free(root);
+ return ret;
}
+/*
+ * Move pid to root class
+ */
+static int cgroup_del_pid(struct thread_data *td)
+{
+ return cgroup_write_pid(td, td->o.cgroup_root);
+}
int cgroup_setup(struct thread_data *td)
{
@@ -145,7 +142,7 @@ int cgroup_setup(struct thread_data *td)
if (__e != EEXIST) {
td_verror(td, __e, "cgroup mkdir");
- return 1;
+ goto err;
}
} else
add_cgroup(root);
@@ -155,7 +152,7 @@ int cgroup_setup(struct thread_data *td)
f = fopen(tmp, "w");
if (!f) {
td_verror(td, errno, "cgroup open weight");
- return 1;
+ goto err;
}
fprintf(f, "%d", td->o.cgroup_weight);
@@ -168,6 +165,9 @@ int cgroup_setup(struct thread_data *td)
return 1;
return 0;
+err:
+ free(root);
+ return 1;
}
void cgroup_shutdown(struct thread_data *td)