X-Git-Url: https://git.kernel.dk/?a=blobdiff_plain;f=backend.c;h=b28c3dbc4fd65fdf71b3ad4581a9b27e9aac7511;hb=1612c4a5eea3bc09f6f94115b028320bbc32ce4b;hp=d82d49487c84991b8105508cd419cd557b58182b;hpb=971caeb177d3bc4f65fa31381bbfb83710bfc690;p=fio.git diff --git a/backend.c b/backend.c index d82d4948..b28c3dbc 100644 --- a/backend.c +++ b/backend.c @@ -22,29 +22,17 @@ * */ #include -#include #include -#include #include -#include -#include #include -#include #include #include #include -#include -#include #include #include "fio.h" -#ifndef FIO_NO_HAVE_SHM_H -#include -#endif -#include "hash.h" #include "smalloc.h" #include "verify.h" -#include "trim.h" #include "diskutil.h" #include "cgroup.h" #include "profile.h" @@ -735,6 +723,7 @@ static void do_verify(struct thread_data *td, uint64_t verify_bytes) break; } else if (io_u->ddir == DDIR_WRITE) { io_u->ddir = DDIR_READ; + populate_verify_io_u(td, io_u); break; } else { put_io_u(td, io_u); @@ -1007,6 +996,9 @@ static void do_io(struct thread_data *td, uint64_t *bytes_done) break; } + if (io_u->ddir == DDIR_WRITE && td->flags & TD_F_DO_VERIFY) + populate_verify_io_u(td, io_u); + ddir = io_u->ddir; /* @@ -1340,7 +1332,7 @@ static int init_io_u(struct thread_data *td) static int switch_ioscheduler(struct thread_data *td) { #ifdef FIO_HAVE_IOSCHED_SWITCH - char tmp[256], tmp2[128]; + char tmp[256], tmp2[128], *p; FILE *f; int ret; @@ -1376,17 +1368,19 @@ static int switch_ioscheduler(struct thread_data *td) /* * Read back and check that the selected scheduler is now the default. */ - memset(tmp, 0, sizeof(tmp)); - ret = fread(tmp, sizeof(tmp), 1, f); + ret = fread(tmp, 1, sizeof(tmp) - 1, f); if (ferror(f) || ret < 0) { td_verror(td, errno, "fread"); fclose(f); return 1; } + tmp[ret] = '\0'; /* - * either a list of io schedulers or "none\n" is expected. + * either a list of io schedulers or "none\n" is expected. Strip the + * trailing newline. */ - tmp[strlen(tmp) - 1] = '\0'; + p = tmp; + strsep(&p, "\n"); /* * Write to "none" entry doesn't fail, so check the result here. @@ -2489,7 +2483,8 @@ int fio_backend(struct sk_out *sk_out) helper_thread_create(startup_sem, sk_out); cgroup_list = smalloc(sizeof(*cgroup_list)); - INIT_FLIST_HEAD(cgroup_list); + if (cgroup_list) + INIT_FLIST_HEAD(cgroup_list); run_threads(sk_out); @@ -2519,8 +2514,10 @@ int fio_backend(struct sk_out *sk_out) } free_disk_util(); - cgroup_kill(cgroup_list); - sfree(cgroup_list); + if (cgroup_list) { + cgroup_kill(cgroup_list); + sfree(cgroup_list); + } sfree(cgroup_mnt); fio_sem_remove(startup_sem);