Page MenuHomeFreeBSD

D52737.diff
No OneTemporary

D52737.diff

diff --git a/sys/kern/vfs_bio.c b/sys/kern/vfs_bio.c
--- a/sys/kern/vfs_bio.c
+++ b/sys/kern/vfs_bio.c
@@ -4953,22 +4953,20 @@
vfs_bio_bzero_buf(struct buf *bp, int base, int size)
{
vm_page_t m;
- int i, n;
+ int i, n, pgoff;
if (buf_mapped(bp)) {
BUF_CHECK_MAPPED(bp);
bzero(bp->b_data + base, size);
} else {
BUF_CHECK_UNMAPPED(bp);
- n = PAGE_SIZE - (base & PAGE_MASK);
for (i = base / PAGE_SIZE; size > 0 && i < bp->b_npages; ++i) {
m = bp->b_pages[i];
- if (n > size)
- n = size;
- pmap_zero_page_area(m, base & PAGE_MASK, n);
+ pgoff = (bp->b_offset & PAGE_MASK) + (base & PAGE_MASK);
+ n = MIN(PAGE_SIZE - pgoff, size);
+ pmap_zero_page_area(m, pgoff, n);
base += n;
size -= n;
- n = PAGE_SIZE;
}
}
}

File Metadata

Mime Type
text/plain
Expires
Mon, Mar 16, 11:05 AM (4 h, 14 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
29767850
Default Alt Text
D52737.diff (766 B)

Event Timeline