From 80c3061c07c46b4ac11beb5f0ebad08b8af2cafe Mon Sep 17 00:00:00 2001 From: Shehjar Tikoo Date: Sun, 9 May 2010 23:13:53 +0000 Subject: rpcsvc: Move xdr round up functions to rpc code Signed-off-by: Shehjar Tikoo Signed-off-by: Shehjar Tikoo Signed-off-by: Anand V. Avati BUG: 902 (iozone hangs during random read throughput test) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=902 --- xlators/nfs/lib/src/msg-nfs3.c | 22 ---------------------- xlators/nfs/lib/src/msg-nfs3.h | 6 ------ xlators/nfs/lib/src/xdr-rpc.c | 34 ++++++++++++++++++++++++++++++++++ xlators/nfs/lib/src/xdr-rpc.h | 8 ++++++++ 4 files changed, 42 insertions(+), 28 deletions(-) (limited to 'xlators/nfs/lib') diff --git a/xlators/nfs/lib/src/msg-nfs3.c b/xlators/nfs/lib/src/msg-nfs3.c index 781466045db..3eefd4c984d 100644 --- a/xlators/nfs/lib/src/msg-nfs3.c +++ b/xlators/nfs/lib/src/msg-nfs3.c @@ -534,25 +534,3 @@ xdr_serialize_nfsstat3 (struct iovec outmsg, nfsstat3 *s) } -ssize_t -xdr_length_round_up (size_t len, size_t bufsize) -{ - int roundup = 0; - - roundup = len % XDR_BYTES_PER_UNIT; - if (roundup > 0) - roundup = XDR_BYTES_PER_UNIT - roundup; - - if ((roundup > 0) && ((roundup + len) <= bufsize)) - len += roundup; - - return len; -} - -int -xdr_bytes_round_up (struct iovec *vec, size_t bufsize) -{ - vec->iov_len = xdr_length_round_up (vec->iov_len, bufsize); - return 0; -} - diff --git a/xlators/nfs/lib/src/msg-nfs3.h b/xlators/nfs/lib/src/msg-nfs3.h index 78682bc1c4d..047e8dfc81e 100644 --- a/xlators/nfs/lib/src/msg-nfs3.h +++ b/xlators/nfs/lib/src/msg-nfs3.h @@ -183,10 +183,4 @@ xdr_serialize_mountstat3 (struct iovec outmsg, mountstat3 *m); extern ssize_t xdr_serialize_nfsstat3 (struct iovec outmsg, nfsstat3 *s); - -extern int -xdr_bytes_round_up (struct iovec *vec, size_t bufsize); - -extern ssize_t -xdr_length_round_up (size_t len, size_t bufsize); #endif diff --git a/xlators/nfs/lib/src/xdr-rpc.c b/xlators/nfs/lib/src/xdr-rpc.c index ac0f8afd384..5f8521ff382 100644 --- a/xlators/nfs/lib/src/xdr-rpc.c +++ b/xlators/nfs/lib/src/xdr-rpc.c @@ -188,3 +188,37 @@ xdr_to_auth_unix_cred (char *msgbuf, int msglen, struct authunix_parms *au, return 0; } +ssize_t +xdr_length_round_up (size_t len, size_t bufsize) +{ + int roundup = 0; + + roundup = len % XDR_BYTES_PER_UNIT; + if (roundup > 0) + roundup = XDR_BYTES_PER_UNIT - roundup; + + if ((roundup > 0) && ((roundup + len) <= bufsize)) + len += roundup; + + return len; +} + +int +xdr_bytes_round_up (struct iovec *vec, size_t bufsize) +{ + vec->iov_len = xdr_length_round_up (vec->iov_len, bufsize); + return 0; +} + +void +xdr_vector_round_up (struct iovec *vec, int vcount, uint32_t count) +{ + uint32_t round_count = 0; + + round_count = xdr_length_round_up (count, 1048576); + round_count -= count; + if (round_count == 0) + return; + + vec[vcount-1].iov_len += round_count; +} diff --git a/xlators/nfs/lib/src/xdr-rpc.h b/xlators/nfs/lib/src/xdr-rpc.h index 4c0ee69b138..48acdaa4399 100644 --- a/xlators/nfs/lib/src/xdr-rpc.h +++ b/xlators/nfs/lib/src/xdr-rpc.h @@ -71,4 +71,12 @@ xdr_to_auth_unix_cred (char *msgbuf, int msglen, struct authunix_parms *au, #define rpc_call_verf_flavour(call) (rpc_opaque_auth_flavour ((&(call)->ru.RM_cmb.cb_verf))) #define rpc_call_verf_len(call) (rpc_opaque_auth_len ((&(call)->ru.RM_cmb.cb_verf))) +extern int +xdr_bytes_round_up (struct iovec *vec, size_t bufsize); + +extern ssize_t +xdr_length_round_up (size_t len, size_t bufsize); + +void +xdr_vector_round_up (struct iovec *vec, int vcount, uint32_t count); #endif -- cgit