The following changes since commit ea4500d8d709ed4aa9587f35b2edc55b5b2c7695: Windows fixes (2011-05-04 07:54:13 -0600) are available in the git repository at: git://git.kernel.dk/fio.git master Bruce Cran (2): windowsaio: skip uncompleted requests sscanf fixup Jens Axboe (3): Exit with error on signal Revert "parser: get rid of useless is_time variable" Fio 1.53 engines/windowsaio.c | 4 ++++ fio.c | 1 + init.c | 6 +++--- os/windows/install.wxs | 2 +- os/windows/version.h | 4 ++-- parse.c | 18 ++++++++++-------- 6 files changed, 21 insertions(+), 14 deletions(-) --- Diff of recent changes: diff --git a/engines/windowsaio.c b/engines/windowsaio.c index 2d3ed83..e389b67 100644 --- a/engines/windowsaio.c +++ b/engines/windowsaio.c @@ -277,6 +277,10 @@ static DWORD WINAPI IoCompletionRoutine(LPVOID lpParameter) fov = CONTAINING_RECORD(ovl, FIO_OVERLAPPED, o); io_u = fov->io_u; + /* We sometimes get an IO request that hasn't completed yet. Ignore it. */ + if (ovl->Internal == STATUS_PENDING) + continue; + if (ovl->Internal == ERROR_SUCCESS) { io_u->resid = io_u->xfer_buflen - ovl->InternalHigh; io_u->error = 0; diff --git a/fio.c b/fio.c index a737a31..284e9f2 100644 --- a/fio.c +++ b/fio.c @@ -126,6 +126,7 @@ static void sig_int(int sig) if (threads) { log_info("\nfio: terminating on signal %d\n", sig); fflush(stdout); + exit_value = 128; terminate_threads(TERMINATE_ALL); } } diff --git a/init.c b/init.c index aa31138..6382666 100644 --- a/init.c +++ b/init.c @@ -22,7 +22,7 @@ #include "lib/getopt.h" -static char fio_version_string[] = "fio 1.52"; +static char fio_version_string[] = "fio 1.53"; #define FIO_RANDSEED (0xb1899bedUL) @@ -191,7 +191,7 @@ static void put_job(struct thread_data *td) { if (td == &def_thread) return; - + profile_td_exit(td); if (td->error) @@ -835,7 +835,7 @@ static int parse_jobs_ini(char *file, int stonewall_flag) if (is_empty_or_comment(p)) continue; - if (sscanf(p, "[%255s]", name) != 1) { + if (sscanf(p, "[%255[^\n]]", name) != 1) { if (inside_skip) continue; log_err("fio: option <%s> outside of [] job section\n", diff --git a/os/windows/install.wxs b/os/windows/install.wxs index ebad81a..c20580f 100755 --- a/os/windows/install.wxs +++ b/os/windows/install.wxs @@ -2,7 +2,7 @@ <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> <?define VersionMajor = 1?> -<?define VersionMinor = 52?> +<?define VersionMinor = 53?> <?define VersionBuild = 0?> <Product Id="*" diff --git a/os/windows/version.h b/os/windows/version.h index 0bdf3d5..04e933d 100644 --- a/os/windows/version.h +++ b/os/windows/version.h @@ -1,4 +1,4 @@ #define FIO_VERSION_MAJOR 1 -#define FIO_VERSION_MINOR 52 +#define FIO_VERSION_MINOR 53 #define FIO_VERSION_BUILD 0 -#define FIO_VERSION_STRING "1.52" +#define FIO_VERSION_STRING "1.53" diff --git a/parse.c b/parse.c index 585fb7e..1e6a522 100644 --- a/parse.c +++ b/parse.c @@ -310,7 +310,7 @@ static int __handle_option(struct fio_option *o, const char *ptr, void *data, long long ull, *ullp; long ul1, ul2; char **cp; - int ret = 0; + int ret = 0, is_time = 0; dprint(FD_PARSE, "__handle_option=%s, type=%d, ptr=%s\n", o->name, o->type, ptr); @@ -358,14 +358,17 @@ static int __handle_option(struct fio_option *o, const char *ptr, void *data, ret = fn(data, ptr); break; } - case FIO_OPT_STR_VAL_TIME: { - fio_opt_str_val_fn *fn; - - ret = check_str_time(ptr, &ull); + case FIO_OPT_STR_VAL_TIME: + is_time = 1; case FIO_OPT_INT: - case FIO_OPT_STR_VAL: + case FIO_OPT_STR_VAL: { + fio_opt_str_val_fn *fn = o->cb; + + if (is_time) + ret = check_str_time(ptr, &ull); + else + ret = check_str_bytes(ptr, &ull, data); - ret = check_str_bytes(ptr, &ull, data); if (ret) break; @@ -380,7 +383,6 @@ static int __handle_option(struct fio_option *o, const char *ptr, void *data, return 1; } - fn = o->cb; if (fn) ret = fn(data, &ull); else { -- 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