diff options
| author | Peter Wemm <peter@FreeBSD.org> | 2002-04-28 00:15:48 +0000 |
|---|---|---|
| committer | Peter Wemm <peter@FreeBSD.org> | 2002-04-28 00:15:48 +0000 |
| commit | 44e74ba6c3afa2a780f9250885d26a14558e75de (patch) | |
| tree | ed9386cd8bc5bf5db1a8d49e5119aef3aa591423 | |
| parent | c9f93b82a95df72be90d2493e307eab8e0f9e3cc (diff) | |
Notes
| -rw-r--r-- | sys/vm/vm_page.c | 12 | ||||
| -rw-r--r-- | sys/vm/vm_page.h | 1 | ||||
| -rw-r--r-- | sys/vm/vnode_pager.c | 5 |
3 files changed, 14 insertions, 4 deletions
diff --git a/sys/vm/vm_page.c b/sys/vm/vm_page.c index 746c03a3d050..431ac70907c3 100644 --- a/sys/vm/vm_page.c +++ b/sys/vm/vm_page.c @@ -457,6 +457,18 @@ vm_page_zero_fill(vm_page_t m) } /* + * vm_page_zero_fill_area: + * + * Like vm_page_zero_fill but only fill the specified area. + */ +boolean_t +vm_page_zero_fill_area(vm_page_t m, int off, int size) +{ + pmap_zero_page_area(m, off, size); + return (TRUE); +} + +/* * vm_page_copy: * * Copy one page to another diff --git a/sys/vm/vm_page.h b/sys/vm/vm_page.h index f7dfaa6cad74..d4777eeacc89 100644 --- a/sys/vm/vm_page.h +++ b/sys/vm/vm_page.h @@ -327,6 +327,7 @@ void vm_page_hold(vm_page_t mem); void vm_page_unhold(vm_page_t mem); void vm_page_protect(vm_page_t mem, int prot); boolean_t vm_page_zero_fill(vm_page_t m); +boolean_t vm_page_zero_fill_area(vm_page_t m, int off, int len); void vm_page_copy(vm_page_t src_m, vm_page_t dest_m); void vm_page_free(vm_page_t m); void vm_page_free_zero(vm_page_t m); diff --git a/sys/vm/vnode_pager.c b/sys/vm/vnode_pager.c index f069b6ab2cf9..46c7cefc0a3a 100644 --- a/sys/vm/vnode_pager.c +++ b/sys/vm/vnode_pager.c @@ -305,7 +305,6 @@ vnode_pager_setsize(vp, nsize) * it can screw up NFS reads, so we don't allow the case. */ if (nsize & PAGE_MASK) { - vm_offset_t kva; vm_page_t m; m = vm_page_lookup(object, OFF_TO_IDX(nsize)); @@ -317,9 +316,7 @@ vnode_pager_setsize(vp, nsize) * Clear out partial-page garbage in case * the page has been mapped. */ - kva = vm_pager_map_page(m); - bzero((caddr_t)kva + base, size); - vm_pager_unmap_page(kva); + vm_page_zero_fill_area(m, base, size); /* * XXX work around SMP data integrity race |
