[linux-cifs-client] mkstemp fails on cifs linux-2.6.31-rc1 / samba-3.3.6

Wilhelm Meier wilhelm.meier at fh-kl.de
Wed Jul 1 13:44:36 GMT 2009


Am Mittwoch, 1. Juli 2009 15:17:20 schrieb Shirish Pargaonkar:
> On Wed, Jul 1, 2009 at 7:13 AM, Jeff Layton<jlayton at redhat.com> wrote:
> > On Wed, 2009-07-01 at 06:59 -0500, Shirish Pargaonkar wrote:
> >> On Wed, Jul 1, 2009 at 6:21 AM, Jeff Layton<jlayton at redhat.com> wrote:
> >> > On Wed, 2009-07-01 at 06:01 -0500, Shirish Pargaonkar wrote:
> >> >> I think the problem is, why EEXIST since file does not exist.  The
> >> >> looping is I guess
> >> >> because mktemp then attempts to create another file and receives
> >> >> EEXIST and it goes on forever.
> >> >> So the basic issues is why EEXIST since mktemp is attempting a file
> >> >> which does not
> >> >> exist on the server.
> >> >
> >> > The problem is that the lookup is returning a positive dentry since it
> >> > just created the file. This makes the VFS turn around and return
> >> > -EEXIST (see the second O_EXCL check in do_filp_open). So we do have
> >> > to skip the create on lookup for O_EXCL or it won't work.
> >> >
> >> > I think what's needed is something like this patch. It seems to fix
> >> > the testcase for me. That said, this is not adequately regression
> >> > tested and should not be committed until it is.
> >> >
> >> > On that note, I'd like to reiterate my earlier sentiment that all of
> >> > this create-on-lookup code was committed prematurely and should be
> >> > backed out until it's more fully baked.
> >> >
> >> > Just my USD$.02...
> >> >
> >> > --
> >> > Jeff Layton <jlayton at redhat.com>
> >>
> >> meant to send this to everybody but ended up sending only to Jeff,
> >> so here it is again...
> >>
> >> I think that is why it is not possible to exclusive create within
> >> lookup intent code.
> >> So, IMHO, we should put the check back in the cifs_lookup.
> >> That is what NFS does, and cifs should do the same
> >
> > Right, but do we really need to do the lookup in that case? It seems
> > like the old check didn't optimize it away (but maybe I'm remembering
> > incorrectly).
> >
> > --
> > Jeff Layton <jlayton at redhat.com>
>
> With the check, we are back to what was before lookup intent for
> exclusive create.  I think for exclusive create, a lookup can result in
> not create if the file exists, so for a command like mktemp, it
> probably does not help, there will be a lookup and there will be a create.

Well, I don't know nothing about the internals of cifs, but in this case 
lookup and create must be atomic together ...

> _______________________________________________
> linux-cifs-client mailing list
> linux-cifs-client at lists.samba.org
> https://lists.samba.org/mailman/listinfo/linux-cifs-client

-- 
Wilhelm


More information about the linux-cifs-client mailing list