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)
This commit is contained in:
parent
2461ce3886
commit
2d61916d16
@ -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) {
|
||||
/*
|
||||
|
Loading…
Reference in New Issue
Block a user