From: "J. Bruce Fields" <bfields@fieldses.org>
To: Mi Jinlong <mijinlong@cn.fujitsu.com>
Cc: NFS <linux-nfs@vger.kernel.org>
Subject: Re: [PATCH] nfsd41: make sure nfs server process OPEN with EXCLUSIVE4_1 correcttly
Date: Thu, 7 Apr 2011 15:50:05 -0400 [thread overview]
Message-ID: <20110407195005.GC11806@fieldses.org> (raw)
In-Reply-To: <4D9C2CB2.7000101@cn.fujitsu.com>
On Wed, Apr 06, 2011 at 05:04:50PM +0800, Mi Jinlong wrote:
> At the recent kernel(2.6.39-rc1),
(But this is not a regression, right? This has been a problem all
along.)
> NFS server can't process OPEN with EXCLUSIVE4_1,
> because NFS server call nfsd_create_v3 to create file instead implement a separate
> one. But nfsd_create_v3 can't process createmode is EXCLUSIVE4_1.
Is our handling of the attributes correct in this case? (See e.g. the
op_bmval[1] assignment a few lines down.)
--b.
>
> According to RFC5661, at nfsd_create_v3, EXCLUSIVE4_1 should be processed as
> EXCLUSIVE4.
>
> Signed-off-by: Mi Jinlong <mijinlong@cn.fujitsu.com>
> ---
> fs/nfsd/nfs4proc.c | 11 ++++++++---
> 1 files changed, 8 insertions(+), 3 deletions(-)
>
> diff --git a/fs/nfsd/nfs4proc.c b/fs/nfsd/nfs4proc.c
> index 5fcb139..5325490 100644
> --- a/fs/nfsd/nfs4proc.c
> +++ b/fs/nfsd/nfs4proc.c
> @@ -173,7 +173,7 @@ do_open_lookup(struct svc_rqst *rqstp, struct svc_fh *current_fh, struct nfsd4_o
> {
> struct svc_fh resfh;
> __be32 status;
> - int created = 0;
> + int created = 0, createmode = 0;
>
> fh_init(&resfh, NFS4_FHSIZE);
> open->op_truncate = 0;
> @@ -196,11 +196,16 @@ do_open_lookup(struct svc_rqst *rqstp, struct svc_fh *current_fh, struct nfsd4_o
>
> /*
> * Note: create modes (UNCHECKED,GUARDED...) are the same
> - * in NFSv4 as in v3.
> + * in NFSv4 as in v3 except EXCLUSIVE4_1.
> */
> + if (open->op_createmode == NFS4_CREATE_EXCLUSIVE4_1)
> + createmode = NFS4_CREATE_EXCLUSIVE;
> + else
> + createmode = open->op_createmode;
> +
> status = nfsd_create_v3(rqstp, current_fh, open->op_fname.data,
> open->op_fname.len, &open->op_iattr,
> - &resfh, open->op_createmode,
> + &resfh, createmode,
> (u32 *)open->op_verf.data,
> &open->op_truncate, &created);
>
> --
> 1.7.4.1
>
>
>
next prev parent reply other threads:[~2011-04-07 19:50 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-04-06 9:04 [PATCH] nfsd41: make sure nfs server process OPEN with EXCLUSIVE4_1 correcttly Mi Jinlong
2011-04-07 19:50 ` J. Bruce Fields [this message]
2011-04-08 9:57 ` Mi Jinlong
2011-04-18 20:07 ` J. Bruce Fields
2011-04-20 9:20 ` Mi Jinlong
2011-04-20 21:00 ` J. Bruce Fields
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=20110407195005.GC11806@fieldses.org \
--to=bfields@fieldses.org \
--cc=linux-nfs@vger.kernel.org \
--cc=mijinlong@cn.fujitsu.com \
/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.