Deleted Added
full compact
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 ---