[Cluster-devel] Re: [NFS] [PATCH 3/4 Revised] NLM failover - statd changes

Neil Brown neilb at suse.de
Tue Sep 26 00:54:29 UTC 2006


On Thursday September 14, wcheng at redhat.com wrote:
> This kernel patch should be paired with nfs-utils user mode changes (in 
> patch 4-4 based on nfs-utils-1.0.8-rc4) that is optional. If changes 
> made in patch 4-4 is not presented in nfs-utils, the rpc.statd will 
> ignore whatever this kernel patch does.
> 
> The changes record the ip interface that accepts the lock requests and 
> passes the correct "my_name" (in standard IPV4 dot notation) to user 
> mode statd (instead of system_utsname.nodename). This enables rpc.statd 
> to add the correct taken-over IPv4 address into the 3rd parameter of 
> ha_callout program. Current nfs-utils always resets "my_name" into 
> loopback address (127.0.0.1), regardless the statement made in rpc.statd 
> man page. Check out "man rpc.statd" for details.
> 
> Signed-off-by: S. Wendy Cheng <wcheng at redhat.com>
> Signed-off-by: Lon Hohberger  <lhh at redhat.com>
> 
>  fs/lockd/host.c                |    4 ++--
>  fs/lockd/mon.c                 |   21 +++++++++++++++++----
>  fs/lockd/svc4proc.c            |    8 +++++++-
>  fs/lockd/svcproc.c             |    2 +-
>  include/linux/lockd/lockd.h    |    5 +++--
>  include/linux/lockd/sm_inter.h |    1 +
>  include/linux/sunrpc/svc.h     |    5 +++--
>  net/sunrpc/svcsock.c           |    5 +++++
>  8 files changed, 39 insertions(+), 12 deletions(-)
> 
> 
> --- linux-2/include/linux/sunrpc/svc.h	2006-09-11 16:52:34.000000000 -0400
> +++ linux-3/include/linux/sunrpc/svc.h	2006-09-13 14:07:32.000000000 -0400
> @@ -102,6 +102,7 @@ static inline void svc_putu32(struct kve
>  	iov->iov_len += sizeof(u32);
>  }
>  
> +typedef __u32  svc_addr_t;
>  	
>  /*
>   * The context of a single thread, including the request currently being
> @@ -138,8 +139,8 @@ struct svc_rqst {
>  	unsigned short
>  				rq_secure  : 1;	/* secure port */
>  
> -
> -	__u32			rq_daddr;	/* dest addr of request - reply from here */
> +	svc_addr_t		rq_daddr;	/* dest addr of request 
> +						   - reply from here */
>  
>  	void *			rq_argp;	/* decoded arguments */
>  	void *			rq_resp;	/* xdr'd results */
> --- linux-2/include/linux/lockd/lockd.h	2006-09-13 22:48:00.000000000 -0400
> +++ linux-3/include/linux/lockd/lockd.h	2006-09-13 22:51:41.000000000 -0400
> @@ -39,12 +39,13 @@
>  struct nlm_host {
>  	struct nlm_host *	h_next;		/* linked list (hash table) */
>  	struct sockaddr_in	h_addr;		/* peer address */
> +	svc_addr_t		h_server;	/* server ip for NLM failover */

Comment should say 'or 0 for client'.

>  	struct rpc_clnt	*	h_rpcclnt;	/* RPC client to talk to peer */
>  	char			h_name[20];	/* remote hostname */
>  	u32			h_version;	/* interface version */
>  	unsigned short		h_proto;	/* transport proto */
>  	unsigned short		h_reclaiming : 1,
> -				h_server     : 1, /* server side, not client side */
> +				h_notused    : 1, 

Just discard this, no need to rename it to 'h_notused'.

>  
> +#if 0
> +	if (argp->reclaim) {
> +		printk("nlm4svc_proc_lock lock reclaim received\n");
> +	}
> +#endif

Can this be removed?


So: mostly looks OK, but will need quite a bit of reworking do to
recent changes in lockd code.  So if you can get me a version that
applies to latest -mm, I'll take it from there.

Thanks,
NeilBrown




More information about the Cluster-devel mailing list