alistair23-linux/fs/nfs
Chuck Lever 896526174c NFS: Introduce "migration" mount option
Currently, the Linux client uses a unique nfs_client_id4.id string
when identifying itself to distinct NFS servers.

To support transparent state migration, the Linux client will have to
use the same nfs_client_id4 string for all servers it communicates
with (also known as the "uniform client string" approach).  Otherwise
NFS servers can not recognize that open and lock state need to be
merged after a file system transition.

Unfortunately, there are some NFSv4.0 servers currently in the field
that do not tolerate the uniform client string approach.

Thus, by default, our NFSv4.0 mounts will continue to use the current
approach, and we introduce a mount option that switches them to use
the uniform model.  Client administrators must identify which servers
can be mounted with this option.  Eventually most NFSv4.0 servers will
be able to handle the uniform approach, and we can change the default.

The first mount of a server controls the behavior for all subsequent
mounts for the lifetime of that set of mounts of that server.  After
the last mount of that server is gone, the client erases the data
structure that tracks the lease.  A subsequent lease may then honor
a different "migration" setting.

This patch adds only the infrastructure for parsing the new mount
option.  Support for uniform client strings is added in a subsequent
patch.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
2012-10-01 15:33:33 -07:00
..
blocklayout NFSv4.1: Replace get_device_info() with filelayout_get_device_info() 2012-09-28 16:03:08 -04:00
objlayout pnfs-obj: Better IO pattern in case of unaligned offset 2012-08-02 17:42:51 -04:00
cache_lib.c
cache_lib.h
callback.c NFS: add debug messages to callback down function 2012-10-01 15:26:06 -07:00
callback.h NFS: make nfs_callback_tcpport6 per network context 2012-10-01 15:25:51 -07:00
callback_proc.c NFSv4.1: Clean up the removal of pnfs_layout_hdr from the server list 2012-09-28 16:03:14 -04:00
callback_xdr.c SUNRPC: service request network namespace helper introduced 2012-07-27 16:49:21 -04:00
client.c NFS: Introduce "migration" mount option 2012-10-01 15:33:33 -07:00
delegation.c
delegation.h NFS: Convert v4 into a module 2012-07-30 19:06:52 -04:00
dir.c NFSv4: Add ACCESS operation to OPEN compound 2012-10-01 15:20:11 -07:00
direct.c NFS: Convert nfs_get_lock_context to return an ERR_PTR on failure 2012-09-28 16:03:03 -04:00
dns_resolve.c NFS: Convert v4 into a module 2012-07-30 19:06:52 -04:00
dns_resolve.h
file.c NFS: Write the entire file if a server reboot occurs during fsync() 2012-09-28 16:03:05 -04:00
fscache-index.c
fscache.c
fscache.h
getroot.c
idmap.c NFS: Use kzalloc() instead of kmalloc() in the idmapper 2012-10-01 15:18:44 -07:00
inode.c NFS: Clean up helper function nfs4_select_rw_stateid() 2012-09-28 16:03:04 -04:00
internal.h NFS: nfs_parsed_mount_options can use unsigned int 2012-10-01 15:31:41 -07:00
iostat.h
Kconfig Merge branch 'akpm' (Andrew's patch-bomb) 2012-07-31 19:25:39 -07:00
Makefile NFS: Fix a regression when loading the NFS v4 module 2012-08-16 16:15:49 -04:00
mount_clnt.c
namespace.c NFS: Convert v4 into a module 2012-07-30 19:06:52 -04:00
netns.h NFS: callback per-net usage counting introduced 2012-10-01 15:25:57 -07:00
nfs.h NFS: Convert v4 into a module 2012-07-30 19:06:52 -04:00
nfs2super.c NFS: Convert v2 into a module 2012-07-30 19:06:41 -04:00
nfs2xdr.c
nfs3acl.c
nfs3client.c NFS: Only initialize the ACL client in the v3 case 2012-07-30 19:05:54 -04:00
nfs3proc.c NFS: Fix the initialisation of the readdir 'cookieverf' array 2012-09-04 14:52:42 -04:00
nfs3super.c NFS: Convert v3 into a module 2012-07-30 19:06:46 -04:00
nfs3xdr.c
nfs4_fs.h NFSv4.1: Simplify the pNFS return-on-close code 2012-09-28 16:03:12 -04:00
nfs4client.c NFS: move per-net callback thread initialization to nfs_callback_up_net() 2012-10-01 15:25:24 -07:00
nfs4file.c NFS: Write the entire file if a server reboot occurs during fsync() 2012-09-28 16:03:05 -04:00
nfs4filelayout.c NFSv4.1: Get rid of the NFS_LAYOUT_DESTROYED state 2012-09-28 16:03:16 -04:00
nfs4filelayout.h NFSv4.1: Get rid of pNFS layout state "NFS_LAYOUT_INVALID" 2012-09-28 16:03:12 -04:00
nfs4filelayoutdev.c NFSv4.1: pNFS data servers may be temporarily offline 2012-09-28 16:03:09 -04:00
nfs4getroot.c
nfs4namespace.c SUNRPC: Introduce rpc_clone_client_set_auth() 2012-10-01 15:33:33 -07:00
nfs4proc.c NFSv4: Add ACCESS operation to OPEN compound 2012-10-01 15:20:11 -07:00
nfs4renewd.c
nfs4state.c NFS: Slow down state manager after an unhandled error 2012-10-01 15:31:51 -07:00
nfs4super.c NFS: Fix a regression when loading the NFS v4 module 2012-08-16 16:15:49 -04:00
nfs4sysctl.c
nfs4xdr.c NFSv4: Add ACCESS operation to OPEN compound 2012-10-01 15:20:11 -07:00
nfsroot.c
pagelist.c NFS: Clean up helper function nfs4_select_rw_stateid() 2012-09-28 16:03:04 -04:00
pnfs.c NFSv4.1: _pnfs_return_layout() shouldn't invalidate the layout on failure 2012-09-28 16:03:18 -04:00
pnfs.h NFSv4.1: Remove the NFS_LAYOUT_RETURNED state 2012-09-28 16:03:17 -04:00
pnfs_dev.c NFSv4.1: pNFS data servers may be temporarily offline 2012-09-28 16:03:09 -04:00
proc.c NFS: Only initialize the ACL client in the v3 case 2012-07-30 19:05:54 -04:00
read.c Merge branch 'akpm' (Andrew's patch-bomb) 2012-07-31 19:25:39 -07:00
super.c NFS: Introduce "migration" mount option 2012-10-01 15:33:33 -07:00
symlink.c
sysctl.c
unlink.c
write.c NFS: Fix fdatasync/fsync() when confronted with a server reboot 2012-09-28 16:03:05 -04:00