From: Boaz Harrosh <bharrosh@panasas.com>
To: Al Viro <viro@ZenIV.linux.org.uk>
Cc: Benny Halevy <bhalevy@panasas.com>,
linux-fsdevel <linux-fsdevel@vger.kernel.org>,
"J. Bruce Fields" <bfields@citi.umich.edu>,
pNFS Mailing List <pnfs@linux-nfs.org>,
linux-kernel <linux-kernel@vger.kernel.org>,
Doug Nazar <nazard.lkml@gmail.com>
Subject: Re: [pnfs] [GIT BISECT] first bad commit: 1f36f774 Switch !O_CREAT case to use of do_last()
Date: Thu, 25 Mar 2010 15:30:22 +0200 [thread overview]
Message-ID: <4BAB656E.8020204@panasas.com> (raw)
In-Reply-To: <20100325130610.GZ30031@ZenIV.linux.org.uk>
On 03/25/2010 03:06 PM, Al Viro wrote:
> On Thu, Mar 25, 2010 at 02:18:56PM +0200, Benny Halevy wrote:
>
>> Indeed this error is coming from the server:
>>
>> nfsd_dispatch: vers 4 proc 1
>> nfsv4 compound op #1/7: 22 (OP_PUTFH)
>> nfsd: fh_verify(16: 01010001 00000000 000e6592 345b9f25 00000000 00000000)
>> nfsv4 compound op ffff880076734078 opcnt 7 #1: 22: status 0
>> nfsv4 compound op #2/7: 32 (OP_SAVEFH)
>> nfsv4 compound op ffff880076734078 opcnt 7 #2: 32: status 0
>> nfsv4 compound op #3/7: 18 (OP_OPEN)
>> NFSD: nfsd4_open filename pack op_stateowner (null)
>> renewing client (clientid 4bab503e/00000002)
>> nfsd: nfsd_lookup(fh 16: 01010001 00000000 000e6592 345b9f25 00000000 00000000, pack)
>> nfsd: fh_verify(16: 01010001 00000000 000e6592 345b9f25 00000000 00000000)
>> nfsd: fh_compose(exp 08:05/106497 objects/pack, ino=943508)
>> nfsd: fh_verify(16: 01010001 00000000 000e6594 345b9f26 00000000 00000000)
>> nfsv4 compound op ffff880076734078 opcnt 7 #3: 18: status 21
>> nfsv4 compound returned 21
>
> Ho-hum... So it hits the "let's try to open it atomically" path and
> gets told to FOAD by server (as it should, of course).
>
> And if we see different behaviour after ls -l, presumably that's a
> difference between ->lookup() and ->d_revalidate() paths on client...
>
> OK, I think I see what's going on in this case. However, it doesn't
> explain everything; my current theory is that we used to get LOOKUP_DIRECTORY
> on the last components in O_DIRECTORY opens and we don't do that now.
> That used to derail the is_atomic_open(), now it's hit and there we go.
>
> It's not hard to verify (and it might take care of this testcase), but
> I still have questions about the way this code used to work *without*
> O_DIRECTORY.
>
> Let's try this: before do_lookup() call there add
> if (*want_dir)
> nd->flags |= LOOKUP_DIRECTORY;
Yes this fixes it!!
2.6.34-rc2 plus above, now works, horay. (diff attached)
> and see how does it behave.
>
> However, even if it does help, it doesn't explain everything. Normal
> open() on a directory without O_DIRECTORY if flags shouldn't fail with
> -EISDIR. How did that manage to avoid it all along?
---
diff --git a/fs/namei.c b/fs/namei.c
index 1c0fca6..434ad2a 100644
--- a/fs/namei.c
+++ b/fs/namei.c
@@ -1647,6 +1647,8 @@ static struct file *do_last(struct nameidata *nd, struct path *path,
/* just plain open? */
if (!(open_flag & O_CREAT)) {
+ if (*want_dir)
+ nd->flags |= LOOKUP_DIRECTORY;
error = do_lookup(nd, &nd->last, path);
if (error)
goto exit;
next prev parent reply other threads:[~2010-03-25 13:30 UTC|newest]
Thread overview: 51+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-03-24 15:49 [GIT BISECT] first bad commit: 1f36f774 Switch !O_CREAT case to use of do_last() Boaz Harrosh
2010-03-24 15:49 ` Boaz Harrosh
2010-03-24 16:00 ` Al Viro
2010-03-24 16:04 ` Boaz Harrosh
2010-03-24 16:07 ` Al Viro
2010-03-24 16:10 ` Boaz Harrosh
2010-03-24 16:39 ` Al Viro
2010-03-24 17:15 ` Boaz Harrosh
2010-03-24 17:32 ` [pnfs] " Boaz Harrosh
2010-03-24 17:47 ` Boaz Harrosh
2010-03-24 17:58 ` Boaz Harrosh
2010-03-24 18:06 ` Al Viro
2010-03-24 18:26 ` Doug Nazar
2010-03-24 18:56 ` Al Viro
2010-03-25 9:39 ` Boaz Harrosh
2010-03-25 10:12 ` Al Viro
2010-03-25 10:22 ` Benny Halevy
2010-03-25 10:31 ` Benny Halevy
2010-03-25 10:49 ` Al Viro
2010-03-25 10:56 ` Benny Halevy
2010-03-25 11:00 ` Al Viro
2010-03-25 11:12 ` Benny Halevy
2010-03-25 11:13 ` Benny Halevy
2010-03-25 11:55 ` Al Viro
2010-03-25 13:00 ` Boaz Harrosh
2010-03-25 13:11 ` Boaz Harrosh
2010-03-25 10:54 ` Al Viro
2010-03-25 11:19 ` Benny Halevy
2010-03-25 12:07 ` Benny Halevy
2010-03-25 12:18 ` Benny Halevy
2010-03-25 13:06 ` Al Viro
2010-03-25 13:30 ` Boaz Harrosh [this message]
2010-03-25 13:37 ` Al Viro
2010-03-25 13:45 ` Boaz Harrosh
2010-03-25 14:04 ` Al Viro
2010-03-25 14:27 ` Boaz Harrosh
2010-03-25 15:25 ` Al Viro
2010-03-25 17:28 ` Boaz Harrosh
2010-03-25 17:59 ` Trond Myklebust
2010-03-25 18:06 ` Boaz Harrosh
2010-03-25 18:18 ` Trond Myklebust
2010-03-25 18:33 ` Boaz Harrosh
2010-03-25 13:52 ` Benny Halevy
2010-03-25 14:06 ` Al Viro
2010-03-25 14:07 ` Benny Halevy
2010-03-25 14:36 ` Benny Halevy
2010-03-24 18:02 ` Trond Myklebust
2010-03-24 18:10 ` Trond Myklebust
2010-03-25 9:13 ` Boaz Harrosh
2010-03-25 15:44 ` Trond Myklebust
2010-03-25 10:11 ` Benny Halevy
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=4BAB656E.8020204@panasas.com \
--to=bharrosh@panasas.com \
--cc=bfields@citi.umich.edu \
--cc=bhalevy@panasas.com \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=nazard.lkml@gmail.com \
--cc=pnfs@linux-nfs.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.