fix net engine client read server write bug
The net engine was updated with specific 'listen' parameter which used
for identifying whether it is a tcp server, instead of previous
'rw=read' side must be the server. This let fio support bi-direction
net io test. fio_netio_open_file() has to follow this
principle. Otherwise, the following tcp client 'rw=read' and tcp
server 'rw=write' case doesn't work.
[global]
ioengine=net
port=8888
protocol=tcp
bs=4k
size=10g
[server]
listen
rw=write
[client]
hostname=localhost
startdelay=1
rw=read
BTW, examples/netio needs 'listen' and 'hostname' adjusted.
Signed-off-by: Jens Axboe <axboe@kernel.dk>
diff --git a/engines/net.c b/engines/net.c
index 3401039..6748a3e 100644
--- a/engines/net.c
+++ b/engines/net.c
@@ -496,8 +496,9 @@
static int fio_netio_open_file(struct thread_data *td, struct fio_file *f)
{
int ret;
+ struct netio_options *o = td->eo;
- if (td_read(td))
+ if (o->listen)
ret = fio_netio_accept(td, f);
else
ret = fio_netio_connect(td, f);
diff --git a/examples/netio b/examples/netio
index bd44adb..3b1a7cd 100644
--- a/examples/netio
+++ b/examples/netio
@@ -2,7 +2,6 @@
[global]
ioengine=net
#Use hostname=/tmp.fio.sock for local unix domain sockets
-hostname=localhost
port=8888
#Use =udp for UDP, =unix for local unix domain socket
protocol=tcp
@@ -12,8 +11,10 @@
#verify=md5
[receiver]
+listen
rw=read
[sender]
+hostname=localhost
startdelay=1
rw=write