summaryrefslogtreecommitdiffstats
path: root/sys/vm/vnode_pager.c
diff options
context:
space:
mode:
authorjeff <jeff@FreeBSD.org>2002-09-25 01:23:43 +0000
committerjeff <jeff@FreeBSD.org>2002-09-25 01:23:43 +0000
commitee079921fc510be5ab2a48c65307498e5aeb5b86 (patch)
tree91edd21b81132664a507c88a1d6dde214dd343cd /sys/vm/vnode_pager.c
parentf4ce091d174d74956c8d8a55abe92a76736816b5 (diff)
downloadFreeBSD-src-ee079921fc510be5ab2a48c65307498e5aeb5b86.zip
FreeBSD-src-ee079921fc510be5ab2a48c65307498e5aeb5b86.tar.gz
- Add a ASSERT_VOP_LOCKED in vnode_pager_alloc.
- Lock access to v_iflags.
Diffstat (limited to 'sys/vm/vnode_pager.c')
-rw-r--r--sys/vm/vnode_pager.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/sys/vm/vnode_pager.c b/sys/vm/vnode_pager.c
index f09f147..d47cb7c 100644
--- a/sys/vm/vnode_pager.c
+++ b/sys/vm/vnode_pager.c
@@ -120,6 +120,8 @@ vnode_pager_alloc(void *handle, vm_ooffset_t size, vm_prot_t prot,
vp = (struct vnode *) handle;
+ ASSERT_VOP_LOCKED(vp, "vnode_pager_alloc");
+
mtx_lock(&Giant);
/*
* Prevent race condition when allocating the object. This
@@ -212,9 +214,12 @@ vnode_pager_haspage(object, pindex, before, after)
if (vp == NULL)
return FALSE;
- mp_fixme("Unlocked iflags access");
- if (vp->v_iflag & VI_DOOMED)
+ VI_LOCK(vp);
+ if (vp->v_iflag & VI_DOOMED) {
+ VI_UNLOCK(vp);
return FALSE;
+ }
+ VI_UNLOCK(vp);
/*
* If filesystem no longer mounted or offset beyond end of file we do
* not have the page.
OpenPOWER on IntegriCloud