summaryrefslogtreecommitdiffstats
path: root/sys/vm/vm_mmap.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/vm/vm_mmap.c')
-rw-r--r--sys/vm/vm_mmap.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/sys/vm/vm_mmap.c b/sys/vm/vm_mmap.c
index 05bb8ae..4ae1f90 100644
--- a/sys/vm/vm_mmap.c
+++ b/sys/vm/vm_mmap.c
@@ -82,6 +82,7 @@ __FBSDID("$FreeBSD$");
#include <vm/vm_pageout.h>
#include <vm/vm_extern.h>
#include <vm/vm_page.h>
+#include <vm/vm_radix.h>
#include <vm/vnode_pager.h>
#ifdef HWPMC_HOOKS
@@ -912,10 +913,15 @@ RestartScan:
object->type == OBJT_VNODE) {
pindex = OFF_TO_IDX(current->offset +
(addr - current->start));
- m = vm_page_lookup(object, pindex);
- if (m == NULL &&
- vm_page_is_cached(object, pindex))
+ m = vm_radix_lookup(&object->rtree,
+ pindex, VM_RADIX_ANY);
+
+ /* Lock just for consistency. */
+ mtx_lock(&vm_page_queue_free_mtx);
+ if (m != NULL &&
+ (m->flags & PG_CACHED) != 0)
mincoreinfo = MINCORE_INCORE;
+ mtx_unlock(&vm_page_queue_free_mtx);
if (m != NULL && m->valid == 0)
m = NULL;
if (m != NULL)
OpenPOWER on IntegriCloud