[linux-cifs-client] new regression from cifs open on lookup patches

Jeff Layton jlayton at redhat.com
Fri May 22 12:00:05 GMT 2009


On Fri, 22 May 2009 07:48:44 -0400
Jeff Layton <jlayton at redhat.com> wrote:

> I've run across a new regression due to the open on lookup patches when
> working against a server with functioning posix open calls. Prior to
> those patches, opening a directory would simply result in a
> revalidation of the dir, at most this would mean a QPathInfo call would
> go out on the wire.
> 
> Since the introduction of these patches, opening a directory causes an
> actual open call to go out on the wire for the directory. In general,
> the server will then return a status of NT_STATUS_FILE_IS_A_DIRECTORY
> that gets translated to -EACCES.
> 
> The main place I've noticed this is when trying recursively remove a
> directory (rm -rf). rm will openat(AT_FDCWD, ...) the dir, and then try
> to walk the subdirectories. That fails. Backing out the open intent
> patches fixes the problem.
> 
> This will definitely need to be fixed before 2.6.30 is released, as I'm
> certain this will break more than "rm". Attaching a testcase that can
> be used to test this.
> 

I should note that it doesn't always have this behavior. It seems to
depend on either the inode or dentry caches to some degree. For
instance:

[root at rawhide ~]# ./opendir /mnt/cifs/fsstress
openat returned 13

[root at rawhide ~]# stat !$
stat /mnt/cifs/fsstress
  File: `/mnt/cifs/fsstress'
  Size: 0         	Blocks: 0          IO Block: 16384  directory
Device: 13h/19d	Inode: 197227      Links: 9
Access: (0755/drwxr-xr-x)  Uid: (   99/  nobody)   Gid: (   99/  nobody)
Access: 2009-05-22 07:57:11.849080800 -0400
Modify: 2009-05-22 07:45:24.342983400 -0400
Change: 2009-05-22 07:45:24.342983400 -0400

[root at rawhide ~]# ./opendir /mnt/cifs/fsstress
success

-- 
Jeff Layton <jlayton at redhat.com>


More information about the linux-cifs-client mailing list