summaryrefslogtreecommitdiffstats
path: root/kernel/fs/lockd/svc.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/fs/lockd/svc.c')
-rw-r--r--kernel/fs/lockd/svc.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/kernel/fs/lockd/svc.c b/kernel/fs/lockd/svc.c
index 55505cbe1..5f31ebd96 100644
--- a/kernel/fs/lockd/svc.c
+++ b/kernel/fs/lockd/svc.c
@@ -322,6 +322,11 @@ out_rqst:
return error;
}
+static struct svc_serv_ops lockd_sv_ops = {
+ .svo_shutdown = svc_rpcb_cleanup,
+ .svo_enqueue_xprt = svc_xprt_do_enqueue,
+};
+
static struct svc_serv *lockd_create_svc(void)
{
struct svc_serv *serv;
@@ -350,7 +355,7 @@ static struct svc_serv *lockd_create_svc(void)
nlm_timeout = LOCKD_DFLT_TIMEO;
nlmsvc_timeout = nlm_timeout * HZ;
- serv = svc_create(&nlmsvc_program, LOCKD_BUFSIZE, svc_rpcb_cleanup);
+ serv = svc_create(&nlmsvc_program, LOCKD_BUFSIZE, &lockd_sv_ops);
if (!serv) {
printk(KERN_WARNING "lockd_up: create service failed\n");
return ERR_PTR(-ENOMEM);
@@ -586,7 +591,8 @@ static int lockd_init_net(struct net *net)
INIT_DELAYED_WORK(&ln->grace_period_end, grace_ender);
INIT_LIST_HEAD(&ln->lockd_manager.list);
- spin_lock_init(&ln->nsm_clnt_lock);
+ ln->lockd_manager.block_opens = false;
+ INIT_LIST_HEAD(&ln->nsm_handles);
return 0;
}