linux/fs/nfs
Trond Myklebust 6f2e64d3e1 NFSv4: Make the NFS state model work with the nosharedcache mount option
Consider the case where the user has mounted the remote filesystem
server:/foo on the two local directories /bar and /baz using the
nosharedcache mount option. The files /bar/file and /baz/file are
represented by different inodes in the local namespace, but refer to the
same file /foo/file on the server.
Consider the case where a process opens both /bar/file and /baz/file, then
closes /bar/file: because the nfs4_state is not shared between /bar/file
and /baz/file, the kernel will see that the nfs4_state for /bar/file is no
longer referenced, so it will send off a CLOSE rpc call. Unless the
open_owners differ, then that CLOSE call will invalidate the open state on
/baz/file too.

Conclusion: we cannot share open state owners between two different
non-shared mount instances of the same filesystem.

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
2007-07-10 23:40:48 -04:00
..
Makefile NFS: Remake nfsroot_mount as a permanent part of NFS client 2007-07-10 23:40:46 -04:00
callback.c
callback.h NFS: Fix more sparse warnings 2007-05-14 19:33:46 -04:00
callback_proc.c
callback_xdr.c
client.c NFSv4: Reduce the chances of an open_owner identifier collision 2007-07-10 23:40:39 -04:00
delegation.c NFSv4: Defer inode revalidation when setting up a delegation 2007-07-10 23:40:41 -04:00
delegation.h NFSv4: Use RCU to protect delegations 2007-07-10 23:40:41 -04:00
dir.c NFS: Fix an Oops in the nfs_access_cache_shrinker() 2007-07-10 23:40:25 -04:00
direct.c NFS: Replace vfsmount and dentry in nfs_open_context with struct path 2007-07-10 23:40:23 -04:00
file.c sendfile: convert nfs to using splice_read() 2007-07-10 08:04:14 +02:00
getroot.c NFS: Kill the obsolete NFS_PARANOIA 2007-05-09 17:58:01 -04:00
idmap.c NFS: use __set_current_state() 2007-05-09 17:58:01 -04:00
inode.c NFSv4: Defer inode revalidation when setting up a delegation 2007-07-10 23:40:41 -04:00
internal.h NFS: Clean-up: use correct type when converting NFS blocks to local blocks 2007-07-10 23:40:44 -04:00
iostat.h
mount_clnt.c NFS: Improve debugging output in NFS in-kernel mount client 2007-07-10 23:40:47 -04:00
namespace.c
nfs2xdr.c SUNRPC: Remove the tk_auth macro... 2007-07-10 23:40:37 -04:00
nfs3acl.c
nfs3proc.c NFS: nfs3_proc_create() should use nfs_post_op_update_inode() 2007-07-10 23:40:25 -04:00
nfs3xdr.c SUNRPC: Remove the tk_auth macro... 2007-07-10 23:40:37 -04:00
nfs4_fs.h NFSv4: Make the NFS state model work with the nosharedcache mount option 2007-07-10 23:40:48 -04:00
nfs4namespace.c
nfs4proc.c NFSv4: Fix up stateid locking... 2007-07-10 23:40:43 -04:00
nfs4renewd.c header cleaning: don't include smp_lock.h when not used 2007-05-08 11:15:07 -07:00
nfs4state.c NFSv4: Make the NFS state model work with the nosharedcache mount option 2007-07-10 23:40:48 -04:00
nfs4xdr.c NFSv4: Reduce the chances of an open_owner identifier collision 2007-07-10 23:40:39 -04:00
nfsroot.c NFS: Remake nfsroot_mount as a permanent part of NFS client 2007-07-10 23:40:46 -04:00
pagelist.c NFS: Replace NFS_I(inode)->req_lock with inode->i_lock 2007-07-10 23:40:38 -04:00
proc.c header cleaning: don't include smp_lock.h when not used 2007-05-08 11:15:07 -07:00
read.c NFS: Replace vfsmount and dentry in nfs_open_context with struct path 2007-07-10 23:40:23 -04:00
super.c NFS: Error when mounting the same filesystem with different options 2007-07-10 23:40:48 -04:00
symlink.c header cleaning: don't include smp_lock.h when not used 2007-05-08 11:15:07 -07:00
sysctl.c
unlink.c
write.c NFS: Replace NFS_I(inode)->req_lock with inode->i_lock 2007-07-10 23:40:38 -04:00