diff options
author | dillon <dillon@FreeBSD.org> | 2001-02-28 04:26:43 +0000 |
---|---|---|
committer | dillon <dillon@FreeBSD.org> | 2001-02-28 04:26:43 +0000 |
commit | 86a16a841cc7398024e514bf7a6fb0c3a5e6ba3f (patch) | |
tree | 1fef8d3a06a58c1371e654794616ecace5435d39 | |
parent | f1c1ec2babf0f143df9be6d307aedca0505ea5e5 (diff) | |
download | FreeBSD-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)
-rw-r--r-- | sys/vm/vm_fault.c | 12 |
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); |