The following changes since commit 660a2bfb0858f94633f9e567b81968981541f079: server: document fio_server_parse_string() (2011-10-24 09:35:06 +0200) are available in the git repository at: git://git.kernel.dk/fio.git master Jens Axboe (2): server: cleanup fio_server_parse_string() Make verify_dump off by default Steven Lang (1): Add core for verify_dump option HOWTO | 2 +- fio.1 | 2 +- options.c | 2 +- server.c | 138 +++++++++++++++++++++++++++++++------------------------------ verify.c | 3 + 5 files changed, 76 insertions(+), 71 deletions(-) --- Diff of recent changes: diff --git a/HOWTO b/HOWTO index ef8f959..41edcf1 100644 --- a/HOWTO +++ b/HOWTO @@ -981,7 +981,7 @@ verify_fatal=bool Normally fio will keep checking the entire contents verify_dump=bool If set, dump the contents of both the original data block and the data block we read off disk to files. This allows later analysis to inspect just what kind of data - corruption occurred. On by default. + corruption occurred. Off by default. verify_async=int Fio will normally verify IO inline from the submitting thread. This option takes an integer describing how many diff --git a/fio.1 b/fio.1 index 3b11122..aae7657 100644 --- a/fio.1 +++ b/fio.1 @@ -780,7 +780,7 @@ false. .BI verify_dump \fR=\fPbool If set, dump the contents of both the original data block and the data block we read off disk to files. This allows later analysis to inspect just what kind of -data corruption occurred. On by default. +data corruption occurred. Off by default. .TP .BI verify_async \fR=\fPint Fio will normally verify IO inline from the submitting thread. This option diff --git a/options.c b/options.c index 4207537..bb46dc9 100644 --- a/options.c +++ b/options.c @@ -1581,7 +1581,7 @@ static struct fio_option options[FIO_MAX_OPTS] = { .name = "verify_dump", .type = FIO_OPT_BOOL, .off1 = td_var_offset(verify_dump), - .def = "1", + .def = "0", .help = "Dump contents of good and bad blocks on failure", .parent = "verify", }, diff --git a/server.c b/server.c index 81ec6b0..e7107d4 100644 --- a/server.c +++ b/server.c @@ -959,6 +959,10 @@ int fio_server_parse_string(const char *str, char **ptr, int *is_sock, int *port, struct in_addr *inp, struct in6_addr *inp6, int *ipv6) { + const char *host = str; + char *portp; + int ret, lport = 0; + *ptr = NULL; *is_sock = 0; *port = fio_net_port; @@ -967,93 +971,91 @@ int fio_server_parse_string(const char *str, char **ptr, int *is_sock, if (!strncmp(str, "sock:", 5)) { *ptr = strdup(str + 5); *is_sock = 1; - } else { - const char *host = str; - char *portp; - int ret, lport = 0; - - /* - * Is it ip:<ip or host>:port - */ - if (!strncmp(host, "ip:", 3)) - host += 3; - else if (!strncmp(host, "ip4:", 4)) - host += 4; - else if (!strncmp(host, "ip6:", 4)) { - host += 4; - *ipv6 = 1; - } else if (host[0] == ':') { - /* String is :port */ - host++; - lport = atoi(host); + + return 0; + } + + /* + * Is it ip:<ip or host>:port + */ + if (!strncmp(host, "ip:", 3)) + host += 3; + else if (!strncmp(host, "ip4:", 4)) + host += 4; + else if (!strncmp(host, "ip6:", 4)) { + host += 4; + *ipv6 = 1; + } else if (host[0] == ':') { + /* String is :port */ + host++; + lport = atoi(host); + if (!lport || lport > 65535) { + log_err("fio: bad server port %u\n", port); + return 1; + } + /* no hostname given, we are done */ + *port = lport; + return 0; + } + + /* + * If no port seen yet, check if there's a last ':' at the end + */ + if (!lport) { + portp = strchr(host, ','); + if (portp) { + *portp = '\0'; + portp++; + lport = atoi(portp); if (!lport || lport > 65535) { log_err("fio: bad server port %u\n", port); return 1; } - /* no hostname given, we are done */ - *port = lport; - return 0; } + } - /* - * If no port seen yet, check if there's a last ':' at the end - */ - if (!lport) { - portp = strchr(host, ','); - if (portp) { - *portp = '\0'; - portp++; - lport = atoi(portp); - if (!lport || lport > 65535) { - log_err("fio: bad server port %u\n", port); - return 1; - } - } - } + if (lport) + *port = lport; - if (lport) - *port = lport; + if (!strlen(host)) + return 0; - if (!strlen(host)) - goto done; + *ptr = strdup(host); - *ptr = strdup(host); + if (*ipv6) + ret = inet_pton(AF_INET6, host, inp6); + else + ret = inet_pton(AF_INET, host, inp); - if (*ipv6) - ret = inet_pton(AF_INET6, host, inp6); - else - ret = inet_pton(AF_INET, host, inp); + if (ret != 1) { + struct hostent *hent; - if (ret != 1) { - struct hostent *hent; + hent = gethostbyname(host); + if (!hent) { + log_err("fio: failed to resolve <%s>\n", host); + free(*ptr); + *ptr = NULL; + return 1; + } - hent = gethostbyname(host); - if (!hent) { - log_err("fio: failed to resolve <%s>\n", host); -err: + if (*ipv6) { + if (hent->h_addrtype != AF_INET6) { + log_info("fio: falling back to IPv4\n"); + *ipv6 = 0; + } else + memcpy(inp6, hent->h_addr_list[0], 16); + } + if (!*ipv6) { + if (hent->h_addrtype != AF_INET) { + log_err("fio: lookup type mismatch\n"); free(*ptr); *ptr = NULL; return 1; } - - if (*ipv6) { - if (hent->h_addrtype != AF_INET6) { - log_info("fio: falling back to IPv4\n"); - *ipv6 = 0; - } else - memcpy(inp6, hent->h_addr_list[0], 16); - } - if (!*ipv6) { - if (hent->h_addrtype != AF_INET) { - log_err("fio: lookup type mismatch\n"); - goto err; - } - memcpy(inp, hent->h_addr_list[0], 4); - } + memcpy(inp, hent->h_addr_list[0], 4); } } -done: if (*port == 0) *port = fio_net_port; diff --git a/verify.c b/verify.c index c450e88..43dd392 100644 --- a/verify.c +++ b/verify.c @@ -269,6 +269,9 @@ static void dump_verify_buffers(struct verify_header *hdr, struct vcont *vc) struct io_u dummy; void *buf; + if (!td->o.verify_dump) + return; + /* * Dump the contents we just read off disk */ -- 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