diff options
author | Artur Grabowski <art@cvs.openbsd.org> | 1998-11-13 00:31:26 +0000 |
---|---|---|
committer | Artur Grabowski <art@cvs.openbsd.org> | 1998-11-13 00:31:26 +0000 |
commit | 59a1fc67a7b7fc3717e6f95774c368acfa13c6d9 (patch) | |
tree | 82f27a4cec637d73f077aa797442c6be34578842 /sys/miscfs/deadfs | |
parent | ab632f14945291e0dc0e1efae4a3b91b06ba2a1b (diff) |
When vclean calls VOP_LOCK (dead_lock in this case) it has already set
the VXLOCK flag. Calling chkvnlock in that case causes a deadlock.
XXX note that only vclean passes LK_DRAIN to VOP_LOCK and don't call chkvnlock
XXX in that case.
Diffstat (limited to 'sys/miscfs/deadfs')
-rw-r--r-- | sys/miscfs/deadfs/dead_vnops.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/sys/miscfs/deadfs/dead_vnops.c b/sys/miscfs/deadfs/dead_vnops.c index e14eda13afa..97e4fc3784e 100644 --- a/sys/miscfs/deadfs/dead_vnops.c +++ b/sys/miscfs/deadfs/dead_vnops.c @@ -1,4 +1,4 @@ -/* $OpenBSD: dead_vnops.c,v 1.6 1998/08/06 19:34:30 csapuntz Exp $ */ +/* $OpenBSD: dead_vnops.c,v 1.7 1998/11/13 00:31:25 art Exp $ */ /* $NetBSD: dead_vnops.c,v 1.16 1996/02/13 13:12:48 mycroft Exp $ */ /* @@ -292,7 +292,7 @@ dead_lock(v) simple_unlock(&vp->v_interlock); ap->a_flags &= ~LK_INTERLOCK; } - if (!chkvnlock(vp)) + if (ap->a_flags & LK_DRAIN || !chkvnlock(vp)) return (0); return (VCALL(vp, VOFFSET(vop_lock), ap)); |