The following changes since commit 45054cbec0e624de3b79a795d7dfe1c64cdea934: solaris: fix compile error on ctime_r() (2012-10-09 14:46:24 -0600) are available in the git repository at: git://git.kernel.dk/fio.git master Bruce Cran (5): Add pending IO to the tail of the busy list Fix UDP acronym fio patch: Windows netio fixes Windows: avoid large writes during file layout. Windows: handle SIGBREAK. Jens Axboe (2): HOWTO: indentation fix Fio 2.0.10 FIO-VERSION-GEN | 2 +- HOWTO | 15 ++++++++------- backend.c | 8 ++++++++ client.c | 8 ++++++++ engines/net.c | 9 +++++++-- fio.1 | 2 +- io_u.c | 2 +- os/windows/install.wxs | 2 +- os/windows/posix.c | 17 +++++++++++++---- 9 files changed, 48 insertions(+), 17 deletions(-) --- Diff of recent changes: diff --git a/FIO-VERSION-GEN b/FIO-VERSION-GEN index 08729ba..cc7eb83 100755 --- a/FIO-VERSION-GEN +++ b/FIO-VERSION-GEN @@ -1,7 +1,7 @@ #!/bin/sh GVF=FIO-VERSION-FILE -DEF_VER=fio-2.0.9 +DEF_VER=fio-2.0.10 LF=' ' diff --git a/HOWTO b/HOWTO index cdff07a..ee9680a 100644 --- a/HOWTO +++ b/HOWTO @@ -1062,12 +1062,13 @@ numjobs=int Create the specified number of clones of this job. May be conjunction with new_group. group_reporting It may sometimes be interesting to display statistics for - groups of jobs as a whole instead of for each individual job. This is - especially true if 'numjobs' is used; looking at individual - thread/process output quickly becomes unwieldy. To see the final report - per-group instead of per-job, use 'group_reporting'. Jobs in a file - will be part of the same reporting group, unless if separated by a - stonewall, or by using 'new_group'. + groups of jobs as a whole instead of for each individual job. + This is especially true if 'numjobs' is used; looking at + individual thread/process output quickly becomes unwieldy. + To see the final report per-group instead of per-job, use + 'group_reporting'. Jobs in a file will be part of the same + reporting group, unless if separated by a stonewall, or by + using 'new_group'. thread fio defaults to forking jobs, however if this option is given, fio will use pthread_create(3) to create threads @@ -1327,7 +1328,7 @@ that defines them is selected. [net] proto=str The network protocol to use. Accepted values are: tcp Transmission control protocol - udp Unreliable datagram protocol + udp User datagram protocol unix UNIX domain socket When the protocol is TCP or UDP, the port must also be given, diff --git a/backend.c b/backend.c index b5501c6..4e3a3ed 100644 --- a/backend.c +++ b/backend.c @@ -108,6 +108,14 @@ static void set_sig_handlers(void) act.sa_flags = SA_RESTART; sigaction(SIGTERM, &act, NULL); +/* Windows uses SIGBREAK as a quit signal from other applications */ +#ifdef WIN32 + memset(&act, 0, sizeof(act)); + act.sa_handler = sig_int; + act.sa_flags = SA_RESTART; + sigaction(SIGBREAK, &act, NULL); +#endif + memset(&act, 0, sizeof(act)); act.sa_handler = sig_show_status; act.sa_flags = SA_RESTART; diff --git a/client.c b/client.c index 93c7103..bf09d7e 100644 --- a/client.c +++ b/client.c @@ -383,6 +383,14 @@ static void client_signal_handler(void) act.sa_flags = SA_RESTART; sigaction(SIGTERM, &act, NULL); +/* Windows uses SIGBREAK as a quit signal from other applications */ +#ifdef WIN32 + memset(&act, 0, sizeof(act)); + act.sa_handler = sig_int; + act.sa_flags = SA_RESTART; + sigaction(SIGBREAK, &act, NULL); +#endif + memset(&act, 0, sizeof(act)); act.sa_handler = sig_show_status; act.sa_flags = SA_RESTART; diff --git a/engines/net.c b/engines/net.c index cf6025f..c533799 100644 --- a/engines/net.c +++ b/engines/net.c @@ -79,7 +79,7 @@ static struct fio_option options[] = { }, { .ival = "udp", .oval = FIO_TYPE_UDP, - .help = "Unreliable Datagram Protocol", + .help = "User Datagram Protocol", }, { .ival = "unix", .oval = FIO_TYPE_UNIX, @@ -144,7 +144,7 @@ static int fio_netio_prep(struct thread_data *td, struct io_u *io_u) td_verror(td, EINVAL, "bad direction"); return 1; } - + return 0; } @@ -687,6 +687,11 @@ static int fio_netio_init(struct thread_data *td) struct netio_options *o = td->eo; int ret; +#ifdef WIN32 + WSADATA wsd; + WSAStartup(MAKEWORD(2,2), &wsd); +#endif + if (td_random(td)) { log_err("fio: network IO can't be random\n"); return 1; diff --git a/fio.1 b/fio.1 index 145b547..fad0ae4 100644 --- a/fio.1 +++ b/fio.1 @@ -1073,7 +1073,7 @@ The network protocol to use. Accepted values are: Transmission control protocol .TP .B udp -Unreliable datagram protocol +User datagram protocol .TP .B unix UNIX domain socket diff --git a/io_u.c b/io_u.c index a2c583d..e047677 100644 --- a/io_u.c +++ b/io_u.c @@ -1096,7 +1096,7 @@ again: io_u->error = 0; flist_del(&io_u->list); - flist_add(&io_u->list, &td->io_u_busylist); + flist_add_tail(&io_u->list, &td->io_u_busylist); td->cur_depth++; io_u->flags |= IO_U_F_IN_CUR_DEPTH; } else if (td->o.verify_async) { diff --git a/os/windows/install.wxs b/os/windows/install.wxs index 571492e..e02347e 100755 --- a/os/windows/install.wxs +++ b/os/windows/install.wxs @@ -10,7 +10,7 @@ <Product Id="2BA394F9-0D9E-4597-BB9D-6B18097D64BB" Codepage="1252" Language="1033" Manufacturer="fio" Name="fio" - UpgradeCode="2338A332-5511-43cf-b9BD-5C60496CCFCC" Version="2.0.9"> + UpgradeCode="2338A332-5511-43cf-b9BD-5C60496CCFCC" Version="2.0.10"> <Package Comments="Contact: Your local administrator" Description="Flexible IO Tester" diff --git a/os/windows/posix.c b/os/windows/posix.c index 6ad47df..11500e4 100755 --- a/os/windows/posix.c +++ b/os/windows/posix.c @@ -411,6 +411,9 @@ int posix_fallocate(int fd, off_t offset, off_t len) break; } + /* Don't allow Windows to cache the write: flush it to disk */ + _commit(fd); + bytes_remaining -= bytes_written; } @@ -628,11 +631,11 @@ int poll(struct pollfd fds[], nfds_t nfds, int timeout) int i; int rc; - if (timeout != -1) + if (timeout != -1) { to = &tv; - - to->tv_sec = timeout / 1000; - to->tv_usec = (timeout % 1000) * 1000; + to->tv_sec = timeout / 1000; + to->tv_usec = (timeout % 1000) * 1000; + } FD_ZERO(&readfds); FD_ZERO(&writefds); @@ -811,9 +814,15 @@ const char* inet_ntop(int af, const void *restrict src, errno = ENOSPC; WSACleanup(); + return ret; } +int inet_aton(const char *cp, struct in_addr *inp) +{ + return inet_pton(AF_INET, cp, inp); +} + int inet_pton(int af, const char *restrict src, void *restrict dst) { INT status = SOCKET_ERROR; -- 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