mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-11 04:18:39 +08:00
lockd: remove SIGKILL handling
lockd allows SIGKILL and responds by dropping all locks and restarting the grace period. This functionality has been present since 2.1.32 when lockd was added to Linux. This functionality is undocumented and most likely added as a useful debug aid. When there is a need to drop locks, the better approach is to use /proc/fs/nfsd/unlock_*. This patch removes SIGKILL handling as part of preparation for removing all signal handling from sunrpc service threads. Signed-off-by: NeilBrown <neilb@suse.de> Reviewed-by: Jeff Layton <jlayton@kernel.org> Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
This commit is contained in:
parent
de8d38cf44
commit
8db14cad28
@ -45,7 +45,6 @@
|
|||||||
|
|
||||||
#define NLMDBG_FACILITY NLMDBG_SVC
|
#define NLMDBG_FACILITY NLMDBG_SVC
|
||||||
#define LOCKD_BUFSIZE (1024 + NLMSVC_XDRSIZE)
|
#define LOCKD_BUFSIZE (1024 + NLMSVC_XDRSIZE)
|
||||||
#define ALLOWED_SIGS (sigmask(SIGKILL))
|
|
||||||
|
|
||||||
static struct svc_program nlmsvc_program;
|
static struct svc_program nlmsvc_program;
|
||||||
|
|
||||||
@ -111,19 +110,6 @@ static void set_grace_period(struct net *net)
|
|||||||
schedule_delayed_work(&ln->grace_period_end, grace_period);
|
schedule_delayed_work(&ln->grace_period_end, grace_period);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void restart_grace(void)
|
|
||||||
{
|
|
||||||
if (nlmsvc_ops) {
|
|
||||||
struct net *net = &init_net;
|
|
||||||
struct lockd_net *ln = net_generic(net, lockd_net_id);
|
|
||||||
|
|
||||||
cancel_delayed_work_sync(&ln->grace_period_end);
|
|
||||||
locks_end_grace(&ln->lockd_manager);
|
|
||||||
nlmsvc_invalidate_all();
|
|
||||||
set_grace_period(net);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This is the lockd kernel thread
|
* This is the lockd kernel thread
|
||||||
*/
|
*/
|
||||||
@ -138,9 +124,6 @@ lockd(void *vrqstp)
|
|||||||
/* try_to_freeze() is called from svc_recv() */
|
/* try_to_freeze() is called from svc_recv() */
|
||||||
set_freezable();
|
set_freezable();
|
||||||
|
|
||||||
/* Allow SIGKILL to tell lockd to drop all of its locks */
|
|
||||||
allow_signal(SIGKILL);
|
|
||||||
|
|
||||||
dprintk("NFS locking service started (ver " LOCKD_VERSION ").\n");
|
dprintk("NFS locking service started (ver " LOCKD_VERSION ").\n");
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -154,12 +137,6 @@ lockd(void *vrqstp)
|
|||||||
/* update sv_maxconn if it has changed */
|
/* update sv_maxconn if it has changed */
|
||||||
rqstp->rq_server->sv_maxconn = nlm_max_connections;
|
rqstp->rq_server->sv_maxconn = nlm_max_connections;
|
||||||
|
|
||||||
if (signalled()) {
|
|
||||||
flush_signals(current);
|
|
||||||
restart_grace();
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
timeout = nlmsvc_retry_blocked();
|
timeout = nlmsvc_retry_blocked();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -174,7 +151,6 @@ lockd(void *vrqstp)
|
|||||||
|
|
||||||
svc_process(rqstp);
|
svc_process(rqstp);
|
||||||
}
|
}
|
||||||
flush_signals(current);
|
|
||||||
if (nlmsvc_ops)
|
if (nlmsvc_ops)
|
||||||
nlmsvc_invalidate_all();
|
nlmsvc_invalidate_all();
|
||||||
nlm_shutdown_hosts();
|
nlm_shutdown_hosts();
|
||||||
|
Loading…
Reference in New Issue
Block a user