X-Git-Url: https://git.kernel.dk/?p=fio.git;a=blobdiff_plain;f=cgroup.c;h=629047b495b33c145ca545ac4856efdecaf78df5;hp=34b61ded08d0fa5e22527012c979e31163b1b8ec;hb=b153f94a22d86ab342b7cc7a0f1fa5051311f2b4;hpb=fba5c5ff89163062922c3e560e871c087f2177c3 diff --git a/cgroup.c b/cgroup.c index 34b61ded..629047b4 100644 --- a/cgroup.c +++ b/cgroup.c @@ -5,13 +5,12 @@ #include #include #include -#include #include "fio.h" #include "flist.h" #include "cgroup.h" #include "smalloc.h" -static struct fio_mutex *lock; +static struct fio_sem *lock; struct cgroup_member { struct flist_head list; @@ -70,9 +69,9 @@ err: } if (td->o.cgroup_nodelete) cm->cgroup_nodelete = 1; - fio_mutex_down(lock); + fio_sem_down(lock); flist_add_tail(&cm->list, clist); - fio_mutex_up(lock); + fio_sem_up(lock); } void cgroup_kill(struct flist_head *clist) @@ -83,7 +82,7 @@ void cgroup_kill(struct flist_head *clist) if (!lock) return; - fio_mutex_down(lock); + fio_sem_down(lock); flist_for_each_safe(n, tmp, clist) { cm = flist_entry(n, struct cgroup_member, list); @@ -94,7 +93,7 @@ void cgroup_kill(struct flist_head *clist) sfree(cm); } - fio_mutex_up(lock); + fio_sem_up(lock); } static char *get_cgroup_root(struct thread_data *td, char *mnt) @@ -102,9 +101,9 @@ static char *get_cgroup_root(struct thread_data *td, char *mnt) char *str = malloc(64); if (td->o.cgroup) - sprintf(str, "%s%s%s", mnt, FIO_OS_PATH_SEPARATOR, td->o.cgroup); + sprintf(str, "%s/%s", mnt, td->o.cgroup); else - sprintf(str, "%s%s%s", mnt, FIO_OS_PATH_SEPARATOR, td->o.name); + sprintf(str, "%s/%s", mnt, td->o.name); return str; } @@ -116,7 +115,7 @@ static int write_int_to_file(struct thread_data *td, const char *path, char tmp[256]; FILE *f; - sprintf(tmp, "%s%s%s", path, FIO_OS_PATH_SEPARATOR, filename); + sprintf(tmp, "%s/%s", path, filename); f = fopen(tmp, "w"); if (!f) { td_verror(td, errno, onerr); @@ -148,6 +147,9 @@ int cgroup_setup(struct thread_data *td, struct flist_head *clist, char **mnt) { char *root; + if (!clist) + return 1; + if (!*mnt) { *mnt = find_cgroup_mnt(td); if (!*mnt) @@ -198,12 +200,12 @@ void cgroup_shutdown(struct thread_data *td, char **mnt) static void fio_init cgroup_init(void) { - lock = fio_mutex_init(FIO_MUTEX_UNLOCKED); + lock = fio_sem_init(FIO_SEM_UNLOCKED); if (!lock) log_err("fio: failed to allocate cgroup lock\n"); } static void fio_exit cgroup_exit(void) { - fio_mutex_remove(lock); + fio_sem_remove(lock); }