The following changes since commit 9c639a76200286bc6db7cefefef425cff65b0d78: configure: fixup __sync_fetch_and_add() (2013-02-28 22:13:29 +0100) are available in the git repository at: git://git.kernel.dk/fio.git master Jens Axboe (1): Add --parse-only command line option SEOKYOUNG KO (2): Fix rate iops with ramp time Fix skewed latencies for rate IOPS README | 1 + init.c | 14 ++++++++++++-- io_u.c | 4 ++-- libfio.c | 1 + 4 files changed, 16 insertions(+), 4 deletions(-) --- Diff of recent changes: diff --git a/README b/README index b662e71..317ddec 100644 --- a/README +++ b/README @@ -134,6 +134,7 @@ Command line $ fio --debug Enable some debugging options (see below) + --parse-only Parse options only, don't start any IO --output Write output to file --runtime Runtime in seconds --latency-log Generate per-job latency logs diff --git a/init.c b/init.c index 32da42c..c722688 100644 --- a/init.c +++ b/init.c @@ -34,6 +34,7 @@ static char **ini_file; static int max_jobs = FIO_MAX_JOBS; static int dump_cmdline; static int def_timeout; +static int parse_only; static struct thread_data def_thread; struct thread_data *threads = NULL; @@ -151,6 +152,11 @@ static struct option l_opts[FIO_NR_OPTIONS] = { .val = 'd' | FIO_CLIENT_FLAG, }, { + .name = (char *) "parse-only", + .has_arg = no_argument, + .val = 'P' | FIO_CLIENT_FLAG, + }, + { .name = (char *) "section", .has_arg = required_argument, .val = 'x' | FIO_CLIENT_FLAG, @@ -817,7 +823,7 @@ static int add_job(struct thread_data *td, const char *jobname, int job_add_num) /* * if we are just dumping the output command line, don't add the job */ - if (dump_cmdline) { + if (dump_cmdline || parse_only) { put_job(td); return 0; } @@ -1251,6 +1257,7 @@ static void usage(const char *name) printf(" --debug=options\tEnable debug logging. May be one/more of:\n" "\t\t\tprocess,file,io,mem,blktrace,verify,random,parse,\n" "\t\t\tdiskutil,job,mutex,profile,time,net\n"); + printf(" --parse-only\t\tParse options only, don't start any IO\n"); printf(" --output\t\tWrite output to file\n"); printf(" --runtime\t\tRuntime in seconds\n"); printf(" --latency-log\t\tGenerate per-job latency logs\n"); @@ -1528,6 +1535,9 @@ int parse_cmd_line(int argc, char *argv[]) if (set_debug(optarg)) do_exit++; break; + case 'P': + parse_only = 1; + break; case 'x': { size_t new_size; @@ -1738,7 +1748,7 @@ int parse_options(int argc, char *argv[]) fio_options_free(&def_thread); if (!thread_number) { - if (dump_cmdline) + if (dump_cmdline || parse_only) return 0; if (exec_profile) return 0; diff --git a/io_u.c b/io_u.c index e474b48..7941a6d 100644 --- a/io_u.c +++ b/io_u.c @@ -531,10 +531,10 @@ static enum fio_ddir rate_ddir(struct thread_data *td, enum fio_ddir ddir) * io's that have been actually submitted to an async engine, * and cur_depth is meaningless for sync engines. */ - if (td->io_u_in_flight) { + while (td->io_u_in_flight) { int fio_unused ret; - ret = io_u_queued_complete(td, td->io_u_in_flight, NULL); + ret = io_u_queued_complete(td, 1, NULL); } fio_gettime(&t, NULL); diff --git a/libfio.c b/libfio.c index ac629dc..433fee4 100644 --- a/libfio.c +++ b/libfio.c @@ -119,6 +119,7 @@ void reset_all_stats(struct thread_data *td) td->io_issues[i] = 0; td->ts.total_io_u[i] = 0; td->ts.runtime[i] = 0; + td->rwmix_issues = 0; } fio_gettime(&tv, NULL); -- 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