From c56b9967a33b8bb106d37df0cf6979b340dbf950 Mon Sep 17 00:00:00 2001 From: Raghavendra G Date: Wed, 24 Nov 2010 07:35:26 +0000 Subject: rpc-transport: don't merge payload iobuf and iobuf which holds program header into single iobref. - io-cache holds a reference on iobref passed from transport layer. Hence, two iobufs are accounted instead of one in calculated used cache size. Signed-off-by: Raghavendra G Signed-off-by: Anand V. Avati BUG: 2135 () URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=2135 --- rpc/rpc-lib/src/rpc-transport.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'rpc/rpc-lib/src/rpc-transport.c') diff --git a/rpc/rpc-lib/src/rpc-transport.c b/rpc/rpc-lib/src/rpc-transport.c index 2a10a3b7..bf0e4dfd 100644 --- a/rpc/rpc-lib/src/rpc-transport.c +++ b/rpc/rpc-lib/src/rpc-transport.c @@ -632,6 +632,10 @@ rpc_transport_pollin_destroy (rpc_transport_pollin_t *pollin) iobref_unref (pollin->iobref); } + if (pollin->hdr_iobuf) { + iobuf_unref (pollin->hdr_iobuf); + } + if (pollin->private) { /* */ GF_FREE (pollin->private); @@ -645,7 +649,8 @@ out: rpc_transport_pollin_t * rpc_transport_pollin_alloc (rpc_transport_t *this, struct iovec *vector, - int count, struct iobref *iobref, void *private) + int count, struct iobuf *hdr_iobuf, + struct iobref *iobref, void *private) { rpc_transport_pollin_t *msg = NULL; msg = GF_CALLOC (1, sizeof (*msg), gf_common_mt_rpc_trans_pollin_t); @@ -662,6 +667,7 @@ rpc_transport_pollin_alloc (rpc_transport_t *this, struct iovec *vector, msg->count = count; msg->iobref = iobref_ref (iobref); msg->private = private; + msg->hdr_iobuf = iobuf_ref (hdr_iobuf); out: return msg; -- cgit