aboutsummaryrefslogtreecommitdiff
path: root/sys/vm/vnode_pager.c
diff options
context:
space:
mode:
authorPawel Jakub Dawidek <pjd@FreeBSD.org>2007-07-26 16:58:09 +0000
committerPawel Jakub Dawidek <pjd@FreeBSD.org>2007-07-26 16:58:09 +0000
commit57fd3d55726f8b31289751a498ed284b4ba20192 (patch)
tree5a98f364f3abdf11cc44ba4d0cfc643ff591bd63 /sys/vm/vnode_pager.c
parent68c1a246ae99cc4d30703f9f9d232ea0b5ef2d15 (diff)
downloadsrc-57fd3d55726f8b31289751a498ed284b4ba20192.tar.gz
src-57fd3d55726f8b31289751a498ed284b4ba20192.zip
When we do open, we should lock the vnode exclusively. This fixes few races:
- fifo race, where two threads assign v_fifoinfo, - v_writecount modifications, - v_object modifications, - and probably more... Discussed with: kib, ups Approved by: re (rwatson)
Notes
Notes: svn path=/head/; revision=171599
Diffstat (limited to 'sys/vm/vnode_pager.c')
-rw-r--r--sys/vm/vnode_pager.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/sys/vm/vnode_pager.c b/sys/vm/vnode_pager.c
index a4cadf74123c..67164e8918f1 100644
--- a/sys/vm/vnode_pager.c
+++ b/sys/vm/vnode_pager.c
@@ -151,7 +151,7 @@ vnode_destroy_vobject(struct vnode *vp)
obj = vp->v_object;
if (obj == NULL)
return;
- ASSERT_VOP_LOCKED(vp, "vnode_destroy_vobject");
+ ASSERT_VOP_ELOCKED(vp, "vnode_destroy_vobject");
VM_OBJECT_LOCK(obj);
if (obj->ref_count == 0) {
/*
@@ -198,7 +198,7 @@ vnode_pager_alloc(void *handle, vm_ooffset_t size, vm_prot_t prot,
vp = (struct vnode *) handle;
- ASSERT_VOP_LOCKED(vp, "vnode_pager_alloc");
+ ASSERT_VOP_ELOCKED(vp, "vnode_pager_alloc");
/*
* If the object is being terminated, wait for it to
@@ -256,7 +256,7 @@ vnode_pager_dealloc(object)
vm_object_clear_flag(object, OBJ_DISCONNECTWNT);
wakeup(object);
}
- ASSERT_VOP_LOCKED(vp, "vnode_pager_dealloc");
+ ASSERT_VOP_ELOCKED(vp, "vnode_pager_dealloc");
vp->v_object = NULL;
vp->v_vflag &= ~VV_TEXT;
}