patch-2.3.99-pre4 linux/fs/lockd/mon.c
Next file: linux/fs/lockd/svc4proc.c
Previous file: linux/fs/lockd/host.c
Back to the patch index
Back to the overall index
- Lines: 91
- Date:
Sun Apr 2 15:31:32 2000
- Orig file:
v2.3.99-pre3/linux/fs/lockd/mon.c
- Orig date:
Mon Mar 27 08:08:29 2000
diff -u --recursive --new-file v2.3.99-pre3/linux/fs/lockd/mon.c linux/fs/lockd/mon.c
@@ -30,14 +30,12 @@
* Common procedure for SM_MON/SM_UNMON calls
*/
static int
-nsm_mon_unmon(struct nlm_host *host, char *what, u32 proc)
+nsm_mon_unmon(struct nlm_host *host, u32 proc, struct nsm_res *res)
{
struct rpc_clnt *clnt;
int status;
struct nsm_args args;
- struct nsm_res res;
- dprintk("lockd: nsm_%s(%s)\n", what, host->h_name);
status = -EACCES;
clnt = nsm_create();
if (!clnt)
@@ -47,23 +45,15 @@
args.prog = NLM_PROGRAM;
args.vers = 1;
args.proc = NLMPROC_NSM_NOTIFY;
+ memset(res, 0, sizeof(*res));
- status = rpc_call(clnt, proc, &args, &res, 0);
- if (status < 0) {
+ status = rpc_call(clnt, proc, &args, res, 0);
+ if (status < 0)
printk(KERN_DEBUG "nsm_mon_unmon: rpc failed, status=%d\n",
status);
- goto out;
- }
-
- status = -EACCES;
- if (res.status != 0) {
- printk(KERN_NOTICE "lockd: cannot %s %s\n", what, host->h_name);
- goto out;
- }
-
- nsm_local_state = res.state;
- status = 0;
-out:
+ else
+ status = 0;
+ out:
return status;
}
@@ -73,10 +63,16 @@
int
nsm_monitor(struct nlm_host *host)
{
+ struct nsm_res res;
int status;
- status = nsm_mon_unmon(host, "monitor", SM_MON);
- if (status >= 0)
+ dprintk("lockd: nsm_monitor(%s)\n", host->h_name);
+
+ status = nsm_mon_unmon(host, SM_MON, &res);
+
+ if (status < 0 || res.status != 0)
+ printk(KERN_NOTICE "lockd: cannot monitor %s\n", host->h_name);
+ else
host->h_monitored = 1;
return status;
}
@@ -87,9 +83,15 @@
int
nsm_unmonitor(struct nlm_host *host)
{
+ struct nsm_res res;
int status;
- if ((status = nsm_mon_unmon(host, "unmonitor", SM_UNMON)) >= 0)
+ dprintk("lockd: nsm_unmonitor(%s)\n", host->h_name);
+
+ status = nsm_mon_unmon(host, SM_UNMON, &res);
+ if (status < 0)
+ printk(KERN_NOTICE "lockd: cannot unmonitor %s\n", host->h_name);
+ else
host->h_monitored = 0;
return status;
}
@@ -187,7 +189,7 @@
static int
xdr_decode_stat(struct rpc_rqst *rqstp, u32 *p, struct nsm_res *resp)
{
- resp->status = ntohl(*p++);
+ resp->state = ntohl(*p++);
return 0;
}
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)