diff options
| author | Jeff Roberson <jeff@FreeBSD.org> | 2019-08-19 22:25:28 +0000 |
|---|---|---|
| committer | Jeff Roberson <jeff@FreeBSD.org> | 2019-08-19 22:25:28 +0000 |
| commit | 4153054a7c12451edd54f2f3e763d1dbfad49d09 (patch) | |
| tree | 51c8d0b1c9dcc065f71102d5647cdaba9d774b06 /sys/vm/vnode_pager.c | |
| parent | 8a3238521b704c52bcc5fb9f9c67096c93a9e1f6 (diff) | |
Notes
Diffstat (limited to 'sys/vm/vnode_pager.c')
| -rw-r--r-- | sys/vm/vnode_pager.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/sys/vm/vnode_pager.c b/sys/vm/vnode_pager.c index e9a78f7b33ee6..70c919d9134e0 100644 --- a/sys/vm/vnode_pager.c +++ b/sys/vm/vnode_pager.c @@ -355,13 +355,14 @@ vnode_pager_haspage(vm_object_t object, vm_pindex_t pindex, int *before, { struct vnode *vp = object->handle; daddr_t bn; + uintptr_t lockstate; int err; daddr_t reqblock; int poff; int bsize; int pagesperblock, blocksperpage; - VM_OBJECT_ASSERT_WLOCKED(object); + VM_OBJECT_ASSERT_LOCKED(object); /* * If no vp or vp is doomed or marked transparent to VM, we do not * have the page. @@ -384,9 +385,9 @@ vnode_pager_haspage(vm_object_t object, vm_pindex_t pindex, int *before, blocksperpage = (PAGE_SIZE / bsize); reqblock = pindex * blocksperpage; } - VM_OBJECT_WUNLOCK(object); + lockstate = VM_OBJECT_DROP(object); err = VOP_BMAP(vp, reqblock, NULL, &bn, after, before); - VM_OBJECT_WLOCK(object); + VM_OBJECT_PICKUP(object, lockstate); if (err) return TRUE; if (bn == -1) |
