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