From 89b3466373191b7d2f0001778308b2393ea74da6 Mon Sep 17 00:00:00 2001 From: Amar Tumballi Date: Thu, 24 May 2012 12:58:04 +0530 Subject: 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 http://review.gluster.com/3182 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: http://review.gluster.com/3431 Tested-by: Gluster Build System Reviewed-by: Jeff Darcy Reviewed-by: Anand Avati --- xlators/nfs/server/src/nfs3.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) (limited to 'xlators/nfs/server/src/nfs3.c') diff --git a/xlators/nfs/server/src/nfs3.c b/xlators/nfs/server/src/nfs3.c index f950b9273..684123958 100644 --- a/xlators/nfs/server/src/nfs3.c +++ b/xlators/nfs/server/src/nfs3.c @@ -2238,17 +2238,18 @@ out: int -nfs3svc_write_vecsizer (int state, ssize_t *readsize, char *addr) +nfs3svc_write_vecsizer (int state, ssize_t *readsize, char *base_addr, + char *curr_addr) { - int ret = 0; - uint32_t fhlen = 0; - uint32_t fhlen_n = 0; + int ret = 0; + uint32_t fhlen = 0; + uint32_t fhlen_n = 0; if (state == 0) { ret = NFS3_VECWRITE_READFHLEN; *readsize = 4; } else if (state == NFS3_VECWRITE_READFHLEN) { - fhlen_n = *(uint32_t *)(addr - 4); + fhlen_n = *(uint32_t *)(curr_addr - 4); fhlen = ntohl (fhlen_n); *readsize = xdr_length_round_up (fhlen, NFS3_FHSIZE); ret = NFS3_VECWRITE_READFH; -- cgit