svn commit: r267072 - user/attilio/rm_vmobj_cache/sys/vm
Attilio Rao
attilio at FreeBSD.org
Wed Jun 4 18:16:47 UTC 2014
Author: attilio
Date: Wed Jun 4 18:16:46 2014
New Revision: 267072
URL: http://svnweb.freebsd.org/changeset/base/267072
Log:
Force VM_ALLOC_WIRED on pagefaults for unamanged objects.
Modified:
user/attilio/rm_vmobj_cache/sys/vm/vm_fault.c
Modified: user/attilio/rm_vmobj_cache/sys/vm/vm_fault.c
==============================================================================
--- user/attilio/rm_vmobj_cache/sys/vm/vm_fault.c Wed Jun 4 18:08:08 2014 (r267071)
+++ user/attilio/rm_vmobj_cache/sys/vm/vm_fault.c Wed Jun 4 18:16:46 2014 (r267072)
@@ -426,6 +426,8 @@ RetryFault:;
if (fs.object->type != OBJT_VNODE &&
fs.object->backing_object == NULL)
alloc_req |= VM_ALLOC_ZERO;
+ if ((fs.object->flags & OBJ_UNMANAGED) != 0)
+ alloc_req |= VM_ALLOC_WIRED;
fs.m = vm_page_alloc(fs.object, fs.pindex,
alloc_req);
}
@@ -1440,7 +1442,7 @@ vm_fault_additional_pages(m, rbehind, ra
vm_object_t object;
vm_pindex_t pindex, startpindex, endpindex, tpindex;
vm_page_t rtm;
- int cbehind, cahead;
+ int alloc_req, cbehind, cahead;
VM_OBJECT_ASSERT_WLOCKED(m->object);
@@ -1469,6 +1471,10 @@ vm_fault_additional_pages(m, rbehind, ra
rbehind = cbehind;
}
+ alloc_req = VM_ALLOC_NORMAL | VM_ALLOC_IFNOTCACHED;
+ if ((object->flags & OBJ_UNMANAGED) != 0)
+ alloc_req |= VM_ALLOC_WIRED;
+
/*
* scan backward for the read behind pages -- in memory
*/
@@ -1488,8 +1494,7 @@ vm_fault_additional_pages(m, rbehind, ra
for (i = 0, tpindex = pindex - 1; tpindex >= startpindex &&
tpindex < pindex; i++, tpindex--) {
- rtm = vm_page_alloc(object, tpindex, VM_ALLOC_NORMAL |
- VM_ALLOC_IFNOTCACHED);
+ rtm = vm_page_alloc(object, tpindex, alloc_req);
if (rtm == NULL) {
/*
* Shift the allocated pages to the
@@ -1527,8 +1532,7 @@ vm_fault_additional_pages(m, rbehind, ra
for (; tpindex < endpindex; i++, tpindex++) {
- rtm = vm_page_alloc(object, tpindex, VM_ALLOC_NORMAL |
- VM_ALLOC_IFNOTCACHED);
+ rtm = vm_page_alloc(object, tpindex, alloc_req);
if (rtm == NULL) {
break;
}
More information about the svn-src-user
mailing list