linux/fs/nfsd
Wendy Cheng 4373ea84c8 lockd: unlock lockd locks associated with a given server ip
For high-availability NFS service, we generally need to be able to drop
file locks held on the exported filesystem before moving clients to a
new server.  Currently the only way to do that is by shutting down lockd
entirely, which is often undesireable (for example, if you want to
continue exporting other filesystems).

This patch allows the administrator to release all locks held by clients
accessing the client through a given server ip address, by echoing that
address to a new file, /proc/fs/nfsd/unlock_ip, as in:

shell> echo 10.1.1.2 > /proc/fs/nfsd/unlock_ip

The expected sequence of events can be:
1. Tear down the IP address
2. Unexport the path
3. Write IP to /proc/fs/nfsd/unlock_ip to unlock files
4. Signal peer to begin take-over.

For now we only support IPv4 addresses and NFSv2/v3 (NFSv4 locks are not
affected).

Also, if unmounting the filesystem is required, we assume at step 3 that
clients using the given server ip are the only clients holding locks on
the given filesystem; otherwise, an additional patch is required to
allow revoking all locks held by lockd on a given filesystem.

Signed-off-by: S. Wendy Cheng <wcheng@redhat.com>
Cc: Lon Hohberger  <lhh@redhat.com>
Cc: Christoph Hellwig <hch@lst.de>
Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>

 fs/lockd/svcsubs.c          |   66 +++++++++++++++++++++++++++++++++++++++-----
 fs/nfsd/nfsctl.c            |   65 +++++++++++++++++++++++++++++++++++++++++++
 include/linux/lockd/lockd.h |    7 ++++
 3 files changed, 131 insertions(+), 7 deletions(-)
2008-04-25 13:00:10 -04:00
..
auth.c nfsd: fix sparse warnings 2008-04-23 16:13:39 -04:00
auth.h nfsd: minor fs/nfsd/auth.h cleanup 2008-02-01 16:42:05 -05:00
export.c IPv6 support for NFS server export caches 2008-04-23 16:13:36 -04:00
lockd.c knfsd: lockd: nfsd4: use same grace period for lockd and nfsd4 2007-07-17 10:23:07 -07:00
Makefile knfsd: trivial makefile cleanup 2007-05-09 12:30:54 -07:00
nfs2acl.c nfsd: Fix inconsistent assignment 2008-02-01 16:42:01 -05:00
nfs3acl.c knfsd: fix spurious EINVAL errors on first access of new filesystem 2007-11-12 14:28:08 -08:00
nfs3proc.c Use struct path in struct svc_export 2008-02-14 21:17:08 -08:00
nfs3xdr.c Use struct path in struct svc_export 2008-02-14 21:17:08 -08:00
nfs4acl.c knfsd: nfsd4: fix handling of acl errrors 2007-07-17 10:23:07 -07:00
nfs4callback.c nfsd: use static memory for callback program and stats 2008-04-23 16:13:42 -04:00
nfs4idmap.c nfsd: fix sparse warnings 2008-04-23 16:13:39 -04:00
nfs4proc.c [PATCH] r/o bind mounts: elevate write count for xattr_permission() callers 2008-04-19 00:29:15 -04:00
nfs4recover.c [PATCH] r/o bind mounts: get callers of vfs_mknod/create/mkdir() 2008-04-19 00:25:34 -04:00
nfs4state.c nfsd: initialize lease type in nfs4_open_delegation() 2008-04-23 16:13:40 -04:00
nfs4xdr.c nfsd: clarify readdir/mountpoint-crossing code 2008-04-23 16:13:38 -04:00
nfscache.c nfsd: fail module init on reply cache init failure 2008-02-01 16:42:04 -05:00
nfsctl.c lockd: unlock lockd locks associated with a given server ip 2008-04-25 13:00:10 -04:00
nfsfh.c nfsd: move most of fh_verify to separate function 2008-04-23 16:13:41 -04:00
nfsproc.c Use struct path in struct svc_export 2008-02-14 21:17:08 -08:00
nfssvc.c NFSD: Remove NFSD_TCP kernel build option 2008-04-23 16:13:38 -04:00
nfsxdr.c Use struct path in struct svc_export 2008-02-14 21:17:08 -08:00
stats.c [PATCH] knfsd: nfsd4: add per-operation server stats 2006-07-10 13:24:27 -07:00
vfs.c knfsd: clear both setuid and setgid whenever a chown is done 2008-04-23 16:13:43 -04:00