engines/rados: fix build issue with thread_cond_t vs pthread_cond_t
[fio.git] / engines / rdma.c
index 6b173a84a197258a9e7b80f4b3205a8ccb06dc93..f192f432738da6e8fa448766348ae6e4578fee5d 100644 (file)
@@ -30,7 +30,7 @@
 #include <netinet/in.h>
 #include <arpa/inet.h>
 #include <netdb.h>
-#include <sys/poll.h>
+#include <poll.h>
 #include <sys/types.h>
 #include <sys/socket.h>
 #include <sys/time.h>
@@ -791,7 +791,8 @@ static int fio_rdmaio_recv(struct thread_data *td, struct io_u **io_us,
        return i;
 }
 
-static int fio_rdmaio_queue(struct thread_data *td, struct io_u *io_u)
+static enum fio_q_status fio_rdmaio_queue(struct thread_data *td,
+                                         struct io_u *io_u)
 {
        struct rdmaio_data *rd = td->io_ops_data;
 
@@ -1049,7 +1050,7 @@ static int fio_rdmaio_setup_connect(struct thread_data *td, const char *host,
                return err;
 
        /* resolve route */
-       if (strcmp(o->bindname, "") != 0) {
+       if (o->bindname && strlen(o->bindname)) {
                addrb.ss_family = AF_INET;
                err = aton(td, o->bindname, (struct sockaddr_in *)&addrb);
                if (err)
@@ -1115,7 +1116,7 @@ static int fio_rdmaio_setup_listen(struct thread_data *td, short port)
        rd->addr.sin_family = AF_INET;
        rd->addr.sin_port = htons(port);
 
-       if (strcmp(o->bindname, "") == 0)
+       if (!o->bindname || !strlen(o->bindname))
                rd->addr.sin_addr.s_addr = htonl(INADDR_ANY);
        else
                rd->addr.sin_addr.s_addr = htonl(*o->bindname);
@@ -1248,8 +1249,7 @@ static int fio_rdmaio_init(struct thread_data *td)
 {
        struct rdmaio_data *rd = td->io_ops_data;
        struct rdmaio_options *o = td->eo;
-       unsigned int max_bs;
-       int ret, i;
+       int ret;
 
        if (td_rw(td)) {
                log_err("fio: rdma connections must be read OR write\n");
@@ -1317,6 +1317,13 @@ static int fio_rdmaio_init(struct thread_data *td)
                rd->is_client = 1;
                ret = fio_rdmaio_setup_connect(td, td->o.filename, o->port);
        }
+       return ret;
+}
+static int fio_rdmaio_post_init(struct thread_data *td)
+{
+       unsigned int max_bs;
+       int i;
+       struct rdmaio_data *rd = td->io_ops_data;
 
        max_bs = max(td->o.max_bs[DDIR_READ], td->o.max_bs[DDIR_WRITE]);
        rd->send_buf.max_bs = htonl(max_bs);
@@ -1350,7 +1357,7 @@ static int fio_rdmaio_init(struct thread_data *td)
 
        rd->send_buf.nr = htonl(i);
 
-       return ret;
+       return 0;
 }
 
 static void fio_rdmaio_cleanup(struct thread_data *td)
@@ -1387,6 +1394,7 @@ static struct ioengine_ops ioengine_rw = {
        .version                = FIO_IOOPS_VERSION,
        .setup                  = fio_rdmaio_setup,
        .init                   = fio_rdmaio_init,
+       .post_init              = fio_rdmaio_post_init,
        .prep                   = fio_rdmaio_prep,
        .queue                  = fio_rdmaio_queue,
        .commit                 = fio_rdmaio_commit,