rpcsvc: Move xdr round up functions to rpc code

Signed-off-by: Shehjar Tikoo <shehjart@dev.gluster.com>
Signed-off-by: Shehjar Tikoo <shehjart@gluster.com>
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>

BUG: 902 (iozone hangs during random read throughput test)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=902
This commit is contained in:
Shehjar Tikoo 2010-05-09 23:13:53 +00:00 committed by Anand V. Avati
parent eba21f8fb6
commit 80c3061c07
4 changed files with 42 additions and 28 deletions

View File

@ -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;
}

View File

@ -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

View File

@ -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;
}

View File

@ -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