summaryrefslogtreecommitdiff
path: root/sys/miscfs/deadfs
diff options
context:
space:
mode:
authorArtur Grabowski <art@cvs.openbsd.org>1998-11-13 00:31:26 +0000
committerArtur Grabowski <art@cvs.openbsd.org>1998-11-13 00:31:26 +0000
commit59a1fc67a7b7fc3717e6f95774c368acfa13c6d9 (patch)
tree82f27a4cec637d73f077aa797442c6be34578842 /sys/miscfs/deadfs
parentab632f14945291e0dc0e1efae4a3b91b06ba2a1b (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.c4
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));