Recent changes (master)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



The following changes since commit 5e4c7118da52cb62aa9361dcac16c68001813cb9:

  Add verify_only to man page (2014-01-24 12:15:07 -0800)

are available in the git repository at:
  git://git.kernel.dk/fio.git master

Bruce Cran (2):
      Fix Windows headers for IPv6
      Update Windows build for new threading library

Grant Grundler (1):
      fio: consolidate rand_seed to uint64_t

Jens Axboe (4):
      server: fix wrong error return on host lookup failure
      configure: add test for whether required IPv6 helpers
      client/server: don't reset ipv6 expectations
      engine: protect net engine IPv6 support with configure check

 Makefile                              |    2 +-
 README                                |   22 +++++++++-------------
 cconv.c                               |    4 ++--
 client.c                              |    2 +-
 configure                             |   28 ++++++++++++++++++++++++++++
 engines/net.c                         |    4 ++++
 ioengine.h                            |    2 +-
 options.c                             |    2 +-
 os/windows/examples.wxs               |    4 ++++
 os/windows/install.wxs                |    4 ----
 os/windows/posix/include/arpa/inet.h  |   13 +++----------
 os/windows/posix/include/netinet/in.h |   13 -------------
 server.c                              |   12 ++++++------
 server.h                              |    2 +-
 thread_options.h                      |    4 ++--
 15 files changed, 63 insertions(+), 55 deletions(-)

---

Diff of recent changes:

diff --git a/Makefile b/Makefile
index 8c2c514..3f654f0 100644
--- a/Makefile
+++ b/Makefile
@@ -132,7 +132,7 @@ ifneq (,$(findstring CYGWIN,$(CONFIG_TARGET_OS)))
   SOURCE := $(filter-out engines/mmap.c,$(SOURCE))
   SOURCE += os/windows/posix.c
   LIBS	 += -lpthread -lpsapi -lws2_32
-  CFLAGS += -DPSAPI_VERSION=1 -Ios/windows/posix/include -Wno-format
+  CFLAGS += -DPSAPI_VERSION=1 -Ios/windows/posix/include -Wno-format -static
 endif
 
 OBJS = $(SOURCE:.c=.o)
diff --git a/README b/README
index e90f493..4da0d24 100644
--- a/README
+++ b/README
@@ -105,24 +105,20 @@ Configure will attempt to determine the target platform automatically.
 Windows
 -------
 
-On Windows Cygwin (http://www.cygwin.com/) is required in order to
-build fio. To create an MSI installer package install WiX 3.7 from
+On Windows, Cygwin (http://www.cygwin.com/) is required in order to
+build fio. To create an MSI installer package install WiX 3.8 from
 http://wixtoolset.org and run dobuild.cmd from the
 os/windows directory.
 
-How to compile FIO on 64-bit Windows:
+How to compile fio on 64-bit Windows:
 
- 1. Install Cygwin (http://www.cygwin.com/setup.exe). Install 'make' and all
+ 1. Install Cygwin (http://www.cygwin.com/). Install 'make' and all
     packages starting with 'mingw64-i686' and 'mingw64-x86_64'.
- 2. Download ftp://sourceware.org/pub/pthreads-win32/prebuilt-dll-2-9-1-release/dll/x64/pthreadGC2.dll
-    and copy to the fio source directory.
- 3. Open the Cygwin Terminal.
- 4. Go to the fio directory (source files).
- 5. Run 'make clean'.
- 6. Run 'make'.
-
-To build fio on 32-bit Windows, download x86/pthreadGC2.dll instead and do
-'./configure --build-32bit-win=yes' before 'make'.
+ 2. Open the Cygwin Terminal.
+ 3. Go to the fio directory (source files).
+ 4. Run 'make clean && make -j'.
+
+To build fio on 32-bit Windows, run './configure --build-32bit-win' before 'make'.
 
 It's recommended that once built or installed, fio be run in a Command Prompt
 or other 'native' console such as console2, since there are known to be display
diff --git a/cconv.c b/cconv.c
index 3f41ae4..0d30f07 100644
--- a/cconv.c
+++ b/cconv.c
@@ -119,7 +119,7 @@ void convert_thread_options_to_cpu(struct thread_options *o,
 	o->do_disk_util = le32_to_cpu(top->do_disk_util);
 	o->override_sync = le32_to_cpu(top->override_sync);
 	o->rand_repeatable = le32_to_cpu(top->rand_repeatable);
-	o->rand_seed = le32_to_cpu(top->rand_seed);
+	o->rand_seed = le64_to_cpu(top->rand_seed);
 	o->use_os_rand = le32_to_cpu(top->use_os_rand);
 	o->log_avg_msec = le32_to_cpu(top->log_avg_msec);
 	o->norandommap = le32_to_cpu(top->norandommap);
@@ -285,7 +285,7 @@ void convert_thread_options_to_net(struct thread_options_pack *top,
 	top->do_disk_util = cpu_to_le32(o->do_disk_util);
 	top->override_sync = cpu_to_le32(o->override_sync);
 	top->rand_repeatable = cpu_to_le32(o->rand_repeatable);
-	top->rand_seed = cpu_to_le32(o->rand_seed);
+	top->rand_seed = __cpu_to_le64(o->rand_seed);
 	top->use_os_rand = cpu_to_le32(o->use_os_rand);
 	top->log_avg_msec = cpu_to_le32(o->log_avg_msec);
 	top->norandommap = cpu_to_le32(o->norandommap);
diff --git a/client.c b/client.c
index 7975ce6..467d093 100644
--- a/client.c
+++ b/client.c
@@ -238,7 +238,7 @@ struct fio_client *fio_client_add_explicit(struct client_ops *ops,
 		int ipv6;
 
 		ipv6 = type == Fio_client_ipv6;
-		if (fio_server_parse_host(hostname, &ipv6,
+		if (fio_server_parse_host(hostname, ipv6,
 						&client->addr.sin_addr,
 						&client->addr6.sin6_addr))
 			goto err;
diff --git a/configure b/configure
index 2dda142..6baa579 100755
--- a/configure
+++ b/configure
@@ -1091,6 +1091,31 @@ if compile_prog "" "" "pwritev"; then
 fi
 echo "pwritev/preadv                $pwritev"
 
+##########################################
+# Check whether we have the required functions for ipv6
+ipv6="no"
+cat > $TMPC << EOF
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netdb.h>
+#include <stdio.h>
+int main(int argc, char **argv)
+{
+  struct addrinfo hints;
+  struct in6_addr addr;
+  int ret;
+
+  ret = getaddrinfo(NULL, NULL, &hints, NULL);
+  freeaddrinfo(NULL);
+  printf("%s\n", gai_strerror(ret));
+  addr = in6addr_any;
+  return 0;
+}
+EOF
+if compile_prog "" "" "ipv6"; then
+  ipv6="yes"
+fi
+echo "IPv6 helpers                  $ipv6"
 
 #############################################################################
 
@@ -1210,6 +1235,9 @@ fi
 if test "$pwritev" = "yes" ; then
   output_sym "CONFIG_PWRITEV"
 fi
+if test "$ipv6" = "yes" ; then
+  output_sym "CONFIG_IPV6"
+fi
 
 echo "LIBS+=$LIBS" >> $config_host_mak
 echo "CFLAGS+=$CFLAGS" >> $config_host_mak
diff --git a/engines/net.c b/engines/net.c
index 4be106a..1dc55d5 100644
--- a/engines/net.c
+++ b/engines/net.c
@@ -94,18 +94,22 @@ static struct fio_option options[] = {
 			    .oval = FIO_TYPE_TCP,
 			    .help = "Transmission Control Protocol",
 			  },
+#ifdef CONFIG_IPV6
 			  { .ival = "tcpv6",
 			    .oval = FIO_TYPE_TCP_V6,
 			    .help = "Transmission Control Protocol V6",
 			  },
+#endif
 			  { .ival = "udp",
 			    .oval = FIO_TYPE_UDP,
 			    .help = "User Datagram Protocol",
 			  },
+#ifdef CONFIG_IPV6
 			  { .ival = "udpv6",
 			    .oval = FIO_TYPE_UDP_V6,
 			    .help = "User Datagram Protocol V6",
 			  },
+#endif
 			  { .ival = "unix",
 			    .oval = FIO_TYPE_UNIX,
 			    .help = "UNIX domain socket",
diff --git a/ioengine.h b/ioengine.h
index 949af91..0756bc7 100644
--- a/ioengine.h
+++ b/ioengine.h
@@ -56,7 +56,7 @@ struct io_u {
 	/*
 	 * Initial seed for generating the buffer contents
 	 */
-	unsigned long rand_seed;
+	uint64_t rand_seed;
 
 	/*
 	 * IO engine state, may be different from above when we get
diff --git a/options.c b/options.c
index 525d318..8287011 100644
--- a/options.c
+++ b/options.c
@@ -1656,7 +1656,7 @@ struct fio_option fio_options[FIO_MAX_OPTS] = {
 	{
 		.name	= "randseed",
 		.lname	= "The random generator seed",
-		.type	= FIO_OPT_INT,
+		.type	= FIO_OPT_STR_VAL,
 		.off1	= td_var_offset(rand_seed),
 		.help	= "Set the random generator seed value",
 		.parent = "rw",
diff --git a/os/windows/examples.wxs b/os/windows/examples.wxs
index 644799d..a21182a 100755
--- a/os/windows/examples.wxs
+++ b/os/windows/examples.wxs
@@ -21,6 +21,9 @@
                     <File Source="..\..\examples\netio.fio" />
                 </Component>
                 <Component>
+                    <File Source="..\..\examples\netio_multicast.fio" />
+                </Component>
+                <Component>
                     <File Source="..\..\examples\ssd-test.fio" />
                 </Component>
                 <Component>
@@ -60,6 +63,7 @@
             <ComponentRef Id="fsx.fio" />
             <ComponentRef Id="iometer_file_access_server.fio" />
             <ComponentRef Id="netio.fio" />
+            <ComponentRef Id="netio_multicast.fio" />
             <ComponentRef Id="ssd_test.fio" />
             <ComponentRef Id="surface_scan.fio" />
             <ComponentRef Id="tiobench_example.fio" />
diff --git a/os/windows/install.wxs b/os/windows/install.wxs
index adc50f6..599fe39 100755
--- a/os/windows/install.wxs
+++ b/os/windows/install.wxs
@@ -27,9 +27,6 @@
 							<File Source="..\..\fio.exe"/>
 						</Component>
 						<Component>
-							<File KeyPath="yes" Source="..\..\libwinpthread-1.dll"/>
-						</Component>
-						<Component>
 							<File Id="README" Name="README.txt" Source="..\..\README"/>
 						</Component>
 						<Component>
@@ -52,7 +49,6 @@
 
 	<Feature Id="AlwaysInstall" Absent="disallow" ConfigurableDirectory="INSTALLDIR" Display="hidden" Level="1" Title="Flexible IO Tester">
 		<ComponentRef Id="fio.exe"/>
-		<ComponentRef Id="pthreadGC2.dll"/>
 		<ComponentRef Id="HOWTO"/>
 		<ComponentRef Id="README"/>
 		<ComponentRef Id="REPORTING_BUGS"/>
diff --git a/os/windows/posix/include/arpa/inet.h b/os/windows/posix/include/arpa/inet.h
index 59c50ad..30498c6 100644
--- a/os/windows/posix/include/arpa/inet.h
+++ b/os/windows/posix/include/arpa/inet.h
@@ -1,21 +1,14 @@
 #ifndef ARPA_INET_H
 #define ARPA_INET_H
 
-#include <winsock2.h>
+#include <ws2tcpip.h>
 #include <inttypes.h>
 
 typedef int socklen_t;
 typedef int in_addr_t;
 
-#define IP_MULTICAST_IF 2
-#define IP_MULTICAST_TTL 3
-#define IP_ADD_MEMBERSHIP 5
-
-struct ip_mreq
-{
-	struct in_addr imr_multiaddr;
-	struct in_addr imr_interface;
-};
+/* EAI_SYSTEM isn't used on Windows, so map it to EAI_FAIL */
+#define EAI_SYSTEM EAI_FAIL
 
 in_addr_t inet_network(const char *cp);
 
diff --git a/os/windows/posix/include/netinet/in.h b/os/windows/posix/include/netinet/in.h
index b58c209..f7e2419 100644
--- a/os/windows/posix/include/netinet/in.h
+++ b/os/windows/posix/include/netinet/in.h
@@ -4,18 +4,5 @@
 #include <inttypes.h>
 #include <sys/un.h>
 
-struct in6_addr
-{
-	uint8_t s6_addr[16];
-};
-
-struct sockaddr_in6
-{
-	sa_family_t		sin6_family;   /* AF_INET6 */
-	in_port_t		sin6_port;     /* Port number */
-	uint32_t		sin6_flowinfo; /* IPv6 traffic class and flow information */
-	struct in6_addr	sin6_addr;     /* IPv6 address */
-	uint32_t		sin6_scope_id; /* Set of interfaces for a scope */
-};
 
 #endif /* NETINET_IN_H */
diff --git a/server.c b/server.c
index 9b13df8..b6961fd 100644
--- a/server.c
+++ b/server.c
@@ -1392,13 +1392,13 @@ static int fio_init_server_connection(void)
 	return sk;
 }
 
-int fio_server_parse_host(const char *host, int *ipv6, struct in_addr *inp,
+int fio_server_parse_host(const char *host, int ipv6, struct in_addr *inp,
 			  struct in6_addr *inp6)
 
 {
 	int ret = 0;
 
-	if (*ipv6)
+	if (ipv6)
 		ret = inet_pton(AF_INET6, host, inp6);
 	else
 		ret = inet_pton(AF_INET, host, inp);
@@ -1407,17 +1407,17 @@ int fio_server_parse_host(const char *host, int *ipv6, struct in_addr *inp,
 		struct addrinfo hints, *res;
 
 		memset(&hints, 0, sizeof(hints));
-		hints.ai_family = *ipv6 ? AF_INET6 : AF_INET;
+		hints.ai_family = ipv6 ? AF_INET6 : AF_INET;
 		hints.ai_socktype = SOCK_STREAM;
 
 		ret = getaddrinfo(host, NULL, &hints, &res);
 		if (ret) {
 			log_err("fio: failed to resolve <%s> (%s)\n", host,
 					gai_strerror(ret));
-			return 0;
+			return 1;
 		}
 
-		if (*ipv6)
+		if (ipv6)
 			memcpy(inp6, &((struct sockaddr_in6 *) res->ai_addr)->sin6_addr, sizeof(*inp6));
 		else
 			memcpy(inp, &((struct sockaddr_in *) res->ai_addr)->sin_addr, sizeof(*inp));
@@ -1508,7 +1508,7 @@ int fio_server_parse_string(const char *str, char **ptr, int *is_sock,
 
 	*ptr = strdup(host);
 
-	if (fio_server_parse_host(*ptr, ipv6, inp, inp6)) {
+	if (fio_server_parse_host(*ptr, *ipv6, inp, inp6)) {
 		free(*ptr);
 		*ptr = NULL;
 		return 1;
diff --git a/server.h b/server.h
index 57e15d7..adb190a 100644
--- a/server.h
+++ b/server.h
@@ -156,7 +156,7 @@ extern int fio_net_send_cmd(int, uint16_t, const void *, off_t, uint64_t *, stru
 extern int fio_net_send_simple_cmd(int, uint16_t, uint64_t, struct flist_head *);
 extern void fio_server_set_arg(const char *);
 extern int fio_server_parse_string(const char *, char **, int *, int *, struct in_addr *, struct in6_addr *, int *);
-extern int fio_server_parse_host(const char *, int *, struct in_addr *, struct in6_addr *);
+extern int fio_server_parse_host(const char *, int, struct in_addr *, struct in6_addr *);
 extern const char *fio_server_op(unsigned int);
 extern void fio_server_got_signal(int);
 
diff --git a/thread_options.h b/thread_options.h
index 2f807cd..79c3a89 100644
--- a/thread_options.h
+++ b/thread_options.h
@@ -100,7 +100,7 @@ struct thread_options {
 	unsigned int do_disk_util;
 	unsigned int override_sync;
 	unsigned int rand_repeatable;
-	unsigned int rand_seed;
+	unsigned long long rand_seed;
 	unsigned int use_os_rand;
 	unsigned int log_avg_msec;
 	unsigned int norandommap;
@@ -324,7 +324,7 @@ struct thread_options_pack {
 	uint32_t do_disk_util;
 	uint32_t override_sync;
 	uint32_t rand_repeatable;
-	uint32_t rand_seed;
+	uint64_t rand_seed;
 	uint32_t use_os_rand;
 	uint32_t log_avg_msec;
 	uint32_t norandommap;
--
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




[Index of Archives]     [Linux Kernel]     [Linux SCSI]     [Linux IDE]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux SCSI]

  Powered by Linux