summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authorrwatson <rwatson@FreeBSD.org>2003-05-30 17:15:56 +0000
committerrwatson <rwatson@FreeBSD.org>2003-05-30 17:15:56 +0000
commitc264d8171dad13e2bbd26da5482a9e13a7d71f94 (patch)
tree436fbf6e532ab3c51f58ad2e8f9e810fef7ae3f0 /sys
parent8763b56373f7b5a7372b2568dbbb387b0c53ac2c (diff)
downloadFreeBSD-src-c264d8171dad13e2bbd26da5482a9e13a7d71f94.zip
FreeBSD-src-c264d8171dad13e2bbd26da5482a9e13a7d71f94.tar.gz
rpc.lockd stability workaround: remove PCATCH from the tsleep() in
nfs_lock.c. Right now, if we permit a signal to interrupt the sleep, we will slip the lock and no process on that client, the server, or any other client will be able to acquire the lock. This can happen, for example, if a user hits Ctrl-C or Ctrl-T while a process is waiting for the lock. By removing PCATCH, we prevent that from happening, at the cost of not permitting a user-requested lock abort: also nasty. However, a user interface bug might be preferable to a serious semantic bug, so we go with that for now. We need to teach the rpc.lockd/kernel protocol how to abort lock requests, and rpc.lockd how to handle aborted lock requests; patches for the kernel bit are floating around, but no rpc.lockd bit yet. Approved by: re (scottl)
Diffstat (limited to 'sys')
-rw-r--r--sys/nfsclient/nfs_lock.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/sys/nfsclient/nfs_lock.c b/sys/nfsclient/nfs_lock.c
index 183886e..ba10926 100644
--- a/sys/nfsclient/nfs_lock.c
+++ b/sys/nfsclient/nfs_lock.c
@@ -191,7 +191,7 @@ nfs_dolock(struct vop_advlock_args *ap)
* on a local network). XXX Probably should use a back-off
* scheme.
*/
- error = tsleep(p->p_nlminfo, PCATCH | PUSER, "lockd", 20*hz);
+ error = tsleep(p->p_nlminfo, PUSER, "lockd", 20*hz);
if (error != 0) {
if (error == EWOULDBLOCK) {
/*
OpenPOWER on IntegriCloud