[Cluster-devel] [PATCH 0/3] NLM lock failover
Wendy Cheng
wcheng at redhat.com
Tue Aug 1 01:55:41 UTC 2006
For background info, please check out:
o http://www.redhat.com/archives/linux-cluster/2006-June/msg00050.html
for interface discussion.
o https://www.redhat.com/archives/cluster-devel/2006-June/msg00231.html
for first drafted code review.
Note and Restrictions:
o With nfs-utils-1.0.8-rc4 and nfs-utils-lib-1.0.8, the tests went
surprisingly well, particularly the ha-callout feature. *No* change
is made into these two user mode utility packages.
o The nfs-utils config flag RESTRICTED_STATD must be off for NLM
failover to be functional correctly.
o The third parameter passed to rpc.statd ha-callout program is no
longer be the system_utsname.nodename (set by sethostname()). It
is, instead, the specific IP interface where the server receives
the client's request.
o The patches are for NFS v2/v3 only. However, we do leave room for
future NFS V4 expansion. For example, echoing client_ip at server_ip
into /proc/fs/nfsd/nlm_unlock could be used to drop the V4 locks.
o IP V6 modification is not included in this patch set. If required,
it will be submitted as another patch set.
PATCH 1/3
---------
Add a new admin interface into current nfsd procfs filesystem to trigger
NLM lock releasing logic. The command is invoked by echoing the server
IP V4 address (in standard dot notation) into /proc/fs/nfsd/nlm_unlock
file as:
shell> cd /prod/fs/nfsd
shell> echo 10.10.1.1 > nlm_unlock
PATCH 2/3
---------
Add take-over server counter-part command into nfsd procfs interface to
allow selectively setting of per (virtual) ip (lockd) grace period. The
grace period setting follows current system-wide grace period rule and
default. It is also invoked by echoing the server IP V4 address (in dot
notation) into /proc/fs/nfsd/nlm_set_ip_grace file:
shell> cd /proc/fs/nfsd
shell> echo 10.10.1.1 > nlm_set_ip_grace
PATCH 3/3
---------
This kernel patch adds a new field into struct nlm_host that holds the
server IP address. Upon SM_MON and SM_UNMON procedure calls, the IP (in
standard V4 dot notation) is placed as the "my_name" string and passed
to local statd daemon. This enables ha-callout program ("man rpc.statd"
for details) to receive the IP address of the server that has received
the client's request. Before this change, my_name string is universally
set to system_utsname.nodename.
The user mode HA implementation is expected to:
1. Specify a user mode ha-calloupt program (rpc.statd -H) for receiving
client monitored states.
2. Based on info passed by ha-callout, individual state-directory should
be created and can be read from take-over server.
3. Upon failover, on take-over server, send out notification to nfs
client via (rpc.statd -n server_ip -P individual_state_directory -N)
command.
-- Wendy
More information about the Cluster-devel
mailing list