The following changes since commit ada083cdf71779d7969318e12e91ad18f5864485: Update cpus_allowed_policy=split documentation (2014-02-28 16:43:57 -0800) are available in the git repository at: git://git.kernel.dk/fio.git master for you to fetch changes up to 8edd973d57a311d4c590d7385796bbdf111ed04c: Add runstate swap helpers (2014-03-01 08:24:03 -0700) ---------------------------------------------------------------- Jens Axboe (1): Add runstate swap helpers blktrace.c | 5 ++--- filesetup.c | 19 +++++++++---------- fio.h | 3 +++ libfio.c | 13 +++++++++++++ 4 files changed, 27 insertions(+), 13 deletions(-) --- Diff of recent changes: diff --git a/blktrace.c b/blktrace.c index 107a65b..4b5567e 100644 --- a/blktrace.c +++ b/blktrace.c @@ -382,8 +382,7 @@ int load_blktrace(struct thread_data *td, const char *filename, int need_swap) fifo = fifo_alloc(TRACE_FIFO_SIZE); - old_state = td->runstate; - td_set_runstate(td, TD_SETTING_UP); + old_state = td_bump_runstate(td, TD_SETTING_UP); td->o.size = 0; @@ -463,7 +462,7 @@ int load_blktrace(struct thread_data *td, const char *filename, int need_swap) fifo_free(fifo); close(fd); - td_set_runstate(td, old_state); + td_restore_runstate(td, old_state); if (!td->files_index) { log_err("fio: did not find replay device(s)\n"); diff --git a/filesetup.c b/filesetup.c index 2744d4f..4bfa470 100644 --- a/filesetup.c +++ b/filesetup.c @@ -209,8 +209,7 @@ static int pre_read_file(struct thread_data *td, struct fio_file *f) did_open = 1; } - old_runstate = td->runstate; - td_set_runstate(td, TD_PRE_READING); + old_runstate = td_bump_runstate(td, TD_PRE_READING); bs = td->o.max_bs[DDIR_READ]; b = malloc(bs); @@ -234,7 +233,7 @@ static int pre_read_file(struct thread_data *td, struct fio_file *f) } } - td_set_runstate(td, old_runstate); + td_restore_runstate(td, old_runstate); if (did_open) td->io_ops->close_file(td, f); @@ -745,8 +744,7 @@ int setup_files(struct thread_data *td) dprint(FD_FILE, "setup files\n"); - old_state = td->runstate; - td_set_runstate(td, TD_SETTING_UP); + old_state = td_bump_runstate(td, TD_SETTING_UP); if (o->read_iolog_file) goto done; @@ -925,12 +923,12 @@ done: if (o->create_only) td->done = 1; - td_set_runstate(td, old_state); + td_restore_runstate(td, old_state); return 0; err_offset: log_err("%s: you need to specify valid offset=\n", o->name); err_out: - td_set_runstate(td, old_state); + td_restore_runstate(td, old_state); return 1; } @@ -980,11 +978,12 @@ static int init_rand_distribution(struct thread_data *td) if (td->o.random_distribution == FIO_RAND_DIST_RANDOM) return 0; - state = td->runstate; - td_set_runstate(td, TD_SETTING_UP); + state = td_bump_runstate(td, TD_SETTING_UP); + for_each_file(td, f, i) __init_rand_distribution(td, f); - td_set_runstate(td, state); + + td_restore_runstate(td, state); return 1; } diff --git a/fio.h b/fio.h index 6f5f29f..52f1def 100644 --- a/fio.h +++ b/fio.h @@ -475,6 +475,9 @@ enum { }; extern void td_set_runstate(struct thread_data *, int); +extern int td_bump_runstate(struct thread_data *, int); +extern void td_restore_runstate(struct thread_data *, int); + #define TERMINATE_ALL (-1) extern void fio_terminate_threads(int); diff --git a/libfio.c b/libfio.c index f4aac2e..8eddab8 100644 --- a/libfio.c +++ b/libfio.c @@ -172,6 +172,19 @@ void td_set_runstate(struct thread_data *td, int runstate) td->runstate = runstate; } +int td_bump_runstate(struct thread_data *td, int new_state) +{ + int old_state = td->runstate; + + td_set_runstate(td, new_state); + return old_state; +} + +void td_restore_runstate(struct thread_data *td, int old_state) +{ + td_set_runstate(td, old_state); +} + void fio_terminate_threads(int group_id) { struct thread_data *td; -- To unsubscribe from this list: send the line "unsubscribe fio" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html