50dc83
From 83d816370f7540d4065baac704df65c648a03125 Mon Sep 17 00:00:00 2001
50dc83
From: Poornima G <pgurusid@redhat.com>
50dc83
Date: Sun, 24 Mar 2019 09:40:50 +0530
50dc83
Subject: [PATCH 47/52] client-rpc: Fix the payload being sent on the wire
50dc83
50dc83
The fops allocate 3 kind of payload(buffer) in the client xlator:
50dc83
- fop payload, this is the buffer allocated by the write and put fop
50dc83
- rsphdr paylod, this is the buffer required by the reply cbk of
50dc83
  some fops like lookup, readdir.
50dc83
- rsp_paylod, this is the buffer required by the reply cbk of fops like
50dc83
  readv etc.
50dc83
50dc83
Currently, in the lookup and readdir fop the rsphdr is sent as payload,
50dc83
hence the allocated rsphdr buffer is also sent on the wire, increasing
50dc83
the bandwidth consumption on the wire.
50dc83
50dc83
With this patch, the issue is fixed.
50dc83
50dc83
>Fixes: bz#1692093
50dc83
>Change-Id: Ie8158921f4db319e60ad5f52d851fa5c9d4a269b
50dc83
>Signed-off-by: Poornima G <pgurusid@redhat.com>
50dc83
>Backport-of: https://review.gluster.org/22402/
50dc83
50dc83
BUG: 1693935
50dc83
Change-Id: Id12746a4c9416288bc1387c8b018bbe9cc4b637d
50dc83
Signed-off-by: Poornima G <pgurusid@redhat.com>
50dc83
Reviewed-on: https://code.engineering.redhat.com/gerrit/166535
50dc83
Tested-by: RHGS Build Bot <nigelb@redhat.com>
50dc83
Reviewed-by: Sunil Kumar Heggodu Gopala Acharya <sheggodu@redhat.com>
50dc83
---
50dc83
 xlators/protocol/client/src/client-handshake.c   |  29 ++-
50dc83
 xlators/protocol/client/src/client-helpers.c     |  14 +-
50dc83
 xlators/protocol/client/src/client-rpc-fops.c    | 235 ++++++++++++----------
50dc83
 xlators/protocol/client/src/client-rpc-fops_v2.c | 236 ++++++++++++-----------
50dc83
 xlators/protocol/client/src/client.c             |  22 ++-
50dc83
 xlators/protocol/client/src/client.h             |  16 +-
50dc83
 6 files changed, 308 insertions(+), 244 deletions(-)
50dc83
50dc83
diff --git a/xlators/protocol/client/src/client-handshake.c b/xlators/protocol/client/src/client-handshake.c
50dc83
index f9631c5..c43756a 100644
50dc83
--- a/xlators/protocol/client/src/client-handshake.c
50dc83
+++ b/xlators/protocol/client/src/client-handshake.c
50dc83
@@ -34,7 +34,6 @@ typedef struct client_fd_lk_local {
50dc83
     clnt_fd_ctx_t *fdctx;
50dc83
 } clnt_fd_lk_local_t;
50dc83
 
50dc83
-
50dc83
 int32_t
50dc83
 client3_getspec(call_frame_t *frame, xlator_t *this, void *data)
50dc83
 {
50dc83
@@ -201,8 +200,8 @@ clnt_release_reopen_fd(xlator_t *this, clnt_fd_ctx_t *fdctx)
50dc83
     req.fd = fdctx->remote_fd;
50dc83
 
50dc83
     ret = client_submit_request(this, &req, frame, conf->fops, GFS3_OP_RELEASE,
50dc83
-                                clnt_release_reopen_fd_cbk, NULL, NULL, 0, NULL,
50dc83
-                                0, NULL, (xdrproc_t)xdr_gfs3_releasedir_req);
50dc83
+                                clnt_release_reopen_fd_cbk, NULL,
50dc83
+                                (xdrproc_t)xdr_gfs3_releasedir_req);
50dc83
 out:
50dc83
     if (ret) {
50dc83
         clnt_fd_lk_reacquire_failed(this, fdctx, conf);
50dc83
@@ -486,8 +485,8 @@ protocol_client_reopendir(clnt_fd_ctx_t *fdctx, xlator_t *this)
50dc83
     frame->local = local;
50dc83
 
50dc83
     ret = client_submit_request(this, &req, frame, conf->fops, GFS3_OP_OPENDIR,
50dc83
-                                client3_3_reopendir_cbk, NULL, NULL, 0, NULL, 0,
50dc83
-                                NULL, (xdrproc_t)xdr_gfs3_opendir_req);
50dc83
+                                client3_3_reopendir_cbk, NULL,
50dc83
+                                (xdrproc_t)xdr_gfs3_opendir_req);
50dc83
     if (ret) {
50dc83
         gf_msg(this->name, GF_LOG_ERROR, 0, PC_MSG_DIR_OP_FAILED,
50dc83
                "failed to send the re-opendir request");
50dc83
@@ -547,8 +546,8 @@ protocol_client_reopenfile(clnt_fd_ctx_t *fdctx, xlator_t *this)
50dc83
                  local->loc.path);
50dc83
 
50dc83
     ret = client_submit_request(this, &req, frame, conf->fops, GFS3_OP_OPEN,
50dc83
-                                client3_3_reopen_cbk, NULL, NULL, 0, NULL, 0,
50dc83
-                                NULL, (xdrproc_t)xdr_gfs3_open_req);
50dc83
+                                client3_3_reopen_cbk, NULL,
50dc83
+                                (xdrproc_t)xdr_gfs3_open_req);
50dc83
     if (ret) {
50dc83
         gf_msg(this->name, GF_LOG_ERROR, 0, PC_MSG_DIR_OP_FAILED,
50dc83
                "failed to send the re-open request");
50dc83
@@ -745,8 +744,8 @@ protocol_client_reopendir_v2(clnt_fd_ctx_t *fdctx, xlator_t *this)
50dc83
     frame->local = local;
50dc83
 
50dc83
     ret = client_submit_request(this, &req, frame, conf->fops, GFS3_OP_OPENDIR,
50dc83
-                                client4_0_reopendir_cbk, NULL, NULL, 0, NULL, 0,
50dc83
-                                NULL, (xdrproc_t)xdr_gfx_opendir_req);
50dc83
+                                client4_0_reopendir_cbk, NULL,
50dc83
+                                (xdrproc_t)xdr_gfx_opendir_req);
50dc83
     if (ret) {
50dc83
         gf_msg(this->name, GF_LOG_ERROR, 0, PC_MSG_DIR_OP_FAILED,
50dc83
                "failed to send the re-opendir request");
50dc83
@@ -806,8 +805,8 @@ protocol_client_reopenfile_v2(clnt_fd_ctx_t *fdctx, xlator_t *this)
50dc83
                  local->loc.path);
50dc83
 
50dc83
     ret = client_submit_request(this, &req, frame, conf->fops, GFS3_OP_OPEN,
50dc83
-                                client4_0_reopen_cbk, NULL, NULL, 0, NULL, 0,
50dc83
-                                NULL, (xdrproc_t)xdr_gfx_open_req);
50dc83
+                                client4_0_reopen_cbk, NULL,
50dc83
+                                (xdrproc_t)xdr_gfx_open_req);
50dc83
     if (ret) {
50dc83
         gf_msg(this->name, GF_LOG_ERROR, 0, PC_MSG_DIR_OP_FAILED,
50dc83
                "failed to send the re-open request");
50dc83
@@ -1312,7 +1311,6 @@ client_setvolume(xlator_t *this, struct rpc_clnt *rpc)
50dc83
 
50dc83
     ret = client_submit_request(this, &req, fr, conf->handshake,
50dc83
                                 GF_HNDSK_SETVOLUME, client_setvolume_cbk, NULL,
50dc83
-                                NULL, 0, NULL, 0, NULL,
50dc83
                                 (xdrproc_t)xdr_gf_setvolume_req);
50dc83
 
50dc83
 fail:
50dc83
@@ -1522,8 +1520,7 @@ client_query_portmap(xlator_t *this, struct rpc_clnt *rpc)
50dc83
 
50dc83
     ret = client_submit_request(this, &req, fr, &clnt_pmap_prog,
50dc83
                                 GF_PMAP_PORTBYBRICK, client_query_portmap_cbk,
50dc83
-                                NULL, NULL, 0, NULL, 0, NULL,
50dc83
-                                (xdrproc_t)xdr_pmap_port_by_brick_req);
50dc83
+                                NULL, (xdrproc_t)xdr_pmap_port_by_brick_req);
50dc83
 
50dc83
 fail:
50dc83
     return ret;
50dc83
@@ -1624,8 +1621,8 @@ client_handshake(xlator_t *this, struct rpc_clnt *rpc)
50dc83
 
50dc83
     req.gfs_id = 0xbabe;
50dc83
     ret = client_submit_request(this, &req, frame, conf->dump, GF_DUMP_DUMP,
50dc83
-                                client_dump_version_cbk, NULL, NULL, 0, NULL, 0,
50dc83
-                                NULL, (xdrproc_t)xdr_gf_dump_req);
50dc83
+                                client_dump_version_cbk, NULL,
50dc83
+                                (xdrproc_t)xdr_gf_dump_req);
50dc83
 
50dc83
 out:
50dc83
     return ret;
50dc83
diff --git a/xlators/protocol/client/src/client-helpers.c b/xlators/protocol/client/src/client-helpers.c
50dc83
index 2dd7106..53b4484 100644
50dc83
--- a/xlators/protocol/client/src/client-helpers.c
50dc83
+++ b/xlators/protocol/client/src/client-helpers.c
50dc83
@@ -3082,8 +3082,7 @@ send_release4_0_over_wire(xlator_t *this, clnt_fd_ctx_t *fdctx,
50dc83
         gf_msg_trace(this->name, 0, "sending releasedir on fd");
50dc83
         (void)client_submit_request(
50dc83
             this, &req, fr, conf->fops, GFS3_OP_RELEASEDIR,
50dc83
-            client4_0_releasedir_cbk, NULL, NULL, 0, NULL, 0, NULL,
50dc83
-            (xdrproc_t)xdr_gfx_releasedir_req);
50dc83
+            client4_0_releasedir_cbk, NULL, (xdrproc_t)xdr_gfx_releasedir_req);
50dc83
     } else {
50dc83
         gfx_release_req req = {
50dc83
             {
50dc83
@@ -3094,8 +3093,8 @@ send_release4_0_over_wire(xlator_t *this, clnt_fd_ctx_t *fdctx,
50dc83
         req.fd = fdctx->remote_fd;
50dc83
         gf_msg_trace(this->name, 0, "sending release on fd");
50dc83
         (void)client_submit_request(this, &req, fr, conf->fops, GFS3_OP_RELEASE,
50dc83
-                                    client4_0_release_cbk, NULL, NULL, 0, NULL,
50dc83
-                                    0, NULL, (xdrproc_t)xdr_gfx_release_req);
50dc83
+                                    client4_0_release_cbk, NULL,
50dc83
+                                    (xdrproc_t)xdr_gfx_release_req);
50dc83
     }
50dc83
 
50dc83
     return 0;
50dc83
@@ -3118,8 +3117,7 @@ send_release3_3_over_wire(xlator_t *this, clnt_fd_ctx_t *fdctx,
50dc83
         gf_msg_trace(this->name, 0, "sending releasedir on fd");
50dc83
         (void)client_submit_request(
50dc83
             this, &req, fr, conf->fops, GFS3_OP_RELEASEDIR,
50dc83
-            client3_3_releasedir_cbk, NULL, NULL, 0, NULL, 0, NULL,
50dc83
-            (xdrproc_t)xdr_gfs3_releasedir_req);
50dc83
+            client3_3_releasedir_cbk, NULL, (xdrproc_t)xdr_gfs3_releasedir_req);
50dc83
     } else {
50dc83
         gfs3_release_req req = {
50dc83
             {
50dc83
@@ -3130,8 +3128,8 @@ send_release3_3_over_wire(xlator_t *this, clnt_fd_ctx_t *fdctx,
50dc83
         req.fd = fdctx->remote_fd;
50dc83
         gf_msg_trace(this->name, 0, "sending release on fd");
50dc83
         (void)client_submit_request(this, &req, fr, conf->fops, GFS3_OP_RELEASE,
50dc83
-                                    client3_3_release_cbk, NULL, NULL, 0, NULL,
50dc83
-                                    0, NULL, (xdrproc_t)xdr_gfs3_release_req);
50dc83
+                                    client3_3_release_cbk, NULL,
50dc83
+                                    (xdrproc_t)xdr_gfs3_release_req);
50dc83
     }
50dc83
 
50dc83
     return 0;
50dc83
diff --git a/xlators/protocol/client/src/client-rpc-fops.c b/xlators/protocol/client/src/client-rpc-fops.c
50dc83
index b7df7cc..1c8b31b 100644
50dc83
--- a/xlators/protocol/client/src/client-rpc-fops.c
50dc83
+++ b/xlators/protocol/client/src/client-rpc-fops.c
50dc83
@@ -3234,11 +3234,13 @@ client3_3_lookup(call_frame_t *frame, xlator_t *this, void *data)
50dc83
     struct iobref *rsp_iobref = NULL;
50dc83
     struct iobuf *rsp_iobuf = NULL;
50dc83
     struct iovec *rsphdr = NULL;
50dc83
+    client_payload_t cp;
50dc83
 
50dc83
     if (!frame || !this || !data)
50dc83
         goto unwind;
50dc83
 
50dc83
     memset(vector, 0, sizeof(vector));
50dc83
+    memset(&cp, 0, sizeof(client_payload_t));
50dc83
 
50dc83
     conf = this->private;
50dc83
     args = data;
50dc83
@@ -3288,9 +3290,12 @@ client3_3_lookup(call_frame_t *frame, xlator_t *this, void *data)
50dc83
         op_errno = -ret;
50dc83
         goto unwind;
50dc83
     }
50dc83
+
50dc83
+    cp.rsphdr = rsphdr;
50dc83
+    cp.rsphdr_cnt = count;
50dc83
+    cp.rsp_iobref = local->iobref;
50dc83
     ret = client_submit_request(this, &req, frame, conf->fops, GFS3_OP_LOOKUP,
50dc83
-                                client3_3_lookup_cbk, NULL, rsphdr, count, NULL,
50dc83
-                                0, local->iobref,
50dc83
+                                client3_3_lookup_cbk, &cp,
50dc83
                                 (xdrproc_t)xdr_gfs3_lookup_req);
50dc83
 
50dc83
     if (ret) {
50dc83
@@ -3338,8 +3343,8 @@ client3_3_stat(call_frame_t *frame, xlator_t *this, void *data)
50dc83
         goto unwind;
50dc83
     }
50dc83
     ret = client_submit_request(this, &req, frame, conf->fops, GFS3_OP_STAT,
50dc83
-                                client3_3_stat_cbk, NULL, NULL, 0, NULL, 0,
50dc83
-                                NULL, (xdrproc_t)xdr_gfs3_stat_req);
50dc83
+                                client3_3_stat_cbk, NULL,
50dc83
+                                (xdrproc_t)xdr_gfs3_stat_req);
50dc83
     if (ret) {
50dc83
         gf_msg(this->name, GF_LOG_WARNING, 0, PC_MSG_FOP_SEND_FAILED,
50dc83
                "failed to send the fop");
50dc83
@@ -3381,8 +3386,8 @@ client3_3_truncate(call_frame_t *frame, xlator_t *this, void *data)
50dc83
         goto unwind;
50dc83
     }
50dc83
     ret = client_submit_request(this, &req, frame, conf->fops, GFS3_OP_TRUNCATE,
50dc83
-                                client3_3_truncate_cbk, NULL, NULL, 0, NULL, 0,
50dc83
-                                NULL, (xdrproc_t)xdr_gfs3_truncate_req);
50dc83
+                                client3_3_truncate_cbk, NULL,
50dc83
+                                (xdrproc_t)xdr_gfs3_truncate_req);
50dc83
     if (ret) {
50dc83
         gf_msg(this->name, GF_LOG_WARNING, 0, PC_MSG_FOP_SEND_FAILED,
50dc83
                "failed to send the fop");
50dc83
@@ -3425,8 +3430,7 @@ client3_3_ftruncate(call_frame_t *frame, xlator_t *this, void *data)
50dc83
     }
50dc83
     ret = client_submit_request(this, &req, frame, conf->fops,
50dc83
                                 GFS3_OP_FTRUNCATE, client3_3_ftruncate_cbk,
50dc83
-                                NULL, NULL, 0, NULL, 0, NULL,
50dc83
-                                (xdrproc_t)xdr_gfs3_ftruncate_req);
50dc83
+                                NULL, (xdrproc_t)xdr_gfs3_ftruncate_req);
50dc83
     if (ret) {
50dc83
         gf_msg(this->name, GF_LOG_WARNING, 0, PC_MSG_FOP_SEND_FAILED,
50dc83
                "failed to send the fop");
50dc83
@@ -3468,8 +3472,8 @@ client3_3_access(call_frame_t *frame, xlator_t *this, void *data)
50dc83
         goto unwind;
50dc83
     }
50dc83
     ret = client_submit_request(this, &req, frame, conf->fops, GFS3_OP_ACCESS,
50dc83
-                                client3_3_access_cbk, NULL, NULL, 0, NULL, 0,
50dc83
-                                NULL, (xdrproc_t)xdr_gfs3_access_req);
50dc83
+                                client3_3_access_cbk, NULL,
50dc83
+                                (xdrproc_t)xdr_gfs3_access_req);
50dc83
     if (ret) {
50dc83
         gf_msg(this->name, GF_LOG_WARNING, 0, PC_MSG_FOP_SEND_FAILED,
50dc83
                "failed to send the fop");
50dc83
@@ -3505,10 +3509,12 @@ client3_3_readlink(call_frame_t *frame, xlator_t *this, void *data)
50dc83
     struct iovec vector[MAX_IOVEC] = {
50dc83
         {0},
50dc83
     };
50dc83
+    client_payload_t cp;
50dc83
 
50dc83
     if (!frame || !this || !data)
50dc83
         goto unwind;
50dc83
 
50dc83
+    memset(&cp, 0, sizeof(client_payload_t));
50dc83
     args = data;
50dc83
 
50dc83
     conf = this->private;
50dc83
@@ -3547,9 +3553,11 @@ client3_3_readlink(call_frame_t *frame, xlator_t *this, void *data)
50dc83
     rsp_iobuf = NULL;
50dc83
     rsp_iobref = NULL;
50dc83
 
50dc83
+    cp.rsphdr = rsphdr;
50dc83
+    cp.rsphdr_cnt = count;
50dc83
+    cp.rsp_iobref = local->iobref;
50dc83
     ret = client_submit_request(this, &req, frame, conf->fops, GFS3_OP_READLINK,
50dc83
-                                client3_3_readlink_cbk, NULL, rsphdr, count,
50dc83
-                                NULL, 0, local->iobref,
50dc83
+                                client3_3_readlink_cbk, &cp,
50dc83
                                 (xdrproc_t)xdr_gfs3_readlink_req);
50dc83
     if (ret) {
50dc83
         gf_msg(this->name, GF_LOG_WARNING, 0, PC_MSG_FOP_SEND_FAILED,
50dc83
@@ -3595,8 +3603,8 @@ client3_3_unlink(call_frame_t *frame, xlator_t *this, void *data)
50dc83
         goto unwind;
50dc83
     }
50dc83
     ret = client_submit_request(this, &req, frame, conf->fops, GFS3_OP_UNLINK,
50dc83
-                                client3_3_unlink_cbk, NULL, NULL, 0, NULL, 0,
50dc83
-                                NULL, (xdrproc_t)xdr_gfs3_unlink_req);
50dc83
+                                client3_3_unlink_cbk, NULL,
50dc83
+                                (xdrproc_t)xdr_gfs3_unlink_req);
50dc83
     if (ret) {
50dc83
         gf_msg(this->name, GF_LOG_WARNING, 0, PC_MSG_FOP_SEND_FAILED,
50dc83
                "failed to send the fop");
50dc83
@@ -3638,8 +3646,8 @@ client3_3_rmdir(call_frame_t *frame, xlator_t *this, void *data)
50dc83
         goto unwind;
50dc83
     }
50dc83
     ret = client_submit_request(this, &req, frame, conf->fops, GFS3_OP_RMDIR,
50dc83
-                                client3_3_rmdir_cbk, NULL, NULL, 0, NULL, 0,
50dc83
-                                NULL, (xdrproc_t)xdr_gfs3_rmdir_req);
50dc83
+                                client3_3_rmdir_cbk, NULL,
50dc83
+                                (xdrproc_t)xdr_gfs3_rmdir_req);
50dc83
     if (ret) {
50dc83
         gf_msg(this->name, GF_LOG_WARNING, 0, PC_MSG_FOP_SEND_FAILED,
50dc83
                "failed to send the fop");
50dc83
@@ -3697,8 +3705,8 @@ client3_3_symlink(call_frame_t *frame, xlator_t *this, void *data)
50dc83
         goto unwind;
50dc83
     }
50dc83
     ret = client_submit_request(this, &req, frame, conf->fops, GFS3_OP_SYMLINK,
50dc83
-                                client3_3_symlink_cbk, NULL, NULL, 0, NULL, 0,
50dc83
-                                NULL, (xdrproc_t)xdr_gfs3_symlink_req);
50dc83
+                                client3_3_symlink_cbk, NULL,
50dc83
+                                (xdrproc_t)xdr_gfs3_symlink_req);
50dc83
     if (ret) {
50dc83
         gf_msg(this->name, GF_LOG_WARNING, 0, PC_MSG_FOP_SEND_FAILED,
50dc83
                "failed to send the fop");
50dc83
@@ -3743,8 +3751,8 @@ client3_3_rename(call_frame_t *frame, xlator_t *this, void *data)
50dc83
         goto unwind;
50dc83
     }
50dc83
     ret = client_submit_request(this, &req, frame, conf->fops, GFS3_OP_RENAME,
50dc83
-                                client3_3_rename_cbk, NULL, NULL, 0, NULL, 0,
50dc83
-                                NULL, (xdrproc_t)xdr_gfs3_rename_req);
50dc83
+                                client3_3_rename_cbk, NULL,
50dc83
+                                (xdrproc_t)xdr_gfs3_rename_req);
50dc83
     if (ret) {
50dc83
         gf_msg(this->name, GF_LOG_WARNING, 0, PC_MSG_FOP_SEND_FAILED,
50dc83
                "failed to send the fop");
50dc83
@@ -3802,8 +3810,8 @@ client3_3_link(call_frame_t *frame, xlator_t *this, void *data)
50dc83
     loc_path(&local->loc2, NULL);
50dc83
 
50dc83
     ret = client_submit_request(this, &req, frame, conf->fops, GFS3_OP_LINK,
50dc83
-                                client3_3_link_cbk, NULL, NULL, 0, NULL, 0,
50dc83
-                                NULL, (xdrproc_t)xdr_gfs3_link_req);
50dc83
+                                client3_3_link_cbk, NULL,
50dc83
+                                (xdrproc_t)xdr_gfs3_link_req);
50dc83
     if (ret) {
50dc83
         gf_msg(this->name, GF_LOG_WARNING, 0, PC_MSG_FOP_SEND_FAILED,
50dc83
                "failed to send the fop");
50dc83
@@ -3857,8 +3865,8 @@ client3_3_mknod(call_frame_t *frame, xlator_t *this, void *data)
50dc83
         goto unwind;
50dc83
     }
50dc83
     ret = client_submit_request(this, &req, frame, conf->fops, GFS3_OP_MKNOD,
50dc83
-                                client3_3_mknod_cbk, NULL, NULL, 0, NULL, 0,
50dc83
-                                NULL, (xdrproc_t)xdr_gfs3_mknod_req);
50dc83
+                                client3_3_mknod_cbk, NULL,
50dc83
+                                (xdrproc_t)xdr_gfs3_mknod_req);
50dc83
     if (ret) {
50dc83
         gf_msg(this->name, GF_LOG_WARNING, 0, PC_MSG_FOP_SEND_FAILED,
50dc83
                "failed to send the fop");
50dc83
@@ -3924,8 +3932,8 @@ client3_3_mkdir(call_frame_t *frame, xlator_t *this, void *data)
50dc83
         goto unwind;
50dc83
     }
50dc83
     ret = client_submit_request(this, &req, frame, conf->fops, GFS3_OP_MKDIR,
50dc83
-                                client3_3_mkdir_cbk, NULL, NULL, 0, NULL, 0,
50dc83
-                                NULL, (xdrproc_t)xdr_gfs3_mkdir_req);
50dc83
+                                client3_3_mkdir_cbk, NULL,
50dc83
+                                (xdrproc_t)xdr_gfs3_mkdir_req);
50dc83
     if (ret) {
50dc83
         gf_msg(this->name, GF_LOG_WARNING, 0, PC_MSG_FOP_SEND_FAILED,
50dc83
                "failed to send the fop");
50dc83
@@ -3982,8 +3990,8 @@ client3_3_create(call_frame_t *frame, xlator_t *this, void *data)
50dc83
         goto unwind;
50dc83
     }
50dc83
     ret = client_submit_request(this, &req, frame, conf->fops, GFS3_OP_CREATE,
50dc83
-                                client3_3_create_cbk, NULL, NULL, 0, NULL, 0,
50dc83
-                                NULL, (xdrproc_t)xdr_gfs3_create_req);
50dc83
+                                client3_3_create_cbk, NULL,
50dc83
+                                (xdrproc_t)xdr_gfs3_create_req);
50dc83
     if (ret) {
50dc83
         gf_msg(this->name, GF_LOG_WARNING, 0, PC_MSG_FOP_SEND_FAILED,
50dc83
                "failed to send the fop");
50dc83
@@ -4043,8 +4051,8 @@ client3_3_open(call_frame_t *frame, xlator_t *this, void *data)
50dc83
         goto unwind;
50dc83
     }
50dc83
     ret = client_submit_request(this, &req, frame, conf->fops, GFS3_OP_OPEN,
50dc83
-                                client3_3_open_cbk, NULL, NULL, 0, NULL, 0,
50dc83
-                                NULL, (xdrproc_t)xdr_gfs3_open_req);
50dc83
+                                client3_3_open_cbk, NULL,
50dc83
+                                (xdrproc_t)xdr_gfs3_open_req);
50dc83
     if (ret) {
50dc83
         gf_msg(this->name, GF_LOG_WARNING, 0, PC_MSG_FOP_SEND_FAILED,
50dc83
                "failed to send the fop");
50dc83
@@ -4079,10 +4087,12 @@ client3_3_readv(call_frame_t *frame, xlator_t *this, void *data)
50dc83
     };
50dc83
     struct iobuf *rsp_iobuf = NULL;
50dc83
     struct iobref *rsp_iobref = NULL;
50dc83
+    client_payload_t cp;
50dc83
 
50dc83
     if (!frame || !this || !data)
50dc83
         goto unwind;
50dc83
 
50dc83
+    memset(&cp, 0, sizeof(client_payload_t));
50dc83
     args = data;
50dc83
     conf = this->private;
50dc83
 
50dc83
@@ -4130,9 +4140,12 @@ client3_3_readv(call_frame_t *frame, xlator_t *this, void *data)
50dc83
     local->iobref = rsp_iobref;
50dc83
     rsp_iobref = NULL;
50dc83
 
50dc83
+    cp.rsp_payload = &rsp_vec;
50dc83
+    cp.rsp_payload_cnt = 1;
50dc83
+    cp.rsp_iobref = local->iobref;
50dc83
     ret = client_submit_request(this, &req, frame, conf->fops, GFS3_OP_READ,
50dc83
-                                client3_3_readv_cbk, NULL, NULL, 0, &rsp_vec, 1,
50dc83
-                                local->iobref, (xdrproc_t)xdr_gfs3_read_req);
50dc83
+                                client3_3_readv_cbk, &cp,
50dc83
+                                (xdrproc_t)xdr_gfs3_read_req);
50dc83
     if (ret) {
50dc83
         // unwind is done in the cbk
50dc83
         gf_msg(this->name, GF_LOG_WARNING, 0, PC_MSG_FOP_SEND_FAILED,
50dc83
@@ -4167,10 +4180,12 @@ client3_3_writev(call_frame_t *frame, xlator_t *this, void *data)
50dc83
     };
50dc83
     int op_errno = ESTALE;
50dc83
     int ret = 0;
50dc83
+    client_payload_t cp;
50dc83
 
50dc83
     if (!frame || !this || !data)
50dc83
         goto unwind;
50dc83
 
50dc83
+    memset(&cp, 0, sizeof(client_payload_t));
50dc83
     args = data;
50dc83
     conf = this->private;
50dc83
 
50dc83
@@ -4187,9 +4202,12 @@ client3_3_writev(call_frame_t *frame, xlator_t *this, void *data)
50dc83
         op_errno = -ret;
50dc83
         goto unwind;
50dc83
     }
50dc83
+
50dc83
+    cp.iobref = args->iobref;
50dc83
+    cp.payload = args->vector;
50dc83
+    cp.payload_cnt = args->count;
50dc83
     ret = client_submit_request(this, &req, frame, conf->fops, GFS3_OP_WRITE,
50dc83
-                                client3_3_writev_cbk, args->iobref,
50dc83
-                                args->vector, args->count, NULL, 0, NULL,
50dc83
+                                client3_3_writev_cbk, &cp,
50dc83
                                 (xdrproc_t)xdr_gfs3_write_req);
50dc83
     if (ret) {
50dc83
         /*
50dc83
@@ -4248,8 +4266,8 @@ client3_3_flush(call_frame_t *frame, xlator_t *this, void *data)
50dc83
         goto unwind;
50dc83
     }
50dc83
     ret = client_submit_request(this, &req, frame, conf->fops, GFS3_OP_FLUSH,
50dc83
-                                client3_3_flush_cbk, NULL, NULL, 0, NULL, 0,
50dc83
-                                NULL, (xdrproc_t)xdr_gfs3_flush_req);
50dc83
+                                client3_3_flush_cbk, NULL,
50dc83
+                                (xdrproc_t)xdr_gfs3_flush_req);
50dc83
     if (ret) {
50dc83
         gf_msg(this->name, GF_LOG_WARNING, 0, PC_MSG_FOP_SEND_FAILED,
50dc83
                "failed to send the fop");
50dc83
@@ -4291,8 +4309,8 @@ client3_3_fsync(call_frame_t *frame, xlator_t *this, void *data)
50dc83
         goto unwind;
50dc83
     }
50dc83
     ret = client_submit_request(this, &req, frame, conf->fops, GFS3_OP_FSYNC,
50dc83
-                                client3_3_fsync_cbk, NULL, NULL, 0, NULL, 0,
50dc83
-                                NULL, (xdrproc_t)xdr_gfs3_fsync_req);
50dc83
+                                client3_3_fsync_cbk, NULL,
50dc83
+                                (xdrproc_t)xdr_gfs3_fsync_req);
50dc83
     if (ret) {
50dc83
         gf_msg(this->name, GF_LOG_WARNING, 0, PC_MSG_FOP_SEND_FAILED,
50dc83
                "failed to send the fop");
50dc83
@@ -4336,8 +4354,8 @@ client3_3_fstat(call_frame_t *frame, xlator_t *this, void *data)
50dc83
     }
50dc83
 
50dc83
     ret = client_submit_request(this, &req, frame, conf->fops, GFS3_OP_FSTAT,
50dc83
-                                client3_3_fstat_cbk, NULL, NULL, 0, NULL, 0,
50dc83
-                                NULL, (xdrproc_t)xdr_gfs3_fstat_req);
50dc83
+                                client3_3_fstat_cbk, NULL,
50dc83
+                                (xdrproc_t)xdr_gfs3_fstat_req);
50dc83
     if (ret) {
50dc83
         gf_msg(this->name, GF_LOG_WARNING, 0, PC_MSG_FOP_SEND_FAILED,
50dc83
                "failed to send the fop");
50dc83
@@ -4391,8 +4409,8 @@ client3_3_opendir(call_frame_t *frame, xlator_t *this, void *data)
50dc83
         goto unwind;
50dc83
     }
50dc83
     ret = client_submit_request(this, &req, frame, conf->fops, GFS3_OP_OPENDIR,
50dc83
-                                client3_3_opendir_cbk, NULL, NULL, 0, NULL, 0,
50dc83
-                                NULL, (xdrproc_t)xdr_gfs3_opendir_req);
50dc83
+                                client3_3_opendir_cbk, NULL,
50dc83
+                                (xdrproc_t)xdr_gfs3_opendir_req);
50dc83
     if (ret) {
50dc83
         gf_msg(this->name, GF_LOG_WARNING, 0, PC_MSG_FOP_SEND_FAILED,
50dc83
                "failed to send the fop");
50dc83
@@ -4435,8 +4453,8 @@ client3_3_fsyncdir(call_frame_t *frame, xlator_t *this, void *data)
50dc83
         goto unwind;
50dc83
     }
50dc83
     ret = client_submit_request(this, &req, frame, conf->fops, GFS3_OP_FSYNCDIR,
50dc83
-                                client3_3_fsyncdir_cbk, NULL, NULL, 0, NULL, 0,
50dc83
-                                NULL, (xdrproc_t)xdr_gfs3_fsyncdir_req);
50dc83
+                                client3_3_fsyncdir_cbk, NULL,
50dc83
+                                (xdrproc_t)xdr_gfs3_fsyncdir_req);
50dc83
     if (ret) {
50dc83
         gf_msg(this->name, GF_LOG_WARNING, 0, PC_MSG_FOP_SEND_FAILED,
50dc83
                "failed to send the fop");
50dc83
@@ -4479,8 +4497,8 @@ client3_3_statfs(call_frame_t *frame, xlator_t *this, void *data)
50dc83
         goto unwind;
50dc83
     }
50dc83
     ret = client_submit_request(this, &req, frame, conf->fops, GFS3_OP_STATFS,
50dc83
-                                client3_3_statfs_cbk, NULL, NULL, 0, NULL, 0,
50dc83
-                                NULL, (xdrproc_t)xdr_gfs3_statfs_req);
50dc83
+                                client3_3_statfs_cbk, NULL,
50dc83
+                                (xdrproc_t)xdr_gfs3_statfs_req);
50dc83
     if (ret) {
50dc83
         gf_msg(this->name, GF_LOG_WARNING, 0, PC_MSG_FOP_SEND_FAILED,
50dc83
                "failed to send the fop");
50dc83
@@ -4523,8 +4541,8 @@ client3_3_setxattr(call_frame_t *frame, xlator_t *this, void *data)
50dc83
         goto unwind;
50dc83
     }
50dc83
     ret = client_submit_request(this, &req, frame, conf->fops, GFS3_OP_SETXATTR,
50dc83
-                                client3_3_setxattr_cbk, NULL, NULL, 0, NULL, 0,
50dc83
-                                NULL, (xdrproc_t)xdr_gfs3_setxattr_req);
50dc83
+                                client3_3_setxattr_cbk, NULL,
50dc83
+                                (xdrproc_t)xdr_gfs3_setxattr_req);
50dc83
     if (ret) {
50dc83
         gf_msg(this->name, GF_LOG_WARNING, 0, PC_MSG_FOP_SEND_FAILED,
50dc83
                "failed to send the fop");
50dc83
@@ -4570,8 +4588,7 @@ client3_3_fsetxattr(call_frame_t *frame, xlator_t *this, void *data)
50dc83
     }
50dc83
     ret = client_submit_request(this, &req, frame, conf->fops,
50dc83
                                 GFS3_OP_FSETXATTR, client3_3_fsetxattr_cbk,
50dc83
-                                NULL, NULL, 0, NULL, 0, NULL,
50dc83
-                                (xdrproc_t)xdr_gfs3_fsetxattr_req);
50dc83
+                                NULL, (xdrproc_t)xdr_gfs3_fsetxattr_req);
50dc83
     if (ret) {
50dc83
         gf_msg(this->name, GF_LOG_WARNING, 0, PC_MSG_FOP_SEND_FAILED,
50dc83
                "failed to send the fop");
50dc83
@@ -4611,10 +4628,12 @@ client3_3_fgetxattr(call_frame_t *frame, xlator_t *this, void *data)
50dc83
     struct iovec vector[MAX_IOVEC] = {
50dc83
         {0},
50dc83
     };
50dc83
+    client_payload_t cp;
50dc83
 
50dc83
     if (!frame || !this || !data)
50dc83
         goto unwind;
50dc83
 
50dc83
+    memset(&cp, 0, sizeof(client_payload_t));
50dc83
     args = data;
50dc83
     conf = this->private;
50dc83
 
50dc83
@@ -4654,9 +4673,12 @@ client3_3_fgetxattr(call_frame_t *frame, xlator_t *this, void *data)
50dc83
         op_errno = -ret;
50dc83
         goto unwind;
50dc83
     }
50dc83
+
50dc83
+    cp.rsphdr = rsphdr;
50dc83
+    cp.rsphdr_cnt = count;
50dc83
+    cp.rsp_iobref = local->iobref;
50dc83
     ret = client_submit_request(this, &req, frame, conf->fops,
50dc83
-                                GFS3_OP_FGETXATTR, client3_3_fgetxattr_cbk,
50dc83
-                                NULL, rsphdr, count, NULL, 0, local->iobref,
50dc83
+                                GFS3_OP_FGETXATTR, client3_3_fgetxattr_cbk, &cp,
50dc83
                                 (xdrproc_t)xdr_gfs3_fgetxattr_req);
50dc83
     if (ret) {
50dc83
         gf_msg(this->name, GF_LOG_WARNING, 0, PC_MSG_FOP_SEND_FAILED,
50dc83
@@ -4699,11 +4721,14 @@ client3_3_getxattr(call_frame_t *frame, xlator_t *this, void *data)
50dc83
     struct iovec vector[MAX_IOVEC] = {
50dc83
         {0},
50dc83
     };
50dc83
+    client_payload_t cp;
50dc83
 
50dc83
     if (!frame || !this || !data) {
50dc83
         op_errno = 0;
50dc83
         goto unwind;
50dc83
     }
50dc83
+
50dc83
+    memset(&cp, 0, sizeof(client_payload_t));
50dc83
     args = data;
50dc83
 
50dc83
     local = mem_get0(this->local_pool);
50dc83
@@ -4775,9 +4800,12 @@ client3_3_getxattr(call_frame_t *frame, xlator_t *this, void *data)
50dc83
         op_errno = -ret;
50dc83
         goto unwind;
50dc83
     }
50dc83
+
50dc83
+    cp.rsphdr = rsphdr;
50dc83
+    cp.rsphdr_cnt = count;
50dc83
+    cp.rsp_iobref = local->iobref;
50dc83
     ret = client_submit_request(this, &req, frame, conf->fops, GFS3_OP_GETXATTR,
50dc83
-                                client3_3_getxattr_cbk, NULL, rsphdr, count,
50dc83
-                                NULL, 0, local->iobref,
50dc83
+                                client3_3_getxattr_cbk, &cp,
50dc83
                                 (xdrproc_t)xdr_gfs3_getxattr_req);
50dc83
     if (ret) {
50dc83
         gf_msg(this->name, GF_LOG_WARNING, 0, PC_MSG_FOP_SEND_FAILED,
50dc83
@@ -4822,10 +4850,12 @@ client3_3_xattrop(call_frame_t *frame, xlator_t *this, void *data)
50dc83
     struct iovec vector[MAX_IOVEC] = {
50dc83
         {0},
50dc83
     };
50dc83
+    client_payload_t cp;
50dc83
 
50dc83
     if (!frame || !this || !data)
50dc83
         goto unwind;
50dc83
 
50dc83
+    memset(&cp, 0, sizeof(client_payload_t));
50dc83
     args = data;
50dc83
 
50dc83
     if (!(args->loc && args->loc->inode))
50dc83
@@ -4871,9 +4901,12 @@ client3_3_xattrop(call_frame_t *frame, xlator_t *this, void *data)
50dc83
         op_errno = -ret;
50dc83
         goto unwind;
50dc83
     }
50dc83
+
50dc83
+    cp.rsphdr = rsphdr;
50dc83
+    cp.rsphdr_cnt = count;
50dc83
+    cp.rsp_iobref = local->iobref;
50dc83
     ret = client_submit_request(this, &req, frame, conf->fops, GFS3_OP_XATTROP,
50dc83
-                                client3_3_xattrop_cbk, NULL, rsphdr, count,
50dc83
-                                NULL, 0, local->iobref,
50dc83
+                                client3_3_xattrop_cbk, &cp,
50dc83
                                 (xdrproc_t)xdr_gfs3_xattrop_req);
50dc83
     if (ret) {
50dc83
         gf_msg(this->name, GF_LOG_WARNING, 0, PC_MSG_FOP_SEND_FAILED,
50dc83
@@ -4918,10 +4951,12 @@ client3_3_fxattrop(call_frame_t *frame, xlator_t *this, void *data)
50dc83
     struct iovec vector[MAX_IOVEC] = {
50dc83
         {0},
50dc83
     };
50dc83
+    client_payload_t cp;
50dc83
 
50dc83
     if (!frame || !this || !data)
50dc83
         goto unwind;
50dc83
 
50dc83
+    memset(&cp, 0, sizeof(client_payload_t));
50dc83
     args = data;
50dc83
     conf = this->private;
50dc83
 
50dc83
@@ -4962,9 +4997,11 @@ client3_3_fxattrop(call_frame_t *frame, xlator_t *this, void *data)
50dc83
     rsp_iobuf = NULL;
50dc83
     rsp_iobref = NULL;
50dc83
 
50dc83
+    cp.rsphdr = rsphdr;
50dc83
+    cp.rsphdr_cnt = count;
50dc83
+    cp.rsp_iobref = local->iobref;
50dc83
     ret = client_submit_request(this, &req, frame, conf->fops, GFS3_OP_FXATTROP,
50dc83
-                                client3_3_fxattrop_cbk, NULL, rsphdr, count,
50dc83
-                                NULL, 0, local->iobref,
50dc83
+                                client3_3_fxattrop_cbk, &cp,
50dc83
                                 (xdrproc_t)xdr_gfs3_fxattrop_req);
50dc83
     if (ret) {
50dc83
         gf_msg(this->name, GF_LOG_WARNING, 0, PC_MSG_FOP_SEND_FAILED,
50dc83
@@ -5016,8 +5053,7 @@ client3_3_removexattr(call_frame_t *frame, xlator_t *this, void *data)
50dc83
     }
50dc83
     ret = client_submit_request(this, &req, frame, conf->fops,
50dc83
                                 GFS3_OP_REMOVEXATTR, client3_3_removexattr_cbk,
50dc83
-                                NULL, NULL, 0, NULL, 0, NULL,
50dc83
-                                (xdrproc_t)xdr_gfs3_removexattr_req);
50dc83
+                                NULL, (xdrproc_t)xdr_gfs3_removexattr_req);
50dc83
     if (ret) {
50dc83
         gf_msg(this->name, GF_LOG_WARNING, 0, PC_MSG_FOP_SEND_FAILED,
50dc83
                "failed to send the fop");
50dc83
@@ -5059,10 +5095,9 @@ client3_3_fremovexattr(call_frame_t *frame, xlator_t *this, void *data)
50dc83
         op_errno = -ret;
50dc83
         goto unwind;
50dc83
     }
50dc83
-    ret = client_submit_request(this, &req, frame, conf->fops,
50dc83
-                                GFS3_OP_FREMOVEXATTR,
50dc83
-                                client3_3_fremovexattr_cbk, NULL, NULL, 0, NULL,
50dc83
-                                0, NULL, (xdrproc_t)xdr_gfs3_fremovexattr_req);
50dc83
+    ret = client_submit_request(
50dc83
+        this, &req, frame, conf->fops, GFS3_OP_FREMOVEXATTR,
50dc83
+        client3_3_fremovexattr_cbk, NULL, (xdrproc_t)xdr_gfs3_fremovexattr_req);
50dc83
     if (ret) {
50dc83
         gf_msg(this->name, GF_LOG_WARNING, 0, PC_MSG_FOP_SEND_FAILED,
50dc83
                "failed to send the fop");
50dc83
@@ -5104,8 +5139,8 @@ client3_3_lease(call_frame_t *frame, xlator_t *this, void *data)
50dc83
         goto unwind;
50dc83
     }
50dc83
     ret = client_submit_request(this, &req, frame, conf->fops, GFS3_OP_LEASE,
50dc83
-                                client3_3_lease_cbk, NULL, NULL, 0, NULL, 0,
50dc83
-                                NULL, (xdrproc_t)xdr_gfs3_lease_req);
50dc83
+                                client3_3_lease_cbk, NULL,
50dc83
+                                (xdrproc_t)xdr_gfs3_lease_req);
50dc83
     if (ret) {
50dc83
         gf_msg(this->name, GF_LOG_WARNING, 0, PC_MSG_FOP_SEND_FAILED,
50dc83
                "failed to send the fop");
50dc83
@@ -5167,7 +5202,7 @@ client3_3_lk(call_frame_t *frame, xlator_t *this, void *data)
50dc83
         goto unwind;
50dc83
     }
50dc83
     ret = client_submit_request(this, &req, frame, conf->fops, GFS3_OP_LK,
50dc83
-                                client3_3_lk_cbk, NULL, NULL, 0, NULL, 0, NULL,
50dc83
+                                client3_3_lk_cbk, NULL,
50dc83
                                 (xdrproc_t)xdr_gfs3_lk_req);
50dc83
     if (ret) {
50dc83
         gf_msg(this->name, GF_LOG_WARNING, 0, PC_MSG_FOP_SEND_FAILED,
50dc83
@@ -5210,8 +5245,8 @@ client3_3_inodelk(call_frame_t *frame, xlator_t *this, void *data)
50dc83
         goto unwind;
50dc83
     }
50dc83
     ret = client_submit_request(this, &req, frame, conf->fops, GFS3_OP_INODELK,
50dc83
-                                client3_3_inodelk_cbk, NULL, NULL, 0, NULL, 0,
50dc83
-                                NULL, (xdrproc_t)xdr_gfs3_inodelk_req);
50dc83
+                                client3_3_inodelk_cbk, NULL,
50dc83
+                                (xdrproc_t)xdr_gfs3_inodelk_req);
50dc83
     if (ret) {
50dc83
         gf_msg(this->name, GF_LOG_WARNING, 0, PC_MSG_FOP_SEND_FAILED,
50dc83
                "failed to send the fop");
50dc83
@@ -5260,8 +5295,8 @@ client3_3_finodelk(call_frame_t *frame, xlator_t *this, void *data)
50dc83
     }
50dc83
 
50dc83
     ret = client_submit_request(this, &req, frame, conf->fops, GFS3_OP_FINODELK,
50dc83
-                                client3_3_finodelk_cbk, NULL, NULL, 0, NULL, 0,
50dc83
-                                NULL, (xdrproc_t)xdr_gfs3_finodelk_req);
50dc83
+                                client3_3_finodelk_cbk, NULL,
50dc83
+                                (xdrproc_t)xdr_gfs3_finodelk_req);
50dc83
     if (ret) {
50dc83
         gf_msg(this->name, GF_LOG_WARNING, 0, PC_MSG_FOP_SEND_FAILED,
50dc83
                "failed to send the fop");
50dc83
@@ -5305,8 +5340,8 @@ client3_3_entrylk(call_frame_t *frame, xlator_t *this, void *data)
50dc83
     }
50dc83
 
50dc83
     ret = client_submit_request(this, &req, frame, conf->fops, GFS3_OP_ENTRYLK,
50dc83
-                                client3_3_entrylk_cbk, NULL, NULL, 0, NULL, 0,
50dc83
-                                NULL, (xdrproc_t)xdr_gfs3_entrylk_req);
50dc83
+                                client3_3_entrylk_cbk, NULL,
50dc83
+                                (xdrproc_t)xdr_gfs3_entrylk_req);
50dc83
     if (ret) {
50dc83
         gf_msg(this->name, GF_LOG_WARNING, 0, PC_MSG_FOP_SEND_FAILED,
50dc83
                "failed to send the fop");
50dc83
@@ -5349,8 +5384,8 @@ client3_3_fentrylk(call_frame_t *frame, xlator_t *this, void *data)
50dc83
         goto unwind;
50dc83
     }
50dc83
     ret = client_submit_request(this, &req, frame, conf->fops, GFS3_OP_FENTRYLK,
50dc83
-                                client3_3_fentrylk_cbk, NULL, NULL, 0, NULL, 0,
50dc83
-                                NULL, (xdrproc_t)xdr_gfs3_fentrylk_req);
50dc83
+                                client3_3_fentrylk_cbk, NULL,
50dc83
+                                (xdrproc_t)xdr_gfs3_fentrylk_req);
50dc83
     if (ret) {
50dc83
         gf_msg(this->name, GF_LOG_WARNING, 0, PC_MSG_FOP_SEND_FAILED,
50dc83
                "failed to send the fop");
50dc83
@@ -5391,8 +5426,7 @@ client3_3_rchecksum(call_frame_t *frame, xlator_t *this, void *data)
50dc83
     }
50dc83
     ret = client_submit_request(this, &req, frame, conf->fops,
50dc83
                                 GFS3_OP_RCHECKSUM, client3_3_rchecksum_cbk,
50dc83
-                                NULL, NULL, 0, NULL, 0, NULL,
50dc83
-                                (xdrproc_t)xdr_gfs3_rchecksum_req);
50dc83
+                                NULL, (xdrproc_t)xdr_gfs3_rchecksum_req);
50dc83
     if (ret) {
50dc83
         gf_msg(this->name, GF_LOG_WARNING, 0, PC_MSG_FOP_SEND_FAILED,
50dc83
                "failed to send the fop");
50dc83
@@ -5433,10 +5467,12 @@ client3_3_readdir(call_frame_t *frame, xlator_t *this, void *data)
50dc83
         {0},
50dc83
     };
50dc83
     int readdir_rsp_size = 0;
50dc83
+    client_payload_t cp;
50dc83
 
50dc83
     if (!frame || !this || !data)
50dc83
         goto unwind;
50dc83
 
50dc83
+    memset(&cp, 0, sizeof(client_payload_t));
50dc83
     args = data;
50dc83
     conf = this->private;
50dc83
 
50dc83
@@ -5486,9 +5522,11 @@ client3_3_readdir(call_frame_t *frame, xlator_t *this, void *data)
50dc83
         goto unwind;
50dc83
     }
50dc83
 
50dc83
+    cp.rsphdr = rsphdr;
50dc83
+    cp.rsphdr_cnt = count;
50dc83
+    cp.rsp_iobref = rsp_iobref;
50dc83
     ret = client_submit_request(this, &req, frame, conf->fops, GFS3_OP_READDIR,
50dc83
-                                client3_3_readdir_cbk, NULL, rsphdr, count,
50dc83
-                                NULL, 0, rsp_iobref,
50dc83
+                                client3_3_readdir_cbk, &cp,
50dc83
                                 (xdrproc_t)xdr_gfs3_readdir_req);
50dc83
 
50dc83
     if (ret) {
50dc83
@@ -5534,10 +5572,12 @@ client3_3_readdirp(call_frame_t *frame, xlator_t *this, void *data)
50dc83
         {0},
50dc83
     };
50dc83
     clnt_local_t *local = NULL;
50dc83
+    client_payload_t cp;
50dc83
 
50dc83
     if (!frame || !this || !data)
50dc83
         goto unwind;
50dc83
 
50dc83
+    memset(&cp, 0, sizeof(client_payload_t));
50dc83
     args = data;
50dc83
     conf = this->private;
50dc83
 
50dc83
@@ -5587,9 +5627,11 @@ client3_3_readdirp(call_frame_t *frame, xlator_t *this, void *data)
50dc83
 
50dc83
     local->fd = fd_ref(args->fd);
50dc83
 
50dc83
+    cp.rsphdr = rsphdr;
50dc83
+    cp.rsphdr_cnt = count;
50dc83
+    cp.rsp_iobref = rsp_iobref;
50dc83
     ret = client_submit_request(this, &req, frame, conf->fops, GFS3_OP_READDIRP,
50dc83
-                                client3_3_readdirp_cbk, NULL, rsphdr, count,
50dc83
-                                NULL, 0, rsp_iobref,
50dc83
+                                client3_3_readdirp_cbk, &cp,
50dc83
                                 (xdrproc_t)xdr_gfs3_readdirp_req);
50dc83
     if (ret) {
50dc83
         gf_msg(this->name, GF_LOG_WARNING, 0, PC_MSG_FOP_SEND_FAILED,
50dc83
@@ -5637,8 +5679,8 @@ client3_3_setattr(call_frame_t *frame, xlator_t *this, void *data)
50dc83
     }
50dc83
 
50dc83
     ret = client_submit_request(this, &req, frame, conf->fops, GFS3_OP_SETATTR,
50dc83
-                                client3_3_setattr_cbk, NULL, NULL, 0, NULL, 0,
50dc83
-                                NULL, (xdrproc_t)xdr_gfs3_setattr_req);
50dc83
+                                client3_3_setattr_cbk, NULL,
50dc83
+                                (xdrproc_t)xdr_gfs3_setattr_req);
50dc83
     if (ret) {
50dc83
         gf_msg(this->name, GF_LOG_WARNING, 0, PC_MSG_FOP_SEND_FAILED,
50dc83
                "failed to send the fop");
50dc83
@@ -5679,8 +5721,8 @@ client3_3_fsetattr(call_frame_t *frame, xlator_t *this, void *data)
50dc83
         goto unwind;
50dc83
     }
50dc83
     ret = client_submit_request(this, &req, frame, conf->fops, GFS3_OP_FSETATTR,
50dc83
-                                client3_3_fsetattr_cbk, NULL, NULL, 0, NULL, 0,
50dc83
-                                NULL, (xdrproc_t)xdr_gfs3_fsetattr_req);
50dc83
+                                client3_3_fsetattr_cbk, NULL,
50dc83
+                                (xdrproc_t)xdr_gfs3_fsetattr_req);
50dc83
     if (ret) {
50dc83
         gf_msg(this->name, GF_LOG_WARNING, 0, PC_MSG_FOP_SEND_FAILED,
50dc83
                "failed to send the fop");
50dc83
@@ -5722,8 +5764,7 @@ client3_3_fallocate(call_frame_t *frame, xlator_t *this, void *data)
50dc83
 
50dc83
     ret = client_submit_request(this, &req, frame, conf->fops,
50dc83
                                 GFS3_OP_FALLOCATE, client3_3_fallocate_cbk,
50dc83
-                                NULL, NULL, 0, NULL, 0, NULL,
50dc83
-                                (xdrproc_t)xdr_gfs3_fallocate_req);
50dc83
+                                NULL, (xdrproc_t)xdr_gfs3_fallocate_req);
50dc83
     if (ret) {
50dc83
         gf_msg(this->name, GF_LOG_WARNING, 0, PC_MSG_FOP_SEND_FAILED,
50dc83
                "failed to send the fop");
50dc83
@@ -5764,8 +5805,8 @@ client3_3_discard(call_frame_t *frame, xlator_t *this, void *data)
50dc83
     }
50dc83
 
50dc83
     ret = client_submit_request(this, &req, frame, conf->fops, GFS3_OP_DISCARD,
50dc83
-                                client3_3_discard_cbk, NULL, NULL, 0, NULL, 0,
50dc83
-                                NULL, (xdrproc_t)xdr_gfs3_discard_req);
50dc83
+                                client3_3_discard_cbk, NULL,
50dc83
+                                (xdrproc_t)xdr_gfs3_discard_req);
50dc83
     if (ret)
50dc83
         gf_msg(this->name, GF_LOG_WARNING, 0, PC_MSG_FOP_SEND_FAILED,
50dc83
                "failed to send the fop");
50dc83
@@ -5807,8 +5848,8 @@ client3_3_zerofill(call_frame_t *frame, xlator_t *this, void *data)
50dc83
     }
50dc83
 
50dc83
     ret = client_submit_request(this, &req, frame, conf->fops, GFS3_OP_ZEROFILL,
50dc83
-                                client3_3_zerofill_cbk, NULL, NULL, 0, NULL, 0,
50dc83
-                                NULL, (xdrproc_t)xdr_gfs3_zerofill_req);
50dc83
+                                client3_3_zerofill_cbk, NULL,
50dc83
+                                (xdrproc_t)xdr_gfs3_zerofill_req);
50dc83
     if (ret)
50dc83
         gf_msg(this->name, GF_LOG_WARNING, 0, PC_MSG_FOP_SEND_FAILED,
50dc83
                "failed to send the fop");
50dc83
@@ -5850,7 +5891,7 @@ client3_3_ipc(call_frame_t *frame, xlator_t *this, void *data)
50dc83
     }
50dc83
 
50dc83
     ret = client_submit_request(this, &req, frame, conf->fops, GFS3_OP_IPC,
50dc83
-                                client3_3_ipc_cbk, NULL, NULL, 0, NULL, 0, NULL,
50dc83
+                                client3_3_ipc_cbk, NULL,
50dc83
                                 (xdrproc_t)xdr_gfs3_ipc_req);
50dc83
     if (ret)
50dc83
         gf_msg(this->name, GF_LOG_WARNING, 0, PC_MSG_FOP_SEND_FAILED,
50dc83
@@ -5895,8 +5936,8 @@ client3_3_seek(call_frame_t *frame, xlator_t *this, void *data)
50dc83
     }
50dc83
 
50dc83
     ret = client_submit_request(this, &req, frame, conf->fops, GFS3_OP_SEEK,
50dc83
-                                client3_3_seek_cbk, NULL, NULL, 0, NULL, 0,
50dc83
-                                NULL, (xdrproc_t)xdr_gfs3_seek_req);
50dc83
+                                client3_3_seek_cbk, NULL,
50dc83
+                                (xdrproc_t)xdr_gfs3_seek_req);
50dc83
     if (ret)
50dc83
         gf_msg(this->name, GF_LOG_WARNING, 0, PC_MSG_FOP_SEND_FAILED,
50dc83
                "failed to send the fop");
50dc83
@@ -6083,8 +6124,7 @@ client3_3_getactivelk(call_frame_t *frame, xlator_t *this, void *data)
50dc83
 
50dc83
     ret = client_submit_request(this, &req, frame, conf->fops,
50dc83
                                 GFS3_OP_GETACTIVELK, client3_3_getactivelk_cbk,
50dc83
-                                NULL, NULL, 0, NULL, 0, NULL,
50dc83
-                                (xdrproc_t)xdr_gfs3_getactivelk_req);
50dc83
+                                NULL, (xdrproc_t)xdr_gfs3_getactivelk_req);
50dc83
     if (ret) {
50dc83
         gf_msg(this->name, GF_LOG_WARNING, 0, PC_MSG_FOP_SEND_FAILED,
50dc83
                "failed to send the fop");
50dc83
@@ -6141,8 +6181,7 @@ client3_3_setactivelk(call_frame_t *frame, xlator_t *this, void *data)
50dc83
 
50dc83
     ret = client_submit_request(this, &req, frame, conf->fops,
50dc83
                                 GFS3_OP_SETACTIVELK, client3_3_setactivelk_cbk,
50dc83
-                                NULL, NULL, 0, NULL, 0, NULL,
50dc83
-                                (xdrproc_t)xdr_gfs3_setactivelk_req);
50dc83
+                                NULL, (xdrproc_t)xdr_gfs3_setactivelk_req);
50dc83
     if (ret) {
50dc83
         gf_msg(this->name, GF_LOG_WARNING, 0, PC_MSG_FOP_SEND_FAILED,
50dc83
                "failed to send the fop");
50dc83
diff --git a/xlators/protocol/client/src/client-rpc-fops_v2.c b/xlators/protocol/client/src/client-rpc-fops_v2.c
50dc83
index 8f3ee41..2673b6e 100644
50dc83
--- a/xlators/protocol/client/src/client-rpc-fops_v2.c
50dc83
+++ b/xlators/protocol/client/src/client-rpc-fops_v2.c
50dc83
@@ -3005,11 +3005,13 @@ client4_0_lookup(call_frame_t *frame, xlator_t *this, void *data)
50dc83
     struct iobref *rsp_iobref = NULL;
50dc83
     struct iobuf *rsp_iobuf = NULL;
50dc83
     struct iovec *rsphdr = NULL;
50dc83
+    client_payload_t cp;
50dc83
 
50dc83
     if (!frame || !this || !data)
50dc83
         goto unwind;
50dc83
 
50dc83
     memset(vector, 0, sizeof(vector));
50dc83
+    memset(&cp, 0, sizeof(client_payload_t));
50dc83
 
50dc83
     conf = this->private;
50dc83
     args = data;
50dc83
@@ -3059,9 +3061,12 @@ client4_0_lookup(call_frame_t *frame, xlator_t *this, void *data)
50dc83
         op_errno = -ret;
50dc83
         goto unwind;
50dc83
     }
50dc83
+
50dc83
+    cp.rsphdr = rsphdr;
50dc83
+    cp.rsphdr_cnt = count;
50dc83
+    cp.rsp_iobref = local->iobref;
50dc83
     ret = client_submit_request(this, &req, frame, conf->fops, GFS3_OP_LOOKUP,
50dc83
-                                client4_0_lookup_cbk, NULL, rsphdr, count, NULL,
50dc83
-                                0, local->iobref,
50dc83
+                                client4_0_lookup_cbk, &cp,
50dc83
                                 (xdrproc_t)xdr_gfx_lookup_req);
50dc83
 
50dc83
     if (ret) {
50dc83
@@ -3109,8 +3114,8 @@ client4_0_stat(call_frame_t *frame, xlator_t *this, void *data)
50dc83
         goto unwind;
50dc83
     }
50dc83
     ret = client_submit_request(this, &req, frame, conf->fops, GFS3_OP_STAT,
50dc83
-                                client4_0_stat_cbk, NULL, NULL, 0, NULL, 0,
50dc83
-                                NULL, (xdrproc_t)xdr_gfx_stat_req);
50dc83
+                                client4_0_stat_cbk, NULL,
50dc83
+                                (xdrproc_t)xdr_gfx_stat_req);
50dc83
     if (ret) {
50dc83
         gf_msg(this->name, GF_LOG_WARNING, 0, PC_MSG_FOP_SEND_FAILED,
50dc83
                "failed to send the fop");
50dc83
@@ -3153,8 +3158,8 @@ client4_0_truncate(call_frame_t *frame, xlator_t *this, void *data)
50dc83
         goto unwind;
50dc83
     }
50dc83
     ret = client_submit_request(this, &req, frame, conf->fops, GFS3_OP_TRUNCATE,
50dc83
-                                client4_0_truncate_cbk, NULL, NULL, 0, NULL, 0,
50dc83
-                                NULL, (xdrproc_t)xdr_gfx_truncate_req);
50dc83
+                                client4_0_truncate_cbk, NULL,
50dc83
+                                (xdrproc_t)xdr_gfx_truncate_req);
50dc83
     if (ret) {
50dc83
         gf_msg(this->name, GF_LOG_WARNING, 0, PC_MSG_FOP_SEND_FAILED,
50dc83
                "failed to send the fop");
50dc83
@@ -3198,8 +3203,7 @@ client4_0_ftruncate(call_frame_t *frame, xlator_t *this, void *data)
50dc83
     }
50dc83
     ret = client_submit_request(this, &req, frame, conf->fops,
50dc83
                                 GFS3_OP_FTRUNCATE, client4_0_ftruncate_cbk,
50dc83
-                                NULL, NULL, 0, NULL, 0, NULL,
50dc83
-                                (xdrproc_t)xdr_gfx_ftruncate_req);
50dc83
+                                NULL, (xdrproc_t)xdr_gfx_ftruncate_req);
50dc83
     if (ret) {
50dc83
         gf_msg(this->name, GF_LOG_WARNING, 0, PC_MSG_FOP_SEND_FAILED,
50dc83
                "failed to send the fop");
50dc83
@@ -3241,8 +3245,8 @@ client4_0_access(call_frame_t *frame, xlator_t *this, void *data)
50dc83
         goto unwind;
50dc83
     }
50dc83
     ret = client_submit_request(this, &req, frame, conf->fops, GFS3_OP_ACCESS,
50dc83
-                                client4_0_access_cbk, NULL, NULL, 0, NULL, 0,
50dc83
-                                NULL, (xdrproc_t)xdr_gfx_access_req);
50dc83
+                                client4_0_access_cbk, NULL,
50dc83
+                                (xdrproc_t)xdr_gfx_access_req);
50dc83
     if (ret) {
50dc83
         gf_msg(this->name, GF_LOG_WARNING, 0, PC_MSG_FOP_SEND_FAILED,
50dc83
                "failed to send the fop");
50dc83
@@ -3295,8 +3299,8 @@ client4_0_readlink(call_frame_t *frame, xlator_t *this, void *data)
50dc83
     }
50dc83
 
50dc83
     ret = client_submit_request(this, &req, frame, conf->fops, GFS3_OP_READLINK,
50dc83
-                                client4_0_readlink_cbk, NULL, NULL, 0, NULL, 0,
50dc83
-                                NULL, (xdrproc_t)xdr_gfx_readlink_req);
50dc83
+                                client4_0_readlink_cbk, NULL,
50dc83
+                                (xdrproc_t)xdr_gfx_readlink_req);
50dc83
     if (ret) {
50dc83
         gf_msg(this->name, GF_LOG_WARNING, 0, PC_MSG_FOP_SEND_FAILED,
50dc83
                "failed to send the fop");
50dc83
@@ -3338,8 +3342,8 @@ client4_0_unlink(call_frame_t *frame, xlator_t *this, void *data)
50dc83
         goto unwind;
50dc83
     }
50dc83
     ret = client_submit_request(this, &req, frame, conf->fops, GFS3_OP_UNLINK,
50dc83
-                                client4_0_unlink_cbk, NULL, NULL, 0, NULL, 0,
50dc83
-                                NULL, (xdrproc_t)xdr_gfx_unlink_req);
50dc83
+                                client4_0_unlink_cbk, NULL,
50dc83
+                                (xdrproc_t)xdr_gfx_unlink_req);
50dc83
     if (ret) {
50dc83
         gf_msg(this->name, GF_LOG_WARNING, 0, PC_MSG_FOP_SEND_FAILED,
50dc83
                "failed to send the fop");
50dc83
@@ -3381,8 +3385,8 @@ client4_0_rmdir(call_frame_t *frame, xlator_t *this, void *data)
50dc83
         goto unwind;
50dc83
     }
50dc83
     ret = client_submit_request(this, &req, frame, conf->fops, GFS3_OP_RMDIR,
50dc83
-                                client4_0_rmdir_cbk, NULL, NULL, 0, NULL, 0,
50dc83
-                                NULL, (xdrproc_t)xdr_gfx_rmdir_req);
50dc83
+                                client4_0_rmdir_cbk, NULL,
50dc83
+                                (xdrproc_t)xdr_gfx_rmdir_req);
50dc83
     if (ret) {
50dc83
         gf_msg(this->name, GF_LOG_WARNING, 0, PC_MSG_FOP_SEND_FAILED,
50dc83
                "failed to send the fop");
50dc83
@@ -3440,8 +3444,8 @@ client4_0_symlink(call_frame_t *frame, xlator_t *this, void *data)
50dc83
         goto unwind;
50dc83
     }
50dc83
     ret = client_submit_request(this, &req, frame, conf->fops, GFS3_OP_SYMLINK,
50dc83
-                                client4_0_symlink_cbk, NULL, NULL, 0, NULL, 0,
50dc83
-                                NULL, (xdrproc_t)xdr_gfx_symlink_req);
50dc83
+                                client4_0_symlink_cbk, NULL,
50dc83
+                                (xdrproc_t)xdr_gfx_symlink_req);
50dc83
     if (ret) {
50dc83
         gf_msg(this->name, GF_LOG_WARNING, 0, PC_MSG_FOP_SEND_FAILED,
50dc83
                "failed to send the fop");
50dc83
@@ -3486,8 +3490,8 @@ client4_0_rename(call_frame_t *frame, xlator_t *this, void *data)
50dc83
         goto unwind;
50dc83
     }
50dc83
     ret = client_submit_request(this, &req, frame, conf->fops, GFS3_OP_RENAME,
50dc83
-                                client4_0_rename_cbk, NULL, NULL, 0, NULL, 0,
50dc83
-                                NULL, (xdrproc_t)xdr_gfx_rename_req);
50dc83
+                                client4_0_rename_cbk, NULL,
50dc83
+                                (xdrproc_t)xdr_gfx_rename_req);
50dc83
     if (ret) {
50dc83
         gf_msg(this->name, GF_LOG_WARNING, 0, PC_MSG_FOP_SEND_FAILED,
50dc83
                "failed to send the fop");
50dc83
@@ -3546,8 +3550,8 @@ client4_0_link(call_frame_t *frame, xlator_t *this, void *data)
50dc83
     loc_path(&local->loc2, NULL);
50dc83
 
50dc83
     ret = client_submit_request(this, &req, frame, conf->fops, GFS3_OP_LINK,
50dc83
-                                client4_0_link_cbk, NULL, NULL, 0, NULL, 0,
50dc83
-                                NULL, (xdrproc_t)xdr_gfx_link_req);
50dc83
+                                client4_0_link_cbk, NULL,
50dc83
+                                (xdrproc_t)xdr_gfx_link_req);
50dc83
     if (ret) {
50dc83
         gf_msg(this->name, GF_LOG_WARNING, 0, PC_MSG_FOP_SEND_FAILED,
50dc83
                "failed to send the fop");
50dc83
@@ -3601,8 +3605,8 @@ client4_0_mknod(call_frame_t *frame, xlator_t *this, void *data)
50dc83
         goto unwind;
50dc83
     }
50dc83
     ret = client_submit_request(this, &req, frame, conf->fops, GFS3_OP_MKNOD,
50dc83
-                                client4_0_mknod_cbk, NULL, NULL, 0, NULL, 0,
50dc83
-                                NULL, (xdrproc_t)xdr_gfx_mknod_req);
50dc83
+                                client4_0_mknod_cbk, NULL,
50dc83
+                                (xdrproc_t)xdr_gfx_mknod_req);
50dc83
     if (ret) {
50dc83
         gf_msg(this->name, GF_LOG_WARNING, 0, PC_MSG_FOP_SEND_FAILED,
50dc83
                "failed to send the fop");
50dc83
@@ -3668,8 +3672,8 @@ client4_0_mkdir(call_frame_t *frame, xlator_t *this, void *data)
50dc83
         goto unwind;
50dc83
     }
50dc83
     ret = client_submit_request(this, &req, frame, conf->fops, GFS3_OP_MKDIR,
50dc83
-                                client4_0_mkdir_cbk, NULL, NULL, 0, NULL, 0,
50dc83
-                                NULL, (xdrproc_t)xdr_gfx_mkdir_req);
50dc83
+                                client4_0_mkdir_cbk, NULL,
50dc83
+                                (xdrproc_t)xdr_gfx_mkdir_req);
50dc83
     if (ret) {
50dc83
         gf_msg(this->name, GF_LOG_WARNING, 0, PC_MSG_FOP_SEND_FAILED,
50dc83
                "failed to send the fop");
50dc83
@@ -3726,8 +3730,8 @@ client4_0_create(call_frame_t *frame, xlator_t *this, void *data)
50dc83
         goto unwind;
50dc83
     }
50dc83
     ret = client_submit_request(this, &req, frame, conf->fops, GFS3_OP_CREATE,
50dc83
-                                client4_0_create_cbk, NULL, NULL, 0, NULL, 0,
50dc83
-                                NULL, (xdrproc_t)xdr_gfx_create_req);
50dc83
+                                client4_0_create_cbk, NULL,
50dc83
+                                (xdrproc_t)xdr_gfx_create_req);
50dc83
     if (ret) {
50dc83
         gf_msg(this->name, GF_LOG_WARNING, 0, PC_MSG_FOP_SEND_FAILED,
50dc83
                "failed to send the fop");
50dc83
@@ -3787,8 +3791,8 @@ client4_0_open(call_frame_t *frame, xlator_t *this, void *data)
50dc83
         goto unwind;
50dc83
     }
50dc83
     ret = client_submit_request(this, &req, frame, conf->fops, GFS3_OP_OPEN,
50dc83
-                                client4_0_open_cbk, NULL, NULL, 0, NULL, 0,
50dc83
-                                NULL, (xdrproc_t)xdr_gfx_open_req);
50dc83
+                                client4_0_open_cbk, NULL,
50dc83
+                                (xdrproc_t)xdr_gfx_open_req);
50dc83
     if (ret) {
50dc83
         gf_msg(this->name, GF_LOG_WARNING, 0, PC_MSG_FOP_SEND_FAILED,
50dc83
                "failed to send the fop");
50dc83
@@ -3823,10 +3827,12 @@ client4_0_readv(call_frame_t *frame, xlator_t *this, void *data)
50dc83
     };
50dc83
     struct iobuf *rsp_iobuf = NULL;
50dc83
     struct iobref *rsp_iobref = NULL;
50dc83
+    client_payload_t cp;
50dc83
 
50dc83
     if (!frame || !this || !data)
50dc83
         goto unwind;
50dc83
 
50dc83
+    memset(&cp, 0, sizeof(client_payload_t));
50dc83
     args = data;
50dc83
     conf = this->private;
50dc83
 
50dc83
@@ -3872,9 +3878,12 @@ client4_0_readv(call_frame_t *frame, xlator_t *this, void *data)
50dc83
         goto unwind;
50dc83
     }
50dc83
 
50dc83
+    cp.rsp_payload = &rsp_vec;
50dc83
+    cp.rsp_payload_cnt = 1;
50dc83
+    cp.rsp_iobref = local->iobref;
50dc83
     ret = client_submit_request(this, &req, frame, conf->fops, GFS3_OP_READ,
50dc83
-                                client4_0_readv_cbk, NULL, NULL, 0, &rsp_vec, 1,
50dc83
-                                local->iobref, (xdrproc_t)xdr_gfx_read_req);
50dc83
+                                client4_0_readv_cbk, &cp,
50dc83
+                                (xdrproc_t)xdr_gfx_read_req);
50dc83
     if (ret) {
50dc83
         gf_msg(this->name, GF_LOG_WARNING, 0, PC_MSG_FOP_SEND_FAILED,
50dc83
                "failed to send the fop");
50dc83
@@ -3905,10 +3914,12 @@ client4_0_writev(call_frame_t *frame, xlator_t *this, void *data)
50dc83
     };
50dc83
     int op_errno = ESTALE;
50dc83
     int ret = 0;
50dc83
+    client_payload_t cp;
50dc83
 
50dc83
     if (!frame || !this || !data)
50dc83
         goto unwind;
50dc83
 
50dc83
+    memset(&cp, 0, sizeof(client_payload_t));
50dc83
     args = data;
50dc83
     conf = this->private;
50dc83
 
50dc83
@@ -3926,9 +3937,11 @@ client4_0_writev(call_frame_t *frame, xlator_t *this, void *data)
50dc83
         goto unwind;
50dc83
     }
50dc83
 
50dc83
+    cp.iobref = args->iobref;
50dc83
+    cp.payload = args->vector;
50dc83
+    cp.payload_cnt = args->count;
50dc83
     ret = client_submit_request(this, &req, frame, conf->fops, GFS3_OP_WRITE,
50dc83
-                                client4_0_writev_cbk, args->iobref,
50dc83
-                                args->vector, args->count, NULL, 0, NULL,
50dc83
+                                client4_0_writev_cbk, &cp,
50dc83
                                 (xdrproc_t)xdr_gfx_write_req);
50dc83
     if (ret) {
50dc83
         /*
50dc83
@@ -3987,8 +4000,8 @@ client4_0_flush(call_frame_t *frame, xlator_t *this, void *data)
50dc83
         goto unwind;
50dc83
     }
50dc83
     ret = client_submit_request(this, &req, frame, conf->fops, GFS3_OP_FLUSH,
50dc83
-                                client4_0_flush_cbk, NULL, NULL, 0, NULL, 0,
50dc83
-                                NULL, (xdrproc_t)xdr_gfx_flush_req);
50dc83
+                                client4_0_flush_cbk, NULL,
50dc83
+                                (xdrproc_t)xdr_gfx_flush_req);
50dc83
     if (ret) {
50dc83
         gf_msg(this->name, GF_LOG_WARNING, 0, PC_MSG_FOP_SEND_FAILED,
50dc83
                "failed to send the fop");
50dc83
@@ -4030,8 +4043,8 @@ client4_0_fsync(call_frame_t *frame, xlator_t *this, void *data)
50dc83
         goto unwind;
50dc83
     }
50dc83
     ret = client_submit_request(this, &req, frame, conf->fops, GFS3_OP_FSYNC,
50dc83
-                                client4_0_fsync_cbk, NULL, NULL, 0, NULL, 0,
50dc83
-                                NULL, (xdrproc_t)xdr_gfx_fsync_req);
50dc83
+                                client4_0_fsync_cbk, NULL,
50dc83
+                                (xdrproc_t)xdr_gfx_fsync_req);
50dc83
     if (ret) {
50dc83
         gf_msg(this->name, GF_LOG_WARNING, 0, PC_MSG_FOP_SEND_FAILED,
50dc83
                "failed to send the fop");
50dc83
@@ -4075,8 +4088,8 @@ client4_0_fstat(call_frame_t *frame, xlator_t *this, void *data)
50dc83
     }
50dc83
 
50dc83
     ret = client_submit_request(this, &req, frame, conf->fops, GFS3_OP_FSTAT,
50dc83
-                                client4_0_fstat_cbk, NULL, NULL, 0, NULL, 0,
50dc83
-                                NULL, (xdrproc_t)xdr_gfx_fstat_req);
50dc83
+                                client4_0_fstat_cbk, NULL,
50dc83
+                                (xdrproc_t)xdr_gfx_fstat_req);
50dc83
     if (ret) {
50dc83
         gf_msg(this->name, GF_LOG_WARNING, 0, PC_MSG_FOP_SEND_FAILED,
50dc83
                "failed to send the fop");
50dc83
@@ -4130,8 +4143,8 @@ client4_0_opendir(call_frame_t *frame, xlator_t *this, void *data)
50dc83
         goto unwind;
50dc83
     }
50dc83
     ret = client_submit_request(this, &req, frame, conf->fops, GFS3_OP_OPENDIR,
50dc83
-                                client4_0_opendir_cbk, NULL, NULL, 0, NULL, 0,
50dc83
-                                NULL, (xdrproc_t)xdr_gfx_opendir_req);
50dc83
+                                client4_0_opendir_cbk, NULL,
50dc83
+                                (xdrproc_t)xdr_gfx_opendir_req);
50dc83
     if (ret) {
50dc83
         gf_msg(this->name, GF_LOG_WARNING, 0, PC_MSG_FOP_SEND_FAILED,
50dc83
                "failed to send the fop");
50dc83
@@ -4175,8 +4188,8 @@ client4_0_fsyncdir(call_frame_t *frame, xlator_t *this, void *data)
50dc83
         goto unwind;
50dc83
     }
50dc83
     ret = client_submit_request(this, &req, frame, conf->fops, GFS3_OP_FSYNCDIR,
50dc83
-                                client4_0_fsyncdir_cbk, NULL, NULL, 0, NULL, 0,
50dc83
-                                NULL, (xdrproc_t)xdr_gfx_fsyncdir_req);
50dc83
+                                client4_0_fsyncdir_cbk, NULL,
50dc83
+                                (xdrproc_t)xdr_gfx_fsyncdir_req);
50dc83
     if (ret) {
50dc83
         gf_msg(this->name, GF_LOG_WARNING, 0, PC_MSG_FOP_SEND_FAILED,
50dc83
                "failed to send the fop");
50dc83
@@ -4219,8 +4232,8 @@ client4_0_statfs(call_frame_t *frame, xlator_t *this, void *data)
50dc83
         goto unwind;
50dc83
     }
50dc83
     ret = client_submit_request(this, &req, frame, conf->fops, GFS3_OP_STATFS,
50dc83
-                                client4_0_statfs_cbk, NULL, NULL, 0, NULL, 0,
50dc83
-                                NULL, (xdrproc_t)xdr_gfx_statfs_req);
50dc83
+                                client4_0_statfs_cbk, NULL,
50dc83
+                                (xdrproc_t)xdr_gfx_statfs_req);
50dc83
     if (ret) {
50dc83
         gf_msg(this->name, GF_LOG_WARNING, 0, PC_MSG_FOP_SEND_FAILED,
50dc83
                "failed to send the fop");
50dc83
@@ -4263,8 +4276,8 @@ client4_0_setxattr(call_frame_t *frame, xlator_t *this, void *data)
50dc83
         goto unwind;
50dc83
     }
50dc83
     ret = client_submit_request(this, &req, frame, conf->fops, GFS3_OP_SETXATTR,
50dc83
-                                client4_0_setxattr_cbk, NULL, NULL, 0, NULL, 0,
50dc83
-                                NULL, (xdrproc_t)xdr_gfx_setxattr_req);
50dc83
+                                client4_0_setxattr_cbk, NULL,
50dc83
+                                (xdrproc_t)xdr_gfx_setxattr_req);
50dc83
     if (ret) {
50dc83
         gf_msg(this->name, GF_LOG_WARNING, 0, PC_MSG_FOP_SEND_FAILED,
50dc83
                "failed to send the fop");
50dc83
@@ -4310,8 +4323,7 @@ client4_0_fsetxattr(call_frame_t *frame, xlator_t *this, void *data)
50dc83
     }
50dc83
     ret = client_submit_request(this, &req, frame, conf->fops,
50dc83
                                 GFS3_OP_FSETXATTR, client4_0_fsetxattr_cbk,
50dc83
-                                NULL, NULL, 0, NULL, 0, NULL,
50dc83
-                                (xdrproc_t)xdr_gfx_fsetxattr_req);
50dc83
+                                NULL, (xdrproc_t)xdr_gfx_fsetxattr_req);
50dc83
     if (ret) {
50dc83
         gf_msg(this->name, GF_LOG_WARNING, 0, PC_MSG_FOP_SEND_FAILED,
50dc83
                "failed to send the fop");
50dc83
@@ -4364,8 +4376,7 @@ client4_0_fgetxattr(call_frame_t *frame, xlator_t *this, void *data)
50dc83
     }
50dc83
     ret = client_submit_request(this, &req, frame, conf->fops,
50dc83
                                 GFS3_OP_FGETXATTR, client4_0_fgetxattr_cbk,
50dc83
-                                NULL, NULL, 0, NULL, 0, NULL,
50dc83
-                                (xdrproc_t)xdr_gfx_fgetxattr_req);
50dc83
+                                NULL, (xdrproc_t)xdr_gfx_fgetxattr_req);
50dc83
     if (ret) {
50dc83
         gf_msg(this->name, GF_LOG_WARNING, 0, PC_MSG_FOP_SEND_FAILED,
50dc83
                "failed to send the fop");
50dc83
@@ -4452,8 +4463,8 @@ client4_0_getxattr(call_frame_t *frame, xlator_t *this, void *data)
50dc83
         goto unwind;
50dc83
     }
50dc83
     ret = client_submit_request(this, &req, frame, conf->fops, GFS3_OP_GETXATTR,
50dc83
-                                client4_0_getxattr_cbk, NULL, NULL, 0, NULL, 0,
50dc83
-                                NULL, (xdrproc_t)xdr_gfx_getxattr_req);
50dc83
+                                client4_0_getxattr_cbk, NULL,
50dc83
+                                (xdrproc_t)xdr_gfx_getxattr_req);
50dc83
     if (ret) {
50dc83
         gf_msg(this->name, GF_LOG_WARNING, 0, PC_MSG_FOP_SEND_FAILED,
50dc83
                "failed to send the fop");
50dc83
@@ -4514,8 +4525,8 @@ client4_0_xattrop(call_frame_t *frame, xlator_t *this, void *data)
50dc83
         goto unwind;
50dc83
     }
50dc83
     ret = client_submit_request(this, &req, frame, conf->fops, GFS3_OP_XATTROP,
50dc83
-                                client4_0_xattrop_cbk, NULL, NULL, 0, NULL, 0,
50dc83
-                                NULL, (xdrproc_t)xdr_gfx_xattrop_req);
50dc83
+                                client4_0_xattrop_cbk, NULL,
50dc83
+                                (xdrproc_t)xdr_gfx_xattrop_req);
50dc83
     if (ret) {
50dc83
         gf_msg(this->name, GF_LOG_WARNING, 0, PC_MSG_FOP_SEND_FAILED,
50dc83
                "failed to send the fop");
50dc83
@@ -4566,8 +4577,8 @@ client4_0_fxattrop(call_frame_t *frame, xlator_t *this, void *data)
50dc83
     }
50dc83
 
50dc83
     ret = client_submit_request(this, &req, frame, conf->fops, GFS3_OP_FXATTROP,
50dc83
-                                client4_0_fxattrop_cbk, NULL, NULL, 0, NULL, 0,
50dc83
-                                NULL, (xdrproc_t)xdr_gfx_fxattrop_req);
50dc83
+                                client4_0_fxattrop_cbk, NULL,
50dc83
+                                (xdrproc_t)xdr_gfx_fxattrop_req);
50dc83
     if (ret) {
50dc83
         gf_msg(this->name, GF_LOG_WARNING, 0, PC_MSG_FOP_SEND_FAILED,
50dc83
                "failed to send the fop");
50dc83
@@ -4613,8 +4624,7 @@ client4_0_removexattr(call_frame_t *frame, xlator_t *this, void *data)
50dc83
     }
50dc83
     ret = client_submit_request(this, &req, frame, conf->fops,
50dc83
                                 GFS3_OP_REMOVEXATTR, client4_0_removexattr_cbk,
50dc83
-                                NULL, NULL, 0, NULL, 0, NULL,
50dc83
-                                (xdrproc_t)xdr_gfx_removexattr_req);
50dc83
+                                NULL, (xdrproc_t)xdr_gfx_removexattr_req);
50dc83
     if (ret) {
50dc83
         gf_msg(this->name, GF_LOG_WARNING, 0, PC_MSG_FOP_SEND_FAILED,
50dc83
                "failed to send the fop");
50dc83
@@ -4656,10 +4666,9 @@ client4_0_fremovexattr(call_frame_t *frame, xlator_t *this, void *data)
50dc83
         op_errno = -ret;
50dc83
         goto unwind;
50dc83
     }
50dc83
-    ret = client_submit_request(this, &req, frame, conf->fops,
50dc83
-                                GFS3_OP_FREMOVEXATTR,
50dc83
-                                client4_0_fremovexattr_cbk, NULL, NULL, 0, NULL,
50dc83
-                                0, NULL, (xdrproc_t)xdr_gfx_fremovexattr_req);
50dc83
+    ret = client_submit_request(
50dc83
+        this, &req, frame, conf->fops, GFS3_OP_FREMOVEXATTR,
50dc83
+        client4_0_fremovexattr_cbk, NULL, (xdrproc_t)xdr_gfx_fremovexattr_req);
50dc83
     if (ret) {
50dc83
         gf_msg(this->name, GF_LOG_WARNING, 0, PC_MSG_FOP_SEND_FAILED,
50dc83
                "failed to send the fop");
50dc83
@@ -4701,8 +4710,8 @@ client4_0_lease(call_frame_t *frame, xlator_t *this, void *data)
50dc83
         goto unwind;
50dc83
     }
50dc83
     ret = client_submit_request(this, &req, frame, conf->fops, GFS3_OP_LEASE,
50dc83
-                                client4_0_lease_cbk, NULL, NULL, 0, NULL, 0,
50dc83
-                                NULL, (xdrproc_t)xdr_gfx_lease_req);
50dc83
+                                client4_0_lease_cbk, NULL,
50dc83
+                                (xdrproc_t)xdr_gfx_lease_req);
50dc83
     if (ret) {
50dc83
         gf_msg(this->name, GF_LOG_WARNING, 0, PC_MSG_FOP_SEND_FAILED,
50dc83
                "failed to send the fop");
50dc83
@@ -4764,7 +4773,7 @@ client4_0_lk(call_frame_t *frame, xlator_t *this, void *data)
50dc83
         goto unwind;
50dc83
     }
50dc83
     ret = client_submit_request(this, &req, frame, conf->fops, GFS3_OP_LK,
50dc83
-                                client4_0_lk_cbk, NULL, NULL, 0, NULL, 0, NULL,
50dc83
+                                client4_0_lk_cbk, NULL,
50dc83
                                 (xdrproc_t)xdr_gfx_lk_req);
50dc83
     if (ret) {
50dc83
         gf_msg(this->name, GF_LOG_WARNING, 0, PC_MSG_FOP_SEND_FAILED,
50dc83
@@ -4807,8 +4816,8 @@ client4_0_inodelk(call_frame_t *frame, xlator_t *this, void *data)
50dc83
         goto unwind;
50dc83
     }
50dc83
     ret = client_submit_request(this, &req, frame, conf->fops, GFS3_OP_INODELK,
50dc83
-                                client4_0_inodelk_cbk, NULL, NULL, 0, NULL, 0,
50dc83
-                                NULL, (xdrproc_t)xdr_gfx_inodelk_req);
50dc83
+                                client4_0_inodelk_cbk, NULL,
50dc83
+                                (xdrproc_t)xdr_gfx_inodelk_req);
50dc83
     if (ret) {
50dc83
         gf_msg(this->name, GF_LOG_WARNING, 0, PC_MSG_FOP_SEND_FAILED,
50dc83
                "failed to send the fop");
50dc83
@@ -4857,8 +4866,8 @@ client4_0_finodelk(call_frame_t *frame, xlator_t *this, void *data)
50dc83
     }
50dc83
 
50dc83
     ret = client_submit_request(this, &req, frame, conf->fops, GFS3_OP_FINODELK,
50dc83
-                                client4_0_finodelk_cbk, NULL, NULL, 0, NULL, 0,
50dc83
-                                NULL, (xdrproc_t)xdr_gfx_finodelk_req);
50dc83
+                                client4_0_finodelk_cbk, NULL,
50dc83
+                                (xdrproc_t)xdr_gfx_finodelk_req);
50dc83
     if (ret) {
50dc83
         gf_msg(this->name, GF_LOG_WARNING, 0, PC_MSG_FOP_SEND_FAILED,
50dc83
                "failed to send the fop");
50dc83
@@ -4902,8 +4911,8 @@ client4_0_entrylk(call_frame_t *frame, xlator_t *this, void *data)
50dc83
     }
50dc83
 
50dc83
     ret = client_submit_request(this, &req, frame, conf->fops, GFS3_OP_ENTRYLK,
50dc83
-                                client4_0_entrylk_cbk, NULL, NULL, 0, NULL, 0,
50dc83
-                                NULL, (xdrproc_t)xdr_gfx_entrylk_req);
50dc83
+                                client4_0_entrylk_cbk, NULL,
50dc83
+                                (xdrproc_t)xdr_gfx_entrylk_req);
50dc83
     if (ret) {
50dc83
         gf_msg(this->name, GF_LOG_WARNING, 0, PC_MSG_FOP_SEND_FAILED,
50dc83
                "failed to send the fop");
50dc83
@@ -4946,8 +4955,8 @@ client4_0_fentrylk(call_frame_t *frame, xlator_t *this, void *data)
50dc83
         goto unwind;
50dc83
     }
50dc83
     ret = client_submit_request(this, &req, frame, conf->fops, GFS3_OP_FENTRYLK,
50dc83
-                                client4_0_fentrylk_cbk, NULL, NULL, 0, NULL, 0,
50dc83
-                                NULL, (xdrproc_t)xdr_gfx_fentrylk_req);
50dc83
+                                client4_0_fentrylk_cbk, NULL,
50dc83
+                                (xdrproc_t)xdr_gfx_fentrylk_req);
50dc83
     if (ret) {
50dc83
         gf_msg(this->name, GF_LOG_WARNING, 0, PC_MSG_FOP_SEND_FAILED,
50dc83
                "failed to send the fop");
50dc83
@@ -4988,10 +4997,12 @@ client4_0_readdir(call_frame_t *frame, xlator_t *this, void *data)
50dc83
         {0},
50dc83
     };
50dc83
     int readdir_rsp_size = 0;
50dc83
+    client_payload_t cp;
50dc83
 
50dc83
     if (!frame || !this || !data)
50dc83
         goto unwind;
50dc83
 
50dc83
+    memset(&cp, 0, sizeof(client_payload_t));
50dc83
     args = data;
50dc83
     conf = this->private;
50dc83
 
50dc83
@@ -5041,9 +5052,11 @@ client4_0_readdir(call_frame_t *frame, xlator_t *this, void *data)
50dc83
         goto unwind;
50dc83
     }
50dc83
 
50dc83
+    cp.rsphdr = rsphdr;
50dc83
+    cp.rsphdr_cnt = count;
50dc83
+    cp.rsp_iobref = rsp_iobref;
50dc83
     ret = client_submit_request(this, &req, frame, conf->fops, GFS3_OP_READDIR,
50dc83
-                                client4_0_readdir_cbk, NULL, rsphdr, count,
50dc83
-                                NULL, 0, rsp_iobref,
50dc83
+                                client4_0_readdir_cbk, &cp,
50dc83
                                 (xdrproc_t)xdr_gfx_readdir_req);
50dc83
 
50dc83
     if (ret) {
50dc83
@@ -5089,10 +5102,12 @@ client4_0_readdirp(call_frame_t *frame, xlator_t *this, void *data)
50dc83
         {0},
50dc83
     };
50dc83
     clnt_local_t *local = NULL;
50dc83
+    client_payload_t cp;
50dc83
 
50dc83
     if (!frame || !this || !data)
50dc83
         goto unwind;
50dc83
 
50dc83
+    memset(&cp, 0, sizeof(client_payload_t));
50dc83
     args = data;
50dc83
     conf = this->private;
50dc83
 
50dc83
@@ -5142,9 +5157,11 @@ client4_0_readdirp(call_frame_t *frame, xlator_t *this, void *data)
50dc83
 
50dc83
     local->fd = fd_ref(args->fd);
50dc83
 
50dc83
+    cp.rsphdr = rsphdr;
50dc83
+    cp.rsphdr_cnt = count;
50dc83
+    cp.rsp_iobref = rsp_iobref;
50dc83
     ret = client_submit_request(this, &req, frame, conf->fops, GFS3_OP_READDIRP,
50dc83
-                                client4_0_readdirp_cbk, NULL, rsphdr, count,
50dc83
-                                NULL, 0, rsp_iobref,
50dc83
+                                client4_0_readdirp_cbk, &cp,
50dc83
                                 (xdrproc_t)xdr_gfx_readdirp_req);
50dc83
     if (ret) {
50dc83
         gf_msg(this->name, GF_LOG_WARNING, 0, PC_MSG_FOP_SEND_FAILED,
50dc83
@@ -5192,8 +5209,8 @@ client4_0_setattr(call_frame_t *frame, xlator_t *this, void *data)
50dc83
     }
50dc83
 
50dc83
     ret = client_submit_request(this, &req, frame, conf->fops, GFS3_OP_SETATTR,
50dc83
-                                client4_0_setattr_cbk, NULL, NULL, 0, NULL, 0,
50dc83
-                                NULL, (xdrproc_t)xdr_gfx_setattr_req);
50dc83
+                                client4_0_setattr_cbk, NULL,
50dc83
+                                (xdrproc_t)xdr_gfx_setattr_req);
50dc83
     if (ret) {
50dc83
         gf_msg(this->name, GF_LOG_WARNING, 0, PC_MSG_FOP_SEND_FAILED,
50dc83
                "failed to send the fop");
50dc83
@@ -5235,8 +5252,7 @@ client4_0_fallocate(call_frame_t *frame, xlator_t *this, void *data)
50dc83
 
50dc83
     ret = client_submit_request(this, &req, frame, conf->fops,
50dc83
                                 GFS3_OP_FALLOCATE, client4_0_fallocate_cbk,
50dc83
-                                NULL, NULL, 0, NULL, 0, NULL,
50dc83
-                                (xdrproc_t)xdr_gfx_fallocate_req);
50dc83
+                                NULL, (xdrproc_t)xdr_gfx_fallocate_req);
50dc83
     if (ret) {
50dc83
         gf_msg(this->name, GF_LOG_WARNING, 0, PC_MSG_FOP_SEND_FAILED,
50dc83
                "failed to send the fop");
50dc83
@@ -5277,8 +5293,8 @@ client4_0_discard(call_frame_t *frame, xlator_t *this, void *data)
50dc83
     }
50dc83
 
50dc83
     ret = client_submit_request(this, &req, frame, conf->fops, GFS3_OP_DISCARD,
50dc83
-                                client4_0_discard_cbk, NULL, NULL, 0, NULL, 0,
50dc83
-                                NULL, (xdrproc_t)xdr_gfx_discard_req);
50dc83
+                                client4_0_discard_cbk, NULL,
50dc83
+                                (xdrproc_t)xdr_gfx_discard_req);
50dc83
     if (ret)
50dc83
         gf_msg(this->name, GF_LOG_WARNING, 0, PC_MSG_FOP_SEND_FAILED,
50dc83
                "failed to send the fop");
50dc83
@@ -5320,8 +5336,8 @@ client4_0_zerofill(call_frame_t *frame, xlator_t *this, void *data)
50dc83
     }
50dc83
 
50dc83
     ret = client_submit_request(this, &req, frame, conf->fops, GFS3_OP_ZEROFILL,
50dc83
-                                client4_0_zerofill_cbk, NULL, NULL, 0, NULL, 0,
50dc83
-                                NULL, (xdrproc_t)xdr_gfx_zerofill_req);
50dc83
+                                client4_0_zerofill_cbk, NULL,
50dc83
+                                (xdrproc_t)xdr_gfx_zerofill_req);
50dc83
     if (ret)
50dc83
         gf_msg(this->name, GF_LOG_WARNING, 0, PC_MSG_FOP_SEND_FAILED,
50dc83
                "failed to send the fop");
50dc83
@@ -5363,7 +5379,7 @@ client4_0_ipc(call_frame_t *frame, xlator_t *this, void *data)
50dc83
     }
50dc83
 
50dc83
     ret = client_submit_request(this, &req, frame, conf->fops, GFS3_OP_IPC,
50dc83
-                                client4_0_ipc_cbk, NULL, NULL, 0, NULL, 0, NULL,
50dc83
+                                client4_0_ipc_cbk, NULL,
50dc83
                                 (xdrproc_t)xdr_gfx_ipc_req);
50dc83
     if (ret)
50dc83
         gf_msg(this->name, GF_LOG_WARNING, 0, PC_MSG_FOP_SEND_FAILED,
50dc83
@@ -5408,8 +5424,8 @@ client4_0_seek(call_frame_t *frame, xlator_t *this, void *data)
50dc83
     }
50dc83
 
50dc83
     ret = client_submit_request(this, &req, frame, conf->fops, GFS3_OP_SEEK,
50dc83
-                                client4_0_seek_cbk, NULL, NULL, 0, NULL, 0,
50dc83
-                                NULL, (xdrproc_t)xdr_gfx_seek_req);
50dc83
+                                client4_0_seek_cbk, NULL,
50dc83
+                                (xdrproc_t)xdr_gfx_seek_req);
50dc83
     if (ret)
50dc83
         gf_msg(this->name, GF_LOG_WARNING, 0, PC_MSG_FOP_SEND_FAILED,
50dc83
                "failed to send the fop");
50dc83
@@ -5458,8 +5474,7 @@ client4_0_getactivelk(call_frame_t *frame, xlator_t *this, void *data)
50dc83
 
50dc83
     ret = client_submit_request(this, &req, frame, conf->fops,
50dc83
                                 GFS3_OP_GETACTIVELK, client4_0_getactivelk_cbk,
50dc83
-                                NULL, NULL, 0, NULL, 0, NULL,
50dc83
-                                (xdrproc_t)xdr_gfx_getactivelk_req);
50dc83
+                                NULL, (xdrproc_t)xdr_gfx_getactivelk_req);
50dc83
     if (ret) {
50dc83
         gf_msg(this->name, GF_LOG_WARNING, 0, PC_MSG_FOP_SEND_FAILED,
50dc83
                "failed to send the fop");
50dc83
@@ -5514,8 +5529,7 @@ client4_0_setactivelk(call_frame_t *frame, xlator_t *this, void *data)
50dc83
 
50dc83
     ret = client_submit_request(this, &req, frame, conf->fops,
50dc83
                                 GFS3_OP_SETACTIVELK, client4_0_setactivelk_cbk,
50dc83
-                                NULL, NULL, 0, NULL, 0, NULL,
50dc83
-                                (xdrproc_t)xdr_gfx_setactivelk_req);
50dc83
+                                NULL, (xdrproc_t)xdr_gfx_setactivelk_req);
50dc83
     if (ret) {
50dc83
         gf_msg(this->name, GF_LOG_WARNING, 0, PC_MSG_FOP_SEND_FAILED,
50dc83
                "failed to send the fop");
50dc83
@@ -5785,8 +5799,8 @@ client4_0_namelink(call_frame_t *frame, xlator_t *this, void *data)
50dc83
 
50dc83
     dict_to_xdr(args->xdata, &req.xdata);
50dc83
     ret = client_submit_request(this, &req, frame, conf->fops, GFS3_OP_NAMELINK,
50dc83
-                                client4_namelink_cbk, NULL, NULL, 0, NULL, 0,
50dc83
-                                NULL, (xdrproc_t)xdr_gfx_namelink_req);
50dc83
+                                client4_namelink_cbk, NULL,
50dc83
+                                (xdrproc_t)xdr_gfx_namelink_req);
50dc83
     if (ret) {
50dc83
         gf_msg(this->name, GF_LOG_WARNING, 0, PC_MSG_FOP_SEND_FAILED,
50dc83
                "failed to send the fop");
50dc83
@@ -5837,8 +5851,8 @@ client4_0_icreate(call_frame_t *frame, xlator_t *this, void *data)
50dc83
     op_errno = ESTALE;
50dc83
     dict_to_xdr(args->xdata, &req.xdata);
50dc83
     ret = client_submit_request(this, &req, frame, conf->fops, GFS3_OP_ICREATE,
50dc83
-                                client4_icreate_cbk, NULL, NULL, 0, NULL, 0,
50dc83
-                                NULL, (xdrproc_t)xdr_gfx_icreate_req);
50dc83
+                                client4_icreate_cbk, NULL,
50dc83
+                                (xdrproc_t)xdr_gfx_icreate_req);
50dc83
     if (ret)
50dc83
         goto free_reqdata;
50dc83
     GF_FREE(req.xdata.pairs.pairs_val);
50dc83
@@ -5864,10 +5878,12 @@ client4_0_put(call_frame_t *frame, xlator_t *this, void *data)
50dc83
     int op_errno = ESTALE;
50dc83
     int ret = 0;
50dc83
     clnt_local_t *local = NULL;
50dc83
+    client_payload_t cp;
50dc83
 
50dc83
     if (!frame || !this || !data)
50dc83
         goto unwind;
50dc83
 
50dc83
+    memset(&cp, 0, sizeof(client_payload_t));
50dc83
     args = data;
50dc83
     conf = this->private;
50dc83
 
50dc83
@@ -5890,9 +5906,11 @@ client4_0_put(call_frame_t *frame, xlator_t *this, void *data)
50dc83
         goto unwind;
50dc83
     }
50dc83
 
50dc83
+    cp.iobref = args->iobref;
50dc83
+    cp.payload = args->vector;
50dc83
+    cp.payload_cnt = args->count;
50dc83
     ret = client_submit_request(this, &req, frame, conf->fops, GFS3_OP_PUT,
50dc83
-                                client4_0_put_cbk, args->iobref, args->vector,
50dc83
-                                args->count, NULL, 0, NULL,
50dc83
+                                client4_0_put_cbk, &cp,
50dc83
                                 (xdrproc_t)xdr_gfx_put_req);
50dc83
     if (ret) {
50dc83
         /*
50dc83
@@ -5959,10 +5977,10 @@ client4_0_copy_file_range(call_frame_t *frame, xlator_t *this, void *data)
50dc83
     local->attempt_reopen_out = client_is_reopen_needed(args->fd_out, this,
50dc83
                                                         req.fd_out);
50dc83
 
50dc83
-    ret = client_submit_request(
50dc83
-        this, &req, frame, conf->fops, GFS3_OP_COPY_FILE_RANGE,
50dc83
-        client4_0_copy_file_range_cbk, NULL, NULL, 0, NULL, 0, NULL,
50dc83
-        (xdrproc_t)xdr_gfx_copy_file_range_req);
50dc83
+    ret = client_submit_request(this, &req, frame, conf->fops,
50dc83
+                                GFS3_OP_COPY_FILE_RANGE,
50dc83
+                                client4_0_copy_file_range_cbk, NULL,
50dc83
+                                (xdrproc_t)xdr_gfx_copy_file_range_req);
50dc83
     if (ret) {
50dc83
         /*
50dc83
          * If the lower layers fail to submit a request, they'll also
50dc83
@@ -6009,8 +6027,8 @@ client4_0_fsetattr(call_frame_t *frame, xlator_t *this, void *data)
50dc83
         goto unwind;
50dc83
     }
50dc83
     ret = client_submit_request(this, &req, frame, conf->fops, GFS3_OP_FSETATTR,
50dc83
-                                client4_0_fsetattr_cbk, NULL, NULL, 0, NULL, 0,
50dc83
-                                NULL, (xdrproc_t)xdr_gfx_fsetattr_req);
50dc83
+                                client4_0_fsetattr_cbk, NULL,
50dc83
+                                (xdrproc_t)xdr_gfx_fsetattr_req);
50dc83
     if (ret) {
50dc83
         gf_msg(this->name, GF_LOG_WARNING, 0, PC_MSG_FOP_SEND_FAILED,
50dc83
                "failed to send the fop");
50dc83
@@ -6054,9 +6072,9 @@ client4_0_rchecksum(call_frame_t *frame, xlator_t *this, void *data)
50dc83
 
50dc83
     dict_to_xdr(args->xdata, &req.xdata);
50dc83
 
50dc83
-    ret = client_submit_request(
50dc83
-        this, &req, frame, conf->fops, GFS3_OP_RCHECKSUM, client4_rchecksum_cbk,
50dc83
-        NULL, NULL, 0, NULL, 0, NULL, (xdrproc_t)xdr_gfx_rchecksum_req);
50dc83
+    ret = client_submit_request(this, &req, frame, conf->fops,
50dc83
+                                GFS3_OP_RCHECKSUM, client4_rchecksum_cbk, NULL,
50dc83
+                                (xdrproc_t)xdr_gfx_rchecksum_req);
50dc83
     if (ret) {
50dc83
         gf_msg(this->name, GF_LOG_WARNING, 0, PC_MSG_FOP_SEND_FAILED,
50dc83
                "failed to send the fop");
50dc83
diff --git a/xlators/protocol/client/src/client.c b/xlators/protocol/client/src/client.c
50dc83
index dea6c28..2d75714 100644
50dc83
--- a/xlators/protocol/client/src/client.c
50dc83
+++ b/xlators/protocol/client/src/client.c
50dc83
@@ -131,10 +131,7 @@ client_type_to_gf_type(short l_type)
50dc83
 int
50dc83
 client_submit_request(xlator_t *this, void *req, call_frame_t *frame,
50dc83
                       rpc_clnt_prog_t *prog, int procnum, fop_cbk_fn_t cbkfn,
50dc83
-                      struct iobref *iobref, struct iovec *payload,
50dc83
-                      int payloadcnt, struct iovec *rsp_payload,
50dc83
-                      int rsp_payload_count, struct iobref *rsp_iobref,
50dc83
-                      xdrproc_t xdrproc)
50dc83
+                      client_payload_t *cp, xdrproc_t xdrproc)
50dc83
 {
50dc83
     int ret = -1;
50dc83
     clnt_conf_t *conf = NULL;
50dc83
@@ -180,8 +177,8 @@ client_submit_request(xlator_t *this, void *req, call_frame_t *frame,
50dc83
             goto out;
50dc83
         }
50dc83
 
50dc83
-        if (iobref != NULL) {
50dc83
-            ret = iobref_merge(new_iobref, iobref);
50dc83
+        if (cp && cp->iobref != NULL) {
50dc83
+            ret = iobref_merge(new_iobref, cp->iobref);
50dc83
             if (ret != 0) {
50dc83
                 gf_msg(this->name, GF_LOG_WARNING, ENOMEM, PC_MSG_NO_MEMORY,
50dc83
                        "cannot merge "
50dc83
@@ -224,9 +221,16 @@ client_submit_request(xlator_t *this, void *req, call_frame_t *frame,
50dc83
     }
50dc83
 
50dc83
     /* Send the msg */
50dc83
-    ret = rpc_clnt_submit(conf->rpc, prog, procnum, cbkfn, &iov, count, payload,
50dc83
-                          payloadcnt, new_iobref, frame, payload, payloadcnt,
50dc83
-                          rsp_payload, rsp_payload_count, rsp_iobref);
50dc83
+    if (cp) {
50dc83
+        ret = rpc_clnt_submit(conf->rpc, prog, procnum, cbkfn, &iov, count,
50dc83
+                              cp->payload, cp->payload_cnt, new_iobref, frame,
50dc83
+                              cp->rsphdr, cp->rsphdr_cnt, cp->rsp_payload,
50dc83
+                              cp->rsp_payload_cnt, cp->rsp_iobref);
50dc83
+    } else {
50dc83
+        ret = rpc_clnt_submit(conf->rpc, prog, procnum, cbkfn, &iov, count,
50dc83
+                              NULL, 0, new_iobref, frame, NULL, 0, NULL, 0,
50dc83
+                              NULL);
50dc83
+    }
50dc83
 
50dc83
     if (ret < 0) {
50dc83
         gf_msg_debug(this->name, 0, "rpc_clnt_submit failed");
50dc83
diff --git a/xlators/protocol/client/src/client.h b/xlators/protocol/client/src/client.h
50dc83
index 71f84f3..f12fa61 100644
50dc83
--- a/xlators/protocol/client/src/client.h
50dc83
+++ b/xlators/protocol/client/src/client.h
50dc83
@@ -345,6 +345,17 @@ typedef struct client_args {
50dc83
     lock_migration_info_t *locklist;
50dc83
 } clnt_args_t;
50dc83
 
50dc83
+typedef struct client_payload {
50dc83
+    struct iobref *iobref;
50dc83
+    struct iovec *payload;
50dc83
+    struct iovec *rsphdr;
50dc83
+    struct iovec *rsp_payload;
50dc83
+    struct iobref *rsp_iobref;
50dc83
+    int payload_cnt;
50dc83
+    int rsphdr_cnt;
50dc83
+    int rsp_payload_cnt;
50dc83
+} client_payload_t;
50dc83
+
50dc83
 typedef ssize_t (*gfs_serialize_t)(struct iovec outmsg, void *args);
50dc83
 
50dc83
 clnt_fd_ctx_t *
50dc83
@@ -359,10 +370,7 @@ client_local_wipe(clnt_local_t *local);
50dc83
 int
50dc83
 client_submit_request(xlator_t *this, void *req, call_frame_t *frame,
50dc83
                       rpc_clnt_prog_t *prog, int procnum, fop_cbk_fn_t cbk,
50dc83
-                      struct iobref *iobref, struct iovec *rsphdr,
50dc83
-                      int rsphdr_count, struct iovec *rsp_payload,
50dc83
-                      int rsp_count, struct iobref *rsp_iobref,
50dc83
-                      xdrproc_t xdrproc);
50dc83
+                      client_payload_t *cp, xdrproc_t xdrproc);
50dc83
 
50dc83
 int
50dc83
 client_submit_compound_request(xlator_t *this, void *req, call_frame_t *frame,
50dc83
-- 
50dc83
1.8.3.1
50dc83