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 19:28:51 +0200 [thread overview]
Message-ID: <4BAB9D53.4000909@panasas.com> (raw)
In-Reply-To: <20100325152505.GD30031@ZenIV.linux.org.uk>
On 03/25/2010 05:25 PM, Al Viro wrote:
> On Thu, Mar 25, 2010 at 04:27:13PM +0200, Boaz Harrosh wrote:
>
>> And about the NFS thing, let misbehaving applications byte there own bullets.
>> But a good app like git, does put an O_DIRECTORY on the directory open, and
>> therefore will receive consistent results, right?
>
> What the hell do you mean, "misbehaving"? O_DIRECTORY means one thing:
> "refuse to open if it turns out to be a non-directory". If open() succeed
> with it and fails without, it's a definite bug. Application has every
> right to call the damn thing without that flag.
>
Ha, OK, sorry I thought exactly the opposite. I assumed it meant
"don't allow a directory to be opened, unless set". As an application
hint of saying I'm going to do file things to this handle, don't want
any dirs.
So yes definitely it looks like an NFS bug masked by the fact that everyone
is using opendir() form libc for this.
> It *can* be used as a hint by fs code, and it's a useful hint, so yes,
> we need to restore LOOKUP_DIRECTORY (until we get rid of the entire
> d_revalidate/lookup+open mess and pass struct file + open flags directly
> to fs method for the last step of pathname resolution; basically, most
> of the do_last() guts would become that method, killing the intents
> crap for good; new method would simply check for O_DIRECTORY presence
> instead of looking at LOOKUP_DIRECTORY).
>
> However, NFS behaviour in cases when O_DIRECTORY is absent is a separate
> (and quite real) bug. If nfs_atomic_lookup() sees -EISDIR from attempt
> to open on server, it should either issue plain lookup or try to use the
> information it got in response to open attempt (if there's enough of it
> there). Passing -EISDIR to ->lookup() caller is simply wrong.
>
> I'm going to send a fix for O_DIRECTORY case (restoring the behaviour
> we had in 2.6.33) today, but NFS side of things also needs to be dealt
> with.
Thank you Al for fixing this, I hope some capable NFS person will take
that issue to heart.
Boaz
next prev parent reply other threads:[~2010-03-25 17:28 UTC|newest]
Thread overview: 50+ 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 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
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 [this message]
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=4BAB9D53.4000909@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox