From mboxrd@z Thu Jan 1 00:00:00 1970 From: Wendy Cheng Date: Mon, 31 Jul 2006 21:55:41 -0400 Subject: [Cluster-devel] [PATCH 0/3] NLM lock failover In-Reply-To: <44A41246.2070106@redhat.com> References: <44A41246.2070106@redhat.com> Message-ID: <1154397341.3378.10.camel@localhost.localdomain> List-Id: To: cluster-devel.redhat.com MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit 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