All of lore.kernel.org
 help / color / mirror / Atom feed
From: Venkateswararao Jujjuri <jvrao@linux.vnet.ibm.com>
To: "M. Mohan Kumar" <mohan@in.ibm.com>
Cc: v9fs-developer@lists.sourceforge.net,
	linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [V9fs-developer] [PATCH] net/9p: Handle get_user_pages_fast return properly
Date: Fri, 15 Apr 2011 07:53:16 -0700	[thread overview]
Message-ID: <4DA85BDC.5030407@linux.vnet.ibm.com> (raw)
In-Reply-To: <1302856173-10566-1-git-send-email-mohan@in.ibm.com>

On 04/15/2011 01:29 AM, M. Mohan Kumar wrote:
> Use proper data type to handle get_user_pages_fast error condition. Also
> do not treat EFAULT error as fatal.
>
> Signed-off-by: M. Mohan Kumar<mohan@in.ibm.com>
> ---
>   net/9p/client.c       |    2 +-
>   net/9p/trans_common.c |   11 +++--------
>   2 files changed, 4 insertions(+), 9 deletions(-)
>
> diff --git a/net/9p/client.c b/net/9p/client.c
> index 691a04a..1612142 100644
> --- a/net/9p/client.c
> +++ b/net/9p/client.c
> @@ -614,7 +614,7 @@ p9_client_rpc(struct p9_client *c, int8_t type, const char *fmt, ...)
>
>   	err = c->trans_mod->request(c, req);
>   	if (err<  0) {
> -		if (err != -ERESTARTSYS)
> +		if (err != -ERESTARTSYS&&  err != -EFAULT)
Please analyze other errors that could be returned by 
c->trans_mod->request()
if they need any handling here.

>   			c->status = Disconnected;
>   		goto reterr;
>   	}
> diff --git a/net/9p/trans_common.c b/net/9p/trans_common.c
> index 14265e8..f020da9 100644
> --- a/net/9p/trans_common.c
> +++ b/net/9p/trans_common.c
> @@ -63,7 +63,7 @@ p9_payload_gup(struct p9_req_t *req, size_t *pdata_off, int *pdata_len,
>   		int nr_pages, u8 rw)
>   {
>   	uint32_t first_page_bytes = 0;
> -	uint32_t pdata_mapped_pages;
> +	int32_t pdata_mapped_pages;
>   	struct trans_rpage_info  *rpinfo;
>
>   	*pdata_off = (__force size_t)req->tc->pubuf&  (PAGE_SIZE-1);
> @@ -75,14 +75,9 @@ p9_payload_gup(struct p9_req_t *req, size_t *pdata_off, int *pdata_len,
>   	rpinfo = req->tc->private;
>   	pdata_mapped_pages = get_user_pages_fast((unsigned long)req->tc->pubuf,
>   			nr_pages, rw,&rpinfo->rp_data[0]);
> +	if (pdata_mapped_pages<= 0)
> +		return pdata_mapped_pages;
>
> -	if (pdata_mapped_pages<  0) {
> -		printk(KERN_ERR "get_user_pages_fast failed:%d udata:%p"
> -				"nr_pages:%d\n", pdata_mapped_pages,
> -				req->tc->pubuf, nr_pages);
> -		pdata_mapped_pages = 0;
> -		return -EIO;
> -	}
I would keep the printk and return  the pdata_mapped_pages inside the if 
condition.

Thanks,
JV

>   	rpinfo->rp_nr_pages = pdata_mapped_pages;
>   	if (*pdata_off) {
>   		*pdata_len = first_page_bytes;


  reply	other threads:[~2011-04-15 14:53 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-04-15  8:29 [PATCH] net/9p: Handle get_user_pages_fast return properly M. Mohan Kumar
2011-04-15 14:53 ` Venkateswararao Jujjuri [this message]
2011-04-19 15:24   ` [V9fs-developer] " M. Mohan Kumar
2011-04-19 23:41     ` Venkateswararao Jujjuri

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=4DA85BDC.5030407@linux.vnet.ibm.com \
    --to=jvrao@linux.vnet.ibm.com \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mohan@in.ibm.com \
    --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.