summaryrefslogtreecommitdiffstats
path: root/sys/miscfs/deadfs
diff options
context:
space:
mode:
authorcsapuntz <csapuntz@openbsd.org>1997-10-06 15:05:18 +0000
committercsapuntz <csapuntz@openbsd.org>1997-10-06 15:05:18 +0000
commit6e175d504b4d2c3634337aa6a71d85b74b81c113 (patch)
tree69347f4cbda33eca8b28929f0e401694bb32f5f7 /sys/miscfs/deadfs
parentVFS Lite 2 Changes (diff)
downloadwireguard-openbsd-6e175d504b4d2c3634337aa6a71d85b74b81c113.tar.xz
wireguard-openbsd-6e175d504b4d2c3634337aa6a71d85b74b81c113.zip
VFS Lite2 Changes
Diffstat (limited to 'sys/miscfs/deadfs')
-rw-r--r--sys/miscfs/deadfs/dead_vnops.c24
1 files changed, 18 insertions, 6 deletions
diff --git a/sys/miscfs/deadfs/dead_vnops.c b/sys/miscfs/deadfs/dead_vnops.c
index 0d44c0bbff7..e1a6ffc0493 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.2 1996/02/27 07:49:43 niklas Exp $ */
+/* $OpenBSD: dead_vnops.c,v 1.3 1997/10/06 15:18:59 csapuntz Exp $ */
/* $NetBSD: dead_vnops.c,v 1.16 1996/02/13 13:12:48 mycroft Exp $ */
/*
@@ -78,11 +78,11 @@ int dead_select __P((void *));
#define dead_inactive nullop
#define dead_reclaim nullop
int dead_lock __P((void *));
-#define dead_unlock nullop
+#define dead_unlock vop_nounlock
int dead_bmap __P((void *));
int dead_strategy __P((void *));
int dead_print __P((void *));
-#define dead_islocked nullop
+#define dead_islocked vop_noislocked
#define dead_pathconf dead_ebadf
#define dead_advlock dead_ebadf
#define dead_blkatoff dead_badop
@@ -279,11 +279,23 @@ dead_lock(v)
{
struct vop_lock_args /* {
struct vnode *a_vp;
+ int a_flags;
+ struct proc *a_p;
} */ *ap = v;
+ struct vnode *vp = ap->a_vp;
- if (!chkvnlock(ap->a_vp))
- return (0);
- return (VCALL(ap->a_vp, VOFFSET(vop_lock), ap));
+ /*
+ * Since we are not using the lock manager, we must clear
+ * the interlock here.
+ */
+ if (ap->a_flags & LK_INTERLOCK) {
+ simple_unlock(&vp->v_interlock);
+ ap->a_flags &= ~LK_INTERLOCK;
+ }
+ if (!chkvnlock(vp))
+ return (0);
+
+ return (VCALL(vp, VOFFSET(vop_lock), ap));
}
/*