Changeset View
Changeset View
Standalone View
Standalone View
head/sys/vm/vnode_pager.c
Show First 20 Lines • Show All 1,144 Lines • ▼ Show 20 Lines | for (i = 0, tfoff = IDX_TO_OFF(bp->b_pages[0]->pindex); | ||||
i < bp->b_npages; i++, tfoff = nextoff) { | i < bp->b_npages; i++, tfoff = nextoff) { | ||||
vm_page_t mt; | vm_page_t mt; | ||||
nextoff = tfoff + PAGE_SIZE; | nextoff = tfoff + PAGE_SIZE; | ||||
mt = bp->b_pages[i]; | mt = bp->b_pages[i]; | ||||
if (mt == bogus_page) | if (mt == bogus_page) | ||||
continue; | continue; | ||||
if (error == 0) { | |||||
if (nextoff <= object->un_pager.vnp.vnp_size) { | if (nextoff <= object->un_pager.vnp.vnp_size) { | ||||
/* | /* | ||||
* Read filled up entire page. | * Read filled up entire page. | ||||
*/ | */ | ||||
vm_page_valid(mt); | vm_page_valid(mt); | ||||
KASSERT(mt->dirty == 0, | KASSERT(mt->dirty == 0, | ||||
("%s: page %p is dirty", __func__, mt)); | ("%s: page %p is dirty", __func__, mt)); | ||||
KASSERT(!pmap_page_is_mapped(mt), | KASSERT(!pmap_page_is_mapped(mt), | ||||
("%s: page %p is mapped", __func__, mt)); | ("%s: page %p is mapped", __func__, mt)); | ||||
} else { | } else { | ||||
/* | /* | ||||
* Read did not fill up entire page. | * Read did not fill up entire page. | ||||
* | * | ||||
* Currently we do not set the entire page valid, | * Currently we do not set the entire page | ||||
* we just try to clear the piece that we couldn't | * valid, we just try to clear the piece that | ||||
* read. | * we couldn't read. | ||||
*/ | */ | ||||
vm_page_set_valid_range(mt, 0, | vm_page_set_valid_range(mt, 0, | ||||
object->un_pager.vnp.vnp_size - tfoff); | object->un_pager.vnp.vnp_size - tfoff); | ||||
KASSERT((mt->dirty & vm_page_bits(0, | KASSERT((mt->dirty & vm_page_bits(0, | ||||
object->un_pager.vnp.vnp_size - tfoff)) == 0, | object->un_pager.vnp.vnp_size - tfoff)) == | ||||
("%s: page %p is dirty", __func__, mt)); | 0, ("%s: page %p is dirty", __func__, mt)); | ||||
} | |||||
} | } | ||||
if (i < bp->b_pgbefore || i >= bp->b_npages - bp->b_pgafter) | if (i < bp->b_pgbefore || i >= bp->b_npages - bp->b_pgafter) | ||||
vm_page_readahead_finish(mt); | vm_page_readahead_finish(mt); | ||||
} | } | ||||
VM_OBJECT_RUNLOCK(object); | VM_OBJECT_RUNLOCK(object); | ||||
return (error); | return (error); | ||||
▲ Show 20 Lines • Show All 406 Lines • Show Last 20 Lines |