Update for RDMA io engine's compatibility
authorYufei Ren <yufei.ren@stonybrook.edu>
Tue, 23 Jul 2013 02:58:05 +0000 (20:58 -0600)
committerJens Axboe <axboe@kernel.dk>
Tue, 23 Jul 2013 02:58:05 +0000 (20:58 -0600)
Since the RDMA engine is not able to be successfully compiled, this
patch accommodates it to the upstream version of fio.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
configure
engines/rdma.c

index 98af5ff38bd3500aec82086c1cd6c37ebb018013..c00a3a46e9adac827649df5d04d1ea59871c7660 100755 (executable)
--- a/configure
+++ b/configure
@@ -1127,7 +1127,7 @@ fi
 if test "$sfaa" = "yes" ; then
   output_sym "CONFIG_SFAA"
 fi
 if test "$sfaa" = "yes" ; then
   output_sym "CONFIG_SFAA"
 fi
-if test "$libverbs" = "yes" -a "rdmacm" = "yes" ; then
+if test "$libverbs" = "yes" -a "$rdmacm" = "yes" ; then
   output_sym "CONFIG_RDMA"
 fi
 if test "$clock_gettime" = "yes" ; then
   output_sym "CONFIG_RDMA"
 fi
 if test "$clock_gettime" = "yes" ; then
index ea1af2ba5dffdd7ae62df40341fe597b0fccfe94..81f167367e90df6f9e2dd439e2ddfdc41f7c08e1 100644 (file)
@@ -528,10 +528,10 @@ static int fio_rdmaio_getevents(struct thread_data *td, unsigned int min,
 {
        struct rdmaio_data *rd = td->io_ops->data;
        enum ibv_wc_opcode comp_opcode;
 {
        struct rdmaio_data *rd = td->io_ops->data;
        enum ibv_wc_opcode comp_opcode;
-       comp_opcode = IBV_WC_RDMA_WRITE;
        struct ibv_cq *ev_cq;
        void *ev_ctx;
        int ret, r = 0;
        struct ibv_cq *ev_cq;
        void *ev_ctx;
        int ret, r = 0;
+       comp_opcode = IBV_WC_RDMA_WRITE;
 
        switch (rd->rdma_protocol) {
        case FIO_RDMA_MEM_WRITE:
 
        switch (rd->rdma_protocol) {
        case FIO_RDMA_MEM_WRITE:
@@ -1049,12 +1049,11 @@ static int check_set_rlimits(struct thread_data *td)
 static int fio_rdmaio_init(struct thread_data *td)
 {
        struct rdmaio_data *rd = td->io_ops->data;
 static int fio_rdmaio_init(struct thread_data *td)
 {
        struct rdmaio_data *rd = td->io_ops->data;
-       struct flist_head *entry;
        unsigned int max_bs;
        unsigned int port;
        char host[64], buf[128];
        char *sep, *portp, *modep;
        unsigned int max_bs;
        unsigned int port;
        char host[64], buf[128];
        char *sep, *portp, *modep;
-       int ret, i = 0;
+       int ret, i;
 
        if (td_rw(td)) {
                log_err("fio: rdma connections must be read OR write\n");
 
        if (td_rw(td)) {
                log_err("fio: rdma connections must be read OR write\n");
@@ -1153,8 +1152,8 @@ static int fio_rdmaio_init(struct thread_data *td)
 
        max_bs = max(td->o.max_bs[DDIR_READ], td->o.max_bs[DDIR_WRITE]);
        /* register each io_u in the free list */
 
        max_bs = max(td->o.max_bs[DDIR_READ], td->o.max_bs[DDIR_WRITE]);
        /* register each io_u in the free list */
-       flist_for_each(entry, &td->io_u_freelist) {
-               struct io_u *io_u = flist_entry(entry, struct io_u, list);
+       for (i = 0; i < td->io_u_freelist.nr; i++) {
+               struct io_u *io_u = td->io_u_freelist.io_us[i];
 
                io_u->engine_data = malloc(sizeof(struct rdma_io_u_data));
                memset(io_u->engine_data, 0, sizeof(struct rdma_io_u_data));
 
                io_u->engine_data = malloc(sizeof(struct rdma_io_u_data));
                memset(io_u->engine_data, 0, sizeof(struct rdma_io_u_data));
@@ -1177,7 +1176,6 @@ static int fio_rdmaio_init(struct thread_data *td)
 #if 0
                log_info("fio: Send rkey %x addr %" PRIx64 " len %d to client\n", io_u->mr->rkey, io_u->buf, max_bs); */
 #endif
 #if 0
                log_info("fio: Send rkey %x addr %" PRIx64 " len %d to client\n", io_u->mr->rkey, io_u->buf, max_bs); */
 #endif
-               i++;
        }
 
        rd->send_buf.nr = htonl(i);
        }
 
        rd->send_buf.nr = htonl(i);