Relax the locking requirements for vm_object_page_noreuse(). While
reviewing all uses of OFF_TO_IDX(), I observed that vm_object_page_noreuse() is requiring an exclusive lock on the object when, in fact, a shared lock suffices. Reviewed by: kib, markj MFC after: 3 days Differential Revision: https://reviews.freebsd.org/D10011
This commit is contained in:
parent
2d153bedd9
commit
89e63829ad
@ -1100,10 +1100,10 @@ vop_stdadvise(struct vop_advise_args *ap)
|
||||
if (vp->v_object != NULL) {
|
||||
start = trunc_page(ap->a_start);
|
||||
end = round_page(ap->a_end);
|
||||
VM_OBJECT_WLOCK(vp->v_object);
|
||||
VM_OBJECT_RLOCK(vp->v_object);
|
||||
vm_object_page_noreuse(vp->v_object, OFF_TO_IDX(start),
|
||||
OFF_TO_IDX(end));
|
||||
VM_OBJECT_WUNLOCK(vp->v_object);
|
||||
VM_OBJECT_RUNLOCK(vp->v_object);
|
||||
}
|
||||
|
||||
bo = &vp->v_bufobj;
|
||||
|
@ -1978,7 +1978,7 @@ vm_object_page_noreuse(vm_object_t object, vm_pindex_t start, vm_pindex_t end)
|
||||
struct mtx *mtx, *new_mtx;
|
||||
vm_page_t p, next;
|
||||
|
||||
VM_OBJECT_ASSERT_WLOCKED(object);
|
||||
VM_OBJECT_ASSERT_LOCKED(object);
|
||||
KASSERT((object->flags & (OBJ_FICTITIOUS | OBJ_UNMANAGED)) == 0,
|
||||
("vm_object_page_noreuse: illegal object %p", object));
|
||||
if (object->resident_page_count == 0)
|
||||
|
Loading…
Reference in New Issue
Block a user