Page MenuHomeFreeBSD

D53963.id167283.diff
No OneTemporary

D53963.id167283.diff

diff --git a/sys/vm/vm_fault.c b/sys/vm/vm_fault.c
--- a/sys/vm/vm_fault.c
+++ b/sys/vm/vm_fault.c
@@ -138,6 +138,7 @@
vm_object_t object;
vm_pindex_t pindex;
vm_page_t m;
+ bool m_needs_zeroing;
/* Top-level map object. */
vm_object_t first_object;
@@ -273,6 +274,7 @@
vm_fault_deallocate(struct faultstate *fs)
{
+ fs->m_needs_zeroing = true;
vm_fault_page_release(&fs->m_cow);
vm_fault_page_release(&fs->m);
vm_object_pip_wakeup(fs->object);
@@ -1219,7 +1221,7 @@
/*
* Zero the page if necessary and mark it valid.
*/
- if ((fs->m->flags & PG_ZERO) == 0) {
+ if (fs->m_needs_zeroing) {
pmap_zero_page(fs->m);
} else {
#ifdef INVARIANTS
@@ -1352,6 +1354,7 @@
vm_waitpfault(dset, vm_pfault_oom_wait * hz);
return (FAULT_RESTART);
}
+ fs->m_needs_zeroing = (fs->m->flags & PG_ZERO) == 0;
fs->oom_started = false;
return (FAULT_CONTINUE);
@@ -1686,6 +1689,7 @@
fs.fault_flags = fault_flags;
fs.map = map;
fs.lookup_still_valid = false;
+ fs.m_needs_zeroing = true;
fs.oom_started = false;
fs.nera = -1;
fs.can_read_lock = true;
diff --git a/sys/vm/vm_page.h b/sys/vm/vm_page.h
--- a/sys/vm/vm_page.h
+++ b/sys/vm/vm_page.h
@@ -230,7 +230,7 @@
} uma;
} plinks;
vm_object_t object; /* which object am I in (O) */
- vm_pindex_t pindex; /* offset into object (O,P) */
+ vm_pindex_t pindex; /* offset into object (O) */
vm_paddr_t phys_addr; /* physical address of page (C) */
struct md_page md; /* machine dependent stuff */
u_int ref_count; /* page references (A) */
@@ -238,7 +238,7 @@
union vm_page_astate a; /* state accessed atomically (A) */
uint8_t order; /* index of the buddy queue (F) */
uint8_t pool; /* vm_phys freepool index (F) */
- uint8_t flags; /* page PG_* flags (P) */
+ uint8_t flags; /* page PG_* flags */
uint8_t oflags; /* page VPO_* flags (O) */
int8_t psind; /* pagesizes[] index (O) */
int8_t segind; /* vm_phys segment index (C) */

File Metadata

Mime Type
text/plain
Expires
Fri, Aug 7, 1:05 PM (2 h, 48 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
36174375
Default Alt Text
D53963.id167283.diff (1 KB)

Event Timeline