Trond Myklebust
2a4c8994ee
NFSv4.1: Fix umount when filelayout DS is also the MDS
...
Currently there is a 'chicken and egg' issue when the DS is also the mounted
MDS. The nfs_match_client() reference from nfs4_set_ds_client bumps the
cl_count, the nfs_client is not freed at umount, and nfs4_deviceid_purge_client
is not called to dereference the MDS usage of a deviceid which holds a
reference to the DS nfs_client. The result is the umount program returns,
but the nfs_client is not freed, and the cl_session hearbeat continues.
The MDS (and all other nfs mounts) lose their last nfs_client reference in
nfs_free_server when the last nfs_server (fsid) is umounted.
The file layout DS lose their last nfs_client reference in destroy_ds
when the last deviceid referencing the data server is put and destroy_ds is
called. This is triggered by a call to nfs4_deviceid_purge_client which
removes references to a pNFS deviceid used by an MDS mount.
The fix is to track how many pnfs enabled filesystems are mounted from
this server, and then to purge the device id cache once that count reaches
zero.
Reported-by: Jorge Mora <Jorge.Mora@netapp.com>
Reported-by: Andy Adamson <andros@netapp.com>
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
2012-06-18 08:45:16 -04:00
..
blocklayout
NFS: Use proper naming conventions for the nfs_client.net field
2012-05-22 16:45:44 -04:00
objlayout
NFS: Fix sparse warnings
2012-05-04 14:59:51 -04:00
cache_lib.c
cache_lib.h
callback.c
NFS: hard-code init_net for NFS callback transports
2012-06-14 13:53:43 -04:00
callback.h
NFSv4.1: Convert slotid from u8 to u32
2012-02-15 00:19:43 -05:00
callback_proc.c
NFSv4: Further clean-ups of delegation stateid validation
2012-03-06 10:32:44 -05:00
callback_xdr.c
NFS: add an endian notation for sparse
2012-06-12 09:54:40 -04:00
client.c
NFSv4.1: Fix umount when filelayout DS is also the MDS
2012-06-18 08:45:16 -04:00
delegation.c
NFSv4: nfs_client_return_marked_delegations can't flush data
2012-05-08 12:53:21 -04:00
delegation.h
NFS: nfs_inode_return_delegation() should always flush dirty data
2012-05-08 12:53:21 -04:00
dir.c
nfs: don't open in ->d_revalidate
2012-06-01 12:12:02 -04:00
direct.c
NFS client bugfixes for Linux 3.5
2012-06-15 17:37:23 -07:00
dns_resolve.c
NFS: Fix a number of sparse warnings
2012-03-11 15:14:16 -04:00
dns_resolve.h
file.c
nfs: don't open in ->d_revalidate
2012-06-01 12:12:02 -04:00
fscache-index.c
fscache.c
NFS: Don't pass mount data to nfs_fscache_get_super_cookie()
2012-05-14 17:30:26 -07:00
fscache.h
NFS: Fix a compile issue when CONFIG_NFS_FSCACHE was undefined
2012-05-16 10:24:20 -07:00
getroot.c
NFS: Create a single nfs_get_root()
2012-05-14 17:30:26 -07:00
idmap.c
NFS: Add memory barriers to the nfs_client->cl_cons_state initialisation
2012-05-23 15:24:59 -04:00
inode.c
NFS: Ensure that setattr and getattr wait for O_DIRECT write completion
2012-05-31 11:41:36 -07:00
internal.h
NFS: Ensure that setattr and getattr wait for O_DIRECT write completion
2012-05-31 11:41:36 -07:00
iostat.h
Kconfig
NFS: Turn v3 on by default
2012-05-14 17:42:22 -07:00
Makefile
NFS: Make v2 configurable
2012-05-14 17:42:22 -07:00
mount_clnt.c
SUNRPC/NFS: Add Kbuild dependencies for NFS_DEBUG/RPC_DEBUG
2012-03-20 13:08:26 -04:00
namespace.c
NFS: Remove extra rpc_clnt argument to proc_lookup
2012-04-27 14:10:39 -04:00
netns.h
NFS: Always use the same SETCLIENTID boot verifier
2012-05-22 16:45:46 -04:00
nfs2xdr.c
NFS: Create an NFS v3 stat_to_errno()
2012-05-14 17:42:21 -07:00
nfs3acl.c
NFS: Fix a number of sparse warnings
2012-03-11 15:14:16 -04:00
nfs3proc.c
NFS client updates for Linux 3.5
2012-05-29 10:43:51 -07:00
nfs3xdr.c
NFS: Create an NFS v3 stat_to_errno()
2012-05-14 17:42:21 -07:00
nfs4_fs.h
NFSv4: Fix an Oops in the open recovery code
2012-06-05 10:00:14 -04:00
nfs4filelayout.c
NFSv4.1: Handle other occurrences of NFS4ERR_CONN_NOT_BOUND_TO_SESSION
2012-05-27 14:33:07 -04:00
nfs4filelayout.h
NFSv4.1 resend LAYOUTGET on data server invalid layout errors
2012-05-19 17:55:33 -04:00
nfs4filelayoutdev.c
NFSv4.1: Fix session initialisation races
2012-05-23 15:20:57 -04:00
nfs4namespace.c
Merge branch 'bugfixes' into nfs-for-next
2012-05-21 10:12:39 -04:00
nfs4proc.c
NFSv4 do not send an empty SETATTR compound
2012-06-11 17:25:53 -04:00
nfs4renewd.c
NFS: Add NFSDBG_STATE
2012-05-22 16:45:42 -04:00
nfs4state.c
NFSv4.1: Ensure we clear session state flags after a session creation
2012-06-05 10:22:14 -04:00
nfs4xdr.c
NFSv4: Fix up decode_attr_mdsthreshold
2012-06-05 10:00:47 -04:00
nfsroot.c
SUNRPC/NFS: Add Kbuild dependencies for NFS_DEBUG/RPC_DEBUG
2012-03-20 13:08:26 -04:00
pagelist.c
NFS: Clean up - Rename nfs_unlock_request and nfs_unlock_request_dont_release
2012-05-09 15:17:43 -04:00
pnfs.c
NFSv4.1: Fix umount when filelayout DS is also the MDS
2012-06-18 08:45:16 -04:00
pnfs.h
NFS4: Fix open bug when pnfs module blacklisted
2012-06-07 13:44:24 -04:00
pnfs_dev.c
NFS: Fix more NFS debug related build warnings
2012-03-21 09:31:44 -04:00
proc.c
NFSv2: EOF incorrectly set on short read
2012-06-11 17:25:00 -04:00
read.c
NFSv4.1 add nfs_inode book keeping for mdsthreshold
2012-05-24 16:15:48 -04:00
super.c
NFS: Use the NFS_DEFAULT_VERSION for v2 and v3 mounts
2012-06-09 14:38:59 -04:00
symlink.c
sysctl.c
NFS: Fall back on old idmapper if request_key() fails
2012-02-06 18:48:01 -05:00
unlink.c
NFS: Remove nfs4_setup_sequence from generic rename code
2012-03-21 09:31:46 -04:00
write.c
NFS: Fix a commit bug
2012-06-05 18:38:47 -04:00