Re: [PATCH 0/7] Permit filesystem local caching and NFS superblocksharing [try #13]

From: Trond Myklebust
Date: Tue Sep 05 2006 - 00:14:50 EST


On Tue, 2006-09-05 at 12:11 +0800, Ian Kent wrote:
> On Mon, 2006-09-04 at 14:46 +0100, David Howells wrote:
> > Ian Kent <raven@xxxxxxxxxx> wrote:
> >
> > > This is the point I'm trying to make.
> > > I'm able to reproduce this with exports that don't have "nohide".
> > > The mkdir used to return EEXIST, possibly before getting to the EACCES
> > > test. It appears to be a change in semantic behavior and I can't see
> > > where it is coming from. autofs expects an EEXIST but not an EACCES and
> > > so doesn't perform the mount. I could ignore the EACCES but that would
> > > be cheating.
> >
> > Here's something you can try: Look in fs/nfs/dir.c. Find nfs_lookup(). In
> > there, find the following lines:
> >
> > /* If we're doing an exclusive create, optimize away the lookup */
> > if (nfs_is_exclusive_create(dir, nd))
> > goto no_entry;
> >
> > Comment that bit out and see what the effect it.
>
> Yes.
>
> Commenting this out results in the expected behavior.
> No doubt this is because the following NFS lookup to the server returns
> EEXIST which is then returned to userspace.

It also breaks open(O_EXCL). Removing that is unacceptable.

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/