summaryrefslogtreecommitdiffstats
path: root/sys/vm
diff options
context:
space:
mode:
authordillon <dillon@FreeBSD.org>2001-02-28 04:26:43 +0000
committerdillon <dillon@FreeBSD.org>2001-02-28 04:26:43 +0000
commit86a16a841cc7398024e514bf7a6fb0c3a5e6ba3f (patch)
tree1fef8d3a06a58c1371e654794616ecace5435d39 /sys/vm
parentf1c1ec2babf0f143df9be6d307aedca0505ea5e5 (diff)
downloadFreeBSD-src-86a16a841cc7398024e514bf7a6fb0c3a5e6ba3f.zip
FreeBSD-src-86a16a841cc7398024e514bf7a6fb0c3a5e6ba3f.tar.gz
If we intend to make the page writable without requiring another fault,
make sure that PG_NOSYNC is properly set. Previously we only set it for a write-fault, but this can occur on a read-fault too. (will be MFCd prior to 4.3 freeze)
Diffstat (limited to 'sys/vm')
-rw-r--r--sys/vm/vm_fault.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/sys/vm/vm_fault.c b/sys/vm/vm_fault.c
index 4641537..2b20004 100644
--- a/sys/vm/vm_fault.c
+++ b/sys/vm/vm_fault.c
@@ -795,14 +795,14 @@ readrest:
* Also tell the backing pager, if any, that it should remove
* any swap backing since the page is now dirty.
*/
+ if (fs.entry->eflags & MAP_ENTRY_NOSYNC) {
+ if (fs.m->dirty == 0)
+ vm_page_flag_set(fs.m, PG_NOSYNC);
+ } else {
+ vm_page_flag_clear(fs.m, PG_NOSYNC);
+ }
if (fault_flags & VM_FAULT_DIRTY) {
int s;
- if (fs.entry->eflags & MAP_ENTRY_NOSYNC) {
- if (fs.m->dirty == 0)
- vm_page_flag_set(fs.m, PG_NOSYNC);
- } else {
- vm_page_flag_clear(fs.m, PG_NOSYNC);
- }
vm_page_dirty(fs.m);
s = splvm();
vm_pager_page_unswapped(fs.m);
OpenPOWER on IntegriCloud