From: "J. Bruce Fields" <bfields@fieldses.org>
To: hooanon05@yahoo.co.jp
Cc: David Woodhouse <dwmw2@infradead.org>,
Al Viro <viro@ZenIV.linux.org.uk>,
hch@infradead.org,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"linux-fsdevel@vger.kernel.org" <linux-fsdevel@vger.kernel.org>
Subject: Re: [PATCH v2] Fix i_mutex handling in nfsd readdir
Date: Thu, 23 Apr 2009 16:27:05 -0400 [thread overview]
Message-ID: <20090423202705.GA31085@fieldses.org> (raw)
In-Reply-To: <9180.1240468823@jrobl>
On Thu, Apr 23, 2009 at 03:40:23PM +0900, hooanon05@yahoo.co.jp wrote:
>
> "J. Bruce Fields":
> > > Isn't it better to test it BEFORE fh_compose()?
> :::
> > Yes, I think you're right.
>
> Then here you are.
The nfsv4 readdir callback needs a similar fix.
Also, it looks to me like this results in us encoding an entry for this
deleted file in the readdir reply, but with an empty filehandle. From a
quick glance at the rfc it's not clear to me whether this is really
legal. I suspect it may cause odd behavior on clients. At the least it
would seem cleaner to check for this condition early enough that we can
just skip the entry entirely.
--b.
>
> J. R. Okajima
>
> ----------------------------------------------------------------------
>
> commit c98c6c4a207d602bd9498ea5f1d2993a00e98445
> Author: J. R. Okajima <hooanon05@yahoo.co.jp>
> Date: Thu Apr 23 15:38:43 2009 +0900
>
> NFSD: test d_inode before fh_compose()
>
> After 2f9092e1020246168b1309b35e085ecd7ff9ff72 "Fix i_mutex vs. readdir
> handling in nfsd" (and 14f7dd63 "Copy XFS readdir hack into nfsd code"),
> an entry may be removed between the first mutex_unlock and the second
> mutex_lock. In this case, lookup_one_len() in compose_entry_fh() will
> return a negative dentry.
> It is better to test inode (positive/negative) BEFORE fh_compose().
>
> Signed-off-by: J. R. Okajima <hooanon05@yahoo.co.jp>
>
> diff --git a/fs/nfsd/nfs3xdr.c b/fs/nfsd/nfs3xdr.c
> index 17d0dd9..1b5543b 100644
> --- a/fs/nfsd/nfs3xdr.c
> +++ b/fs/nfsd/nfs3xdr.c
> @@ -851,8 +851,8 @@ compose_entry_fh(struct nfsd3_readdirres *cd, struct svc_fh *fhp,
> if (IS_ERR(dchild))
> return 1;
> if (d_mountpoint(dchild) ||
> - fh_compose(fhp, exp, dchild, &cd->fh) != 0 ||
> - !dchild->d_inode)
> + !dchild->d_inode ||
> + fh_compose(fhp, exp, dchild, &cd->fh) != 0)
> rv = 1;
> dput(dchild);
> return rv;
next prev parent reply other threads:[~2009-04-23 20:27 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-03-19 14:54 Q: NFSD readdir in linux-2.6.28 hooanon05
2009-03-19 15:17 ` David Woodhouse
2009-03-19 15:34 ` hooanon05
2009-03-19 15:51 ` David Woodhouse
2009-04-17 9:32 ` David Woodhouse
2009-04-17 19:32 ` Al Viro
2009-04-17 22:17 ` David Woodhouse
2009-04-17 22:43 ` Al Viro
2009-04-17 22:51 ` David Woodhouse
2009-04-17 22:53 ` Al Viro
2009-04-17 22:55 ` David Woodhouse
2009-04-17 23:23 ` David Woodhouse
2009-04-17 23:37 ` Al Viro
2009-04-17 23:39 ` Al Viro
2009-04-18 0:15 ` [PATCH] Fix i_mutex handling in nfsd readdir David Woodhouse
2009-04-18 3:11 ` hooanon05
2009-04-18 14:25 ` Al Viro
2009-04-19 7:18 ` David Woodhouse
2009-04-19 12:27 ` [PATCH v2] " David Woodhouse
2009-04-19 20:51 ` J. Bruce Fields
2009-04-20 19:50 ` J. Bruce Fields
2009-04-21 0:29 ` Al Viro
2009-04-21 21:15 ` J. Bruce Fields
2009-04-21 21:54 ` Al Viro
2009-05-11 23:16 ` J. Bruce Fields
2009-04-22 4:41 ` hooanon05
2009-04-22 19:12 ` J. Bruce Fields
2009-04-23 6:40 ` hooanon05
2009-04-23 20:27 ` J. Bruce Fields [this message]
2009-05-05 23:35 ` J. Bruce Fields
2009-05-06 5:09 ` hooanon05
2009-05-06 20:20 ` J. Bruce Fields
2009-05-07 4:38 ` hooanon05
2009-05-08 18:47 ` J. Bruce Fields
2009-03-19 15:37 ` Q: NFSD readdir in linux-2.6.28 Matthew Wilcox
2009-03-19 15:45 ` hooanon05
2009-03-19 16:01 ` David Woodhouse
2009-04-16 21:45 ` J. Bruce Fields
2009-04-17 4:13 ` hooanon05
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=20090423202705.GA31085@fieldses.org \
--to=bfields@fieldses.org \
--cc=dwmw2@infradead.org \
--cc=hch@infradead.org \
--cc=hooanon05@yahoo.co.jp \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=viro@ZenIV.linux.org.uk \
/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.