vnode_pager.c (9507) | vnode_pager.c (10551) |
---|---|
1/* 2 * Copyright (c) 1990 University of Utah. 3 * Copyright (c) 1991 The Regents of the University of California. 4 * All rights reserved. 5 * Copyright (c) 1993, 1994 John S. Dyson 6 * Copyright (c) 1995, David Greenman 7 * 8 * This code is derived from software contributed to Berkeley by --- 24 unchanged lines hidden (view full) --- 33 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 34 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 35 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 36 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 37 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 38 * SUCH DAMAGE. 39 * 40 * from: @(#)vnode_pager.c 7.5 (Berkeley) 4/20/91 | 1/* 2 * Copyright (c) 1990 University of Utah. 3 * Copyright (c) 1991 The Regents of the University of California. 4 * All rights reserved. 5 * Copyright (c) 1993, 1994 John S. Dyson 6 * Copyright (c) 1995, David Greenman 7 * 8 * This code is derived from software contributed to Berkeley by --- 24 unchanged lines hidden (view full) --- 33 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 34 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 35 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 36 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 37 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 38 * SUCH DAMAGE. 39 * 40 * from: @(#)vnode_pager.c 7.5 (Berkeley) 4/20/91 |
41 * $Id: vnode_pager.c,v 1.43 1995/07/09 06:58:03 davidg Exp $ | 41 * $Id: vnode_pager.c,v 1.44 1995/07/13 08:48:47 davidg Exp $ |
42 */ 43 44/* 45 * Page to/from files (vnodes). 46 */ 47 48/* 49 * TODO: --- 152 unchanged lines hidden (view full) --- 202 startblock = 0;; 203 204 if (before != NULL) { 205 /* 206 * Loop looking for a contiguous chunk that includes the 207 * requested page. 208 */ 209 while (TRUE) { | 42 */ 43 44/* 45 * Page to/from files (vnodes). 46 */ 47 48/* 49 * TODO: --- 152 unchanged lines hidden (view full) --- 202 startblock = 0;; 203 204 if (before != NULL) { 205 /* 206 * Loop looking for a contiguous chunk that includes the 207 * requested page. 208 */ 209 while (TRUE) { |
210 err = VOP_BMAP(vp, startblock, (struct vnode **) 0, &bn, &run); | 210 err = VOP_BMAP(vp, startblock, (struct vnode **) 0, &bn, &run, NULL); |
211 if (err || bn == -1) { 212 if (startblock < reqblock) { 213 startblock++; 214 continue; 215 } 216 *before = 0; 217 if (after != NULL) 218 *after = 0; --- 5 unchanged lines hidden (view full) --- 224 } 225 *before = reqblock - startblock; 226 if (after != NULL) 227 *after = run; 228 return TRUE; 229 } 230 } 231 | 211 if (err || bn == -1) { 212 if (startblock < reqblock) { 213 startblock++; 214 continue; 215 } 216 *before = 0; 217 if (after != NULL) 218 *after = 0; --- 5 unchanged lines hidden (view full) --- 224 } 225 *before = reqblock - startblock; 226 if (after != NULL) 227 *after = run; 228 return TRUE; 229 } 230 } 231 |
232 err = VOP_BMAP(vp, reqblock, (struct vnode **) 0, &bn, after); | 232 err = VOP_BMAP(vp, reqblock, (struct vnode **) 0, &bn, after, NULL); |
233 if (err) 234 return TRUE; 235 return ((long) bn < 0 ? FALSE : TRUE); 236} 237 238/* 239 * Lets the VM system know about a change in size for a file. 240 * We adjust our own internal size and flush any cached pages in --- 133 unchanged lines hidden (view full) --- 374 375 if ((int) address < 0) 376 return -1; 377 378 bsize = vp->v_mount->mnt_stat.f_iosize; 379 vblock = address / bsize; 380 voffset = address % bsize; 381 | 233 if (err) 234 return TRUE; 235 return ((long) bn < 0 ? FALSE : TRUE); 236} 237 238/* 239 * Lets the VM system know about a change in size for a file. 240 * We adjust our own internal size and flush any cached pages in --- 133 unchanged lines hidden (view full) --- 374 375 if ((int) address < 0) 376 return -1; 377 378 bsize = vp->v_mount->mnt_stat.f_iosize; 379 vblock = address / bsize; 380 voffset = address % bsize; 381 |
382 err = VOP_BMAP(vp, vblock, &rtvp, &block, run); | 382 err = VOP_BMAP(vp, vblock, &rtvp, &block, run, NULL); |
383 384 if (err || (block == -1)) 385 rtaddress = -1; 386 else { 387 rtaddress = block + voffset / DEV_BSIZE; 388 if( run) { 389 *run += 1; 390 *run *= bsize/PAGE_SIZE; --- 31 unchanged lines hidden (view full) --- 422 int fileaddr; 423 vm_offset_t bsize; 424 int error = 0; 425 426 vp = object->handle; 427 bsize = vp->v_mount->mnt_stat.f_iosize; 428 429 | 383 384 if (err || (block == -1)) 385 rtaddress = -1; 386 else { 387 rtaddress = block + voffset / DEV_BSIZE; 388 if( run) { 389 *run += 1; 390 *run *= bsize/PAGE_SIZE; --- 31 unchanged lines hidden (view full) --- 422 int fileaddr; 423 vm_offset_t bsize; 424 int error = 0; 425 426 vp = object->handle; 427 bsize = vp->v_mount->mnt_stat.f_iosize; 428 429 |
430 VOP_BMAP(vp, 0, &dp, 0, 0); | 430 VOP_BMAP(vp, 0, &dp, 0, NULL, NULL); |
431 432 kva = vm_pager_map_page(m); 433 434 for (i = 0; i < PAGE_SIZE / bsize; i++) { 435 436 if ((vm_page_bits(m->offset + i * bsize, bsize) & m->valid)) 437 continue; 438 --- 139 unchanged lines hidden (view full) --- 578 * originally, we did not check for an error return value -- assuming 579 * an fs always has a bmap entry point -- that assumption is wrong!!! 580 */ 581 foff = m[reqpage]->offset; 582 583 /* 584 * if we can't bmap, use old VOP code 585 */ | 431 432 kva = vm_pager_map_page(m); 433 434 for (i = 0; i < PAGE_SIZE / bsize; i++) { 435 436 if ((vm_page_bits(m->offset + i * bsize, bsize) & m->valid)) 437 continue; 438 --- 139 unchanged lines hidden (view full) --- 578 * originally, we did not check for an error return value -- assuming 579 * an fs always has a bmap entry point -- that assumption is wrong!!! 580 */ 581 foff = m[reqpage]->offset; 582 583 /* 584 * if we can't bmap, use old VOP code 585 */ |
586 if (VOP_BMAP(vp, 0, &dp, 0, 0)) { | 586 if (VOP_BMAP(vp, 0, &dp, 0, NULL, NULL)) { |
587 for (i = 0; i < count; i++) { 588 if (i != reqpage) { 589 vnode_pager_freepage(m[i]); 590 } 591 } 592 cnt.v_vnodein++; 593 cnt.v_vnodepgsin++; 594 return vnode_pager_input_old(object, m[reqpage]); --- 278 unchanged lines hidden --- | 587 for (i = 0; i < count; i++) { 588 if (i != reqpage) { 589 vnode_pager_freepage(m[i]); 590 } 591 } 592 cnt.v_vnodein++; 593 cnt.v_vnodepgsin++; 594 return vnode_pager_input_old(object, m[reqpage]); --- 278 unchanged lines hidden --- |