kernel-ark/fs/nfs
Jeff Layton 1788ea6e3b nfs: when attempting to open a directory, fall back on normal lookup (try #5)
commit d953126 changed how nfs_atomic_lookup handles an -EISDIR return
from an OPEN call. Prior to that patch, that caused the client to fall
back to doing a normal lookup. When that patch went in, the code began
returning that error to userspace. The d_revalidate codepath however
never had the corresponding change, so it was still possible to end up
with a NULL ctx->state pointer after that.

That patch caused a regression. When we attempt to open a directory that
does not have a cached dentry, that open now errors out with EISDIR. If
you attempt the same open with a cached dentry, it will succeed.

Fix this by reverting the change in nfs_atomic_lookup and allowing
attempts to open directories to fall back to a normal lookup

Also, add a NFSv4-specific f_ops->open routine that just returns
-ENOTDIR. This should never be called if things are working properly,
but if it ever is, then the dprintk may help in debugging.

To facilitate this, a new file_operations field is also added to the
nfs_rpc_ops struct.

Cc: stable@kernel.org
Signed-off-by: Jeff Layton <jlayton@redhat.com>
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
2011-11-04 16:39:04 -04:00
..
blocklayout pnfsblock: fix writeback deadlock 2011-10-18 09:08:15 -07:00
objlayout pnfs-obj: Support for RAID5 read-4-write interface. 2011-11-02 23:56:09 -04:00
cache_lib.c switch vfs_path_lookup() to struct path 2011-07-20 01:44:14 -04:00
cache_lib.h atomic: use <linux/atomic.h> 2011-07-26 16:49:47 -07:00
callback_proc.c NFSv4.1: Return NFS4ERR_BADSESSION to callbacks during session resets 2011-08-04 11:55:35 -04:00
callback_xdr.c nfs: set vs_hidden on nfs4_callback_version4 (try #2) 2011-11-04 09:00:09 -04:00
callback.c sunrpc: use better NUMA affinities 2011-08-19 13:25:36 -04:00
callback.h NFSv4.1: Fix the callback 'highest_used_slotid' behaviour 2011-08-04 11:55:35 -04:00
client.c Check validity of cl_rpcclient in nfs_server_list_show 2011-10-20 18:44:04 -05:00
delegation.c NFS: Use the inode->i_version to cache NFSv4 change attribute information 2011-10-18 09:14:34 -07:00
delegation.h
dir.c nfs: when attempting to open a directory, fall back on normal lookup (try #5) 2011-11-04 16:39:04 -04:00
direct.c atomic: use <linux/atomic.h> 2011-07-26 16:49:47 -07:00
dns_resolve.c
dns_resolve.h
file.c nfs: when attempting to open a directory, fall back on normal lookup (try #5) 2011-11-04 16:39:04 -04:00
fscache-index.c NFS: Use the inode->i_version to cache NFSv4 change attribute information 2011-10-18 09:14:34 -07:00
fscache.c FS-Cache: Add a helper to bulk uncache pages on an inode 2011-07-07 13:21:56 -07:00
fscache.h
getroot.c Merge branch 'nfs-for-2.6.39' into nfs-for-next 2011-03-24 17:03:14 -04:00
idmap.c SUNRPC/NFS: make rpc pipe upcall generic 2011-10-18 09:08:12 -07:00
inode.c nfs: when attempting to open a directory, fall back on normal lookup (try #5) 2011-11-04 16:39:04 -04:00
internal.h NFS: Get rid of nfs_restart_rpc() 2011-10-19 13:58:30 -07:00
iostat.h
Kconfig pnfs: Automatically select blocks & objects layouts 2011-08-11 17:51:27 -07:00
Makefile pnfsblock: add blocklayout Kconfig option, Makefile, and stubs 2011-07-31 12:18:15 -04:00
mount_clnt.c
namespace.c NFS: Add SECINFO_NO_NAME procedure 2011-07-12 13:40:27 -04:00
nfs2xdr.c
nfs3acl.c switch posix_acl_create() to umode_t * 2011-08-01 02:09:42 -04:00
nfs3proc.c nfs: when attempting to open a directory, fall back on normal lookup (try #5) 2011-11-04 16:39:04 -04:00
nfs3xdr.c NFS: Fix "kernel BUG at fs/nfs/nfs3xdr.c:1338!" 2011-01-25 15:24:47 -05:00
nfs4_fs.h Merge branch 'for-3.2' of git://linux-nfs.org/~bfields/linux 2011-10-25 15:42:01 +02:00
nfs4filelayout.c NFS: Remove no-op less-than-zero checks on unsigned variables. 2011-10-31 11:52:47 -04:00
nfs4filelayout.h NFSv4.1: do not use deviceids after MDS clientid invalidation 2011-07-12 13:40:29 -04:00
nfs4filelayoutdev.c NFS: fix comment 2011-07-12 13:40:27 -04:00
nfs4namespace.c nfs: nfs_do_{ref,sub}mount() superblock argument is redundant 2011-03-16 16:48:06 -04:00
nfs4proc.c nfs: when attempting to open a directory, fall back on normal lookup (try #5) 2011-11-04 16:39:04 -04:00
nfs4renewd.c NFSv4: The NFSv4.0 client must send RENEW calls if it holds a delegation 2011-08-24 15:07:37 -04:00
nfs4state.c NFSv4: renewd needs to be able to handle the NFS4ERR_CB_PATH_DOWN error 2011-08-24 15:07:37 -04:00
nfs4xdr.c NFS: Clean up nfs4_xdr_dec_secinfo() 2011-10-31 11:52:47 -04:00
nfsroot.c NFS: Revert NFSROOT default mount options 2011-05-27 17:42:47 -04:00
pagelist.c NFS: Fix documenting comment for nfs_create_request() 2011-10-31 11:52:47 -04:00
pnfs_dev.c NFSv4.1: do not use deviceids after MDS clientid invalidation 2011-07-12 13:40:29 -04:00
pnfs.c nfs4: serialize layoutcommit 2011-10-31 11:51:28 -04:00
pnfs.h pnfs: recoalesce when ld read pagelist fails 2011-10-18 09:08:14 -07:00
proc.c nfs: when attempting to open a directory, fall back on normal lookup (try #5) 2011-11-04 16:39:04 -04:00
read.c NFS: Get rid of the nfs_rdata_mempool 2011-10-19 13:58:38 -07:00
super.c nfs/super.c: local functions should be static 2011-10-18 09:08:15 -07:00
symlink.c
sysctl.c
unlink.c NFS: Get rid of nfs_restart_rpc() 2011-10-19 13:58:30 -07:00
write.c nfs: Remove unused variable from write.c 2011-11-02 23:50:24 -04:00