diff options
author | Constantine Sapuntzakis <csapuntz@cvs.openbsd.org> | 1997-10-06 15:19:19 +0000 |
---|---|---|
committer | Constantine Sapuntzakis <csapuntz@cvs.openbsd.org> | 1997-10-06 15:19:19 +0000 |
commit | ba753b42bdeef75b997ea377a0fc9217fbd5ab67 (patch) | |
tree | 819e678f4385a925ffd8437c8e2ffbc74951134e /sys/miscfs/deadfs/dead_vnops.c | |
parent | 97c5ddeb58fe74c2ee3670b3c129249a2de4775e (diff) |
VFS Lite2 Changes
Diffstat (limited to 'sys/miscfs/deadfs/dead_vnops.c')
-rw-r--r-- | sys/miscfs/deadfs/dead_vnops.c | 24 |
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)); } /* |