From 3858bf9eb509136b800cda1a08247e9c0ff167b9 Mon Sep 17 00:00:00 2001 From: Jens Axboe Date: Fri, 4 Dec 2009 19:26:22 +0100 Subject: [PATCH] cgroup cleanups/fixes Signed-off-by: Jens Axboe --- cgroup.c | 48 ++++++++++++++++++++++++------------------------ 1 file 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) -- 2.25.1