summaryrefslogtreecommitdiffstats
path: root/sys/vm/vm_page.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/vm/vm_page.c')
-rw-r--r--sys/vm/vm_page.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/sys/vm/vm_page.c b/sys/vm/vm_page.c
index c8f7517..0fb05fa 100644
--- a/sys/vm/vm_page.c
+++ b/sys/vm/vm_page.c
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* from: @(#)vm_page.c 7.4 (Berkeley) 5/7/91
- * $Id: vm_page.c,v 1.95 1998/03/07 21:37:13 dyson Exp $
+ * $Id: vm_page.c,v 1.96 1998/03/08 06:27:30 dyson Exp $
*/
/*
@@ -1427,7 +1427,12 @@ vm_page_bits(int base, int size)
if ((base == 0) && (size >= PAGE_SIZE))
return VM_PAGE_BITS_ALL;
+
size = (size + DEV_BSIZE - 1) & ~(DEV_BSIZE - 1);
+ if (size > PAGE_SIZE - base) {
+ size = PAGE_SIZE - base;
+ }
+
base = (base % PAGE_SIZE) / DEV_BSIZE;
chunk = vm_page_dev_bsize_chunks[size / DEV_BSIZE];
return (chunk << base) & VM_PAGE_BITS_ALL;
@@ -1463,6 +1468,7 @@ vm_page_set_invalid(m, base, size)
m->valid &= ~(bits = vm_page_bits(base, size));
if (m->valid == 0)
m->dirty &= ~bits;
+ m->object->generation++;
}
/*
OpenPOWER on IntegriCloud