Re: mkstemp fails on cifs linux-2.6.31-rc1 / samba-3.3.6
Jeff Layton <[email protected]>
| Newsgroups | gmane.linux.file-systems.cifs |
|---|---|
| Message-ID | <[email protected]> |
On Tue, 2009-06-30 at 08:27 -0500, Shirish Pargaonkar wrote: > On Tue, Jun 30, 2009 at 8:01 AM, Jeff Layton<[email protected]> wrote: > > On Tue, 2009-06-30 at 13:00 +0200, Wilhelm Meier wrote: > >> Hi, > >> > >> I made a simple test with cifs in linux-2.6.31-rc1 to see if the so called > >> kmail-problem (cifs-user-homes are totally unusable for kmail-mail-cache) > >> still remains. Than I ran into a strange problem using "sed -i <command> <file- > >> on-cifs>". "sed" uses mkstemp libc-funktion and fails with EEXIST, writing > >> therefore tons of files onto the cifs-share. > >> > >> You can reproduce it with: > >> > >> strace mktemp -p . abcXXXXXX 2>&1 | more > >> > >> giving > >> > >> stat64(".", {st_mode=S_IFDIR|0700, st_size=0, ...}) = 0 > >> open("./abcUJcKWM", O_RDWR|O_CREAT|O_EXCL, 0600) = -1 EEXIST (File exists) > >> stat64(".", {st_mode=S_IFDIR|0700, st_size=0, ...}) = 0 > >> open("./abcUGJaiA", O_RDWR|O_CREAT|O_EXCL, 0600) = -1 EEXIST (File exists) > >> stat64(".", {st_mode=S_IFDIR|0700, st_size=0, ...}) = 0 > >> open("./abcWfKacs", O_RDWR|O_CREAT|O_EXCL, 0600) = -1 EEXIST (File exists) > >> stat64(".", {st_mode=S_IFDIR|0700, st_size=0, ...}) = 0 > >> open("./abcBaGjWM", O_RDWR|O_CREAT|O_EXCL, 0600) = -1 EEXIST (File exists) > >> > >> This is the same on 2.6.31-rc1-git6. > >> > >> This is not the case in 2.6.26-2-vserver-686 (debian). > >> > >> The Samba-Server is lenny with samba-enterprise: > >> kmux-fs:/# dpkg -l | grep samba > >> ii sernet-samba 3.3.6-24 a LanManager-like > >> file and printer server fo > >> ii sernet-samba-common 3.3.6-24 Samba common files > >> used by both the server a > >> ii sernet-samba-keyring 1.1 GnuPG archive > >> keys of the SerNet Samba archi > >> > >> If I change Samba to the lenny-version > >> > >> ii samba 2:3.2.5-4lenny6 a LanManager-like > >> file and printer server fo > >> ii samba-common 2:3.2.5-4lenny6 Samba common files > >> used by both the server a > >> > >> the described test-case is fine. > >> > >> > > > > I can reproduce this too. > > > > Looks like another regression from the create-on-lookup patches. I > > commented the relevant chunk out of cifs_lookup and that fixes the > > issue. > > > > Shirish, thoughts? > > > > -- > > Jeff Layton <[email protected]> > > > > > > Jeff, Wilhelm, > > I will spend some time later in the day on this but one thought came to mind, > Jeff, we took out a line where if there was exclusive create, we would let > vfs handle it, not sure if putting it back would help! > Probably...it does seem to be related to O_EXCL. Rather than just blindly putting that back though, I'd like to see some understanding about why this is failing, and a consistent idea about how this is code is intended to work. Skipping create on lookup for the O_EXCL case seems ass-backwards to me. Doing it on lookup should help atomicity, and that's just what you want for O_EXCL. -- Jeff Layton <[email protected]>