X-Git-Url: https://git.kernel.dk/?a=blobdiff_plain;f=fio.c;h=8c1502ec80319775240d3300b2b565eba718a562;hb=4cd02b3f7f4eda0ec263f04422ab6424b7693605;hp=185f99a78817d1ca50465c7b7828bb9798bc1387;hpb=afad68f778a764cbe57d4a5d54cbea32444aaa45;p=fio.git diff --git a/fio.c b/fio.c index 185f99a7..8c1502ec 100644 --- a/fio.c +++ b/fio.c @@ -37,6 +37,7 @@ #include "fio.h" #include "hash.h" #include "smalloc.h" +#include "verify.h" unsigned long page_mask; unsigned long page_size; @@ -383,7 +384,7 @@ static void do_verify(struct thread_data *td) * read from disk. */ for_each_file(td, f, i) { - if (!(f->flags & FIO_FILE_OPEN)) + if (!fio_file_open(f)) continue; if (fio_io_sync(td, f)) break; @@ -700,7 +701,7 @@ sync_done: td_set_runstate(td, TD_FSYNCING); for_each_file(td, f, i) { - if (!(f->flags & FIO_FILE_OPEN)) + if (!fio_file_open(f)) continue; fio_io_sync(td, f); } @@ -922,7 +923,23 @@ static void clear_io_state(struct thread_data *td) close_files(td); for_each_file(td, f, i) - f->flags &= ~FIO_FILE_DONE; + fio_file_clear_done(f); +} + +static int exec_string(const char *string) +{ + int ret, newlen = strlen(string) + 1 + 8; + char *str; + + str = malloc(newlen); + sprintf(str, "sh -c %s", string); + + ret = system(str); + if (ret == -1) + log_err("fio: exec of cmd <%s> failed\n", str); + + free(str); + return ret; } /* @@ -1014,7 +1031,7 @@ static void *thread_main(void *data) goto err; if (td->o.exec_prerun) { - if (system(td->o.exec_prerun) < 0) + if (exec_string(td->o.exec_prerun)) goto err; } @@ -1115,10 +1132,8 @@ static void *thread_main(void *data) finish_log(td, td->ts.clat_log, "clat"); } fio_mutex_up(writeout_mutex); - if (td->o.exec_postrun) { - if (system(td->o.exec_postrun) < 0) - log_err("fio: postrun %s failed\n", td->o.exec_postrun); - } + if (td->o.exec_postrun) + exec_string(td->o.exec_postrun); if (exitall_on_terminate) terminate_threads(td->groupid);