From: "Aneesh Kumar K. V" <aneesh.kumar@linux.vnet.ibm.com>
To: "Venkateswararao Jujjuri \(JV\)" <jvrao@linux.vnet.ibm.com>,
v9fs-developer@lists.sourceforge.net
Cc: linux-fsdevel@vger.kernel.org,
"Venkateswararao Jujjuri \(JV\)" <jvrao@linux.vnet.ibm.com>
Subject: Re: [PATCH] [net/9p] Small non-IO PDUs for zero-copy supporting transports.
Date: Sun, 20 Feb 2011 00:41:20 +0530 [thread overview]
Message-ID: <87y65b261z.fsf@linux.vnet.ibm.com> (raw)
In-Reply-To: <1297980761-28579-1-git-send-email-jvrao@linux.vnet.ibm.com>
On Thu, 17 Feb 2011 14:12:41 -0800, "Venkateswararao Jujjuri (JV)" <jvrao@linux.vnet.ibm.com> wrote:
> If a transport prefers payload to be sent separate from the PDU
> (P9_TRANS_PREF_PAYLOAD_SEP), there is no need to allocate msize
> PDU buffers(struct p9_fcall).
>
> This patch allocates only upto 4k buffers for this kind of transports
> and there won't be any change to the legacy transports.
>
> Hence, this patch on top of zero copy changes allows user to
> specify higher msizes through the mount option
> without hogging the kernel heap.
>
> Signed-off-by: Venkateswararao Jujjuri <jvrao@linux.vnet.ibm.com>
> ---
> include/net/9p/9p.h | 2 +-
> net/9p/client.c | 23 +++++++++++++++++------
> 2 files changed, 18 insertions(+), 7 deletions(-)
>
> diff --git a/include/net/9p/9p.h b/include/net/9p/9p.h
> index 7aefa6d..eaa45f9 100644
> --- a/include/net/9p/9p.h
> +++ b/include/net/9p/9p.h
> @@ -688,7 +688,7 @@ struct p9_rwstat {
> * @id: protocol operating identifier of type &p9_msg_t
> * @tag: transaction id of the request
> * @offset: used by marshalling routines to track currentposition in buffer
> - * @capacity: used by marshalling routines to track total capacity
> + * @capacity: used by marshalling routines to track total malloc'd capacity
> * @pubuf: Payload user buffer given by the caller
> * @pubuf: Payload kernel buffer given by the caller
> * @pbuf_size: pubuf/pkbuf(only one will be !NULL) size to be read/write.
> diff --git a/net/9p/client.c b/net/9p/client.c
> index 251abb1..43ec78a 100644
> --- a/net/9p/client.c
> +++ b/net/9p/client.c
> @@ -229,10 +229,23 @@ static struct p9_req_t *p9_tag_alloc(struct p9_client *c, u16 tag)
> return ERR_PTR(-ENOMEM);
> }
> init_waitqueue_head(req->wq);
> - req->tc = kmalloc(sizeof(struct p9_fcall)+c->msize,
> - GFP_KERNEL);
> - req->rc = kmalloc(sizeof(struct p9_fcall)+c->msize,
> - GFP_KERNEL);
> + if ((c->trans_mod->pref & P9_TRANS_PREF_PAYLOAD_MASK) ==
> + P9_TRANS_PREF_PAYLOAD_SEP) {
> + int alloc_msize = min(c->msize, 4096);
value 4096 should be a #define with a comment explaining how we arrived
at value 4096
> + req->tc = kmalloc(sizeof(struct p9_fcall)+alloc_msize,
> + GFP_KERNEL);
> + req->tc->capacity = alloc_msize;
> + req->rc = kmalloc(sizeof(struct p9_fcall)+alloc_msize,
> + GFP_KERNEL);
> + req->rc->capacity = alloc_msize;
> + } else {
> + req->tc = kmalloc(sizeof(struct p9_fcall)+c->msize,
> + GFP_KERNEL);
> + req->tc->capacity = c->msize;
> + req->rc = kmalloc(sizeof(struct p9_fcall)+c->msize,
> + GFP_KERNEL);
> + req->rc->capacity = c->msize;
> + }
> if ((!req->tc) || (!req->rc)) {
> printk(KERN_ERR "Couldn't grow tag array\n");
> kfree(req->tc);
> @@ -243,9 +256,7 @@ static struct p9_req_t *p9_tag_alloc(struct p9_client *c, u16 tag)
> return ERR_PTR(-ENOMEM);
> }
> req->tc->sdata = (char *) req->tc + sizeof(struct p9_fcall);
> - req->tc->capacity = c->msize;
> req->rc->sdata = (char *) req->rc + sizeof(struct p9_fcall);
> - req->rc->capacity = c->msize;
> }
>
> p9pdu_reset(req->tc);
-aneesh
prev parent reply other threads:[~2011-02-19 19:11 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-02-17 22:12 [PATCH] [net/9p] Small non-IO PDUs for zero-copy supporting transports Venkateswararao Jujjuri (JV)
2011-02-19 19:11 ` Aneesh Kumar K. V [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87y65b261z.fsf@linux.vnet.ibm.com \
--to=aneesh.kumar@linux.vnet.ibm.com \
--cc=jvrao@linux.vnet.ibm.com \
--cc=linux-fsdevel@vger.kernel.org \
--cc=v9fs-developer@lists.sourceforge.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.