lockd: refactor SM_MON my_id argument encoder
authorChuck Lever <chuck.lever@oracle.com>
Fri, 14 Mar 2008 18:25:46 +0000 (14:25 -0400)
committerTrond Myklebust <Trond.Myklebust@netapp.com>
Wed, 19 Mar 2008 22:01:01 +0000 (18:01 -0400)
Clean up: introduce a new XDR encoder specifically for the my_id
argument of SM_MON requests.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
fs/lockd/mon.c

index 87bd4e4d65dde74969285c54d0eff028705a66eb..06216d6715f7e1e3eef96657ec148be4ee9a75be 100644 (file)
@@ -183,6 +183,25 @@ static __be32 *xdr_encode_mon_name(__be32 *p, struct nsm_args *argp)
        return xdr_encode_nsm_string(p, name);
 }
 
+/*
+ * The "my_id" argument specifies the hostname and RPC procedure
+ * to be called when the status manager receives notification
+ * (via the SM_NOTIFY call) that the state of host "mon_name"
+ * has changed.
+ */
+static __be32 *xdr_encode_my_id(__be32 *p, struct nsm_args *argp)
+{
+       p = xdr_encode_nsm_string(p, utsname()->nodename);
+       if (!p)
+               return ERR_PTR(-EIO);
+
+       *p++ = htonl(argp->prog);
+       *p++ = htonl(argp->vers);
+       *p++ = htonl(argp->proc);
+
+       return p;
+}
+
 static __be32 *
 xdr_encode_common(struct rpc_rqst *rqstp, __be32 *p, struct nsm_args *argp)
 {