path: root/rpc
diff options
authorAmar Tumballi <>2012-05-24 12:58:04 +0530
committerAnand Avati <>2012-05-24 17:32:32 -0700
commit89b3466373191b7d2f0001778308b2393ea74da6 (patch)
tree00a69678ad54be29d9b487c2f01a70ffeaeceef7 /rpc
parent9f81eb0b24f27ea9797bb8a4ff062e6f77e872fd (diff)
rpc: fix the vecsizer issue
* currently, we needed 'base-address' of the header for glusterfs writev vecsizer and 'current-address' of the buffer which is reading the data on socket, for nfs write vecsizer. * nfs write issues started coming after was pushed into repo, now fixed. * fixed by sending both as argument for vecsizer from the transport Change-Id: I6db360ce265ce5f083f1794ebdb3867f8cfad9ec Signed-off-by: Amar Tumballi <> BUG: 824472 Reviewed-on: Tested-by: Gluster Build System <> Reviewed-by: Jeff Darcy <> Reviewed-by: Anand Avati <>
Diffstat (limited to 'rpc')
2 files changed, 6 insertions, 3 deletions
diff --git a/rpc/rpc-lib/src/rpcsvc.h b/rpc/rpc-lib/src/rpcsvc.h
index 95f2c4e84..847ec1b33 100644
--- a/rpc/rpc-lib/src/rpcsvc.h
+++ b/rpc/rpc-lib/src/rpcsvc.h
@@ -278,7 +278,8 @@ struct rpcsvc_request {
typedef int (*rpcsvc_actor) (rpcsvc_request_t *req);
typedef int (*rpcsvc_vector_actor) (rpcsvc_request_t *req, struct iovec *vec,
int count, struct iobref *iobref);
-typedef int (*rpcsvc_vector_sizer) (int state, ssize_t *readsize, char *addr);
+typedef int (*rpcsvc_vector_sizer) (int state, ssize_t *readsize,
+ char *base_addr, char *curr_addr);
/* Every protocol actor will also need to specify the function the RPC layer
* will use to serialize or encode the message into XDR format just before
diff --git a/rpc/rpc-transport/socket/src/socket.c b/rpc/rpc-transport/socket/src/socket.c
index 5e65755d8..2476b13f7 100644
--- a/rpc/rpc-transport/socket/src/socket.c
+++ b/rpc/rpc-transport/socket/src/socket.c
@@ -875,7 +875,8 @@ sp_state_read_verfbytes:
proghdr_buf = priv->incoming.frag.fragcurrent;
priv->incoming.frag.call_body.request.vector_sizer_state =
vector_sizer (priv->incoming.frag.call_body.request.vector_sizer_state,
- &readsize, proghdr_buf);
+ &readsize, proghdr_buf,
+ priv->incoming.frag.fragcurrent);
__socket_proto_init_pending (priv, readsize);
@@ -887,7 +888,8 @@ sp_state_read_verfbytes:
priv->incoming.frag.call_body.request.vector_sizer_state =
vector_sizer (priv->incoming.frag.call_body.request.vector_sizer_state,
- &readsize, proghdr_buf);
+ &readsize, proghdr_buf,
+ priv->incoming.frag.fragcurrent);
if (readsize == 0) {
priv->incoming.frag.call_body.request.vector_state =