Module Name: src Committed By: uebayasi Date: Sat Nov 20 05:16:00 UTC 2010
Modified Files: src/sys/miscfs/genfs [uebayasi-xip]: genfs_io.c Log Message: Adjust again when heading page slots are skipped. To generate a diff of this commit: cvs rdiff -u -r1.36.2.49 -r1.36.2.50 src/sys/miscfs/genfs/genfs_io.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/miscfs/genfs/genfs_io.c diff -u src/sys/miscfs/genfs/genfs_io.c:1.36.2.49 src/sys/miscfs/genfs/genfs_io.c:1.36.2.50 --- src/sys/miscfs/genfs/genfs_io.c:1.36.2.49 Sat Nov 20 04:26:12 2010 +++ src/sys/miscfs/genfs/genfs_io.c Sat Nov 20 05:15:59 2010 @@ -1,4 +1,4 @@ -/* $NetBSD: genfs_io.c,v 1.36.2.49 2010/11/20 04:26:12 uebayasi Exp $ */ +/* $NetBSD: genfs_io.c,v 1.36.2.50 2010/11/20 05:15:59 uebayasi Exp $ */ /* * Copyright (c) 1982, 1986, 1989, 1993 @@ -31,7 +31,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: genfs_io.c,v 1.36.2.49 2010/11/20 04:26:12 uebayasi Exp $"); +__KERNEL_RCSID(0, "$NetBSD: genfs_io.c,v 1.36.2.50 2010/11/20 05:15:59 uebayasi Exp $"); #include "opt_xip.h" @@ -761,26 +761,26 @@ iobytes >> PAGE_SHIFT, ((1 + run) << fs_bshift) >> PAGE_SHIFT); const daddr_t blk_off = blkno << dev_bshift; - const daddr_t fs_off = ap->a_offset - startoffset; + const daddr_t fs_off = origoffset - startoffset; - UVMHIST_LOG(ubchist, - "xip npgs=%d blk_off=0x%lx fs_off=0x%lx", - npgs, (long)blk_off, (long)fs_off, 0); - - for (i = 0; i < npgs; i++) { + for (i = ridx + pidx; i < npgs; i++) { const daddr_t pg_off = pidx << PAGE_SHIFT; struct vm_page *pg; + UVMHIST_LOG(ubchist, + "xip blk_off=0x%lx fs_off=0x%lx pg_off=%lx", + (long)blk_off, (long)fs_off, (long)pg_off, 0); + pg = uvn_findpage_xip(devvp, &vp->v_uobj, blk_off + fs_off + pg_off); KASSERT(pg != NULL); UVMHIST_LOG(ubchist, "xip pgs %d => phys_addr=0x%lx (%p)", - pidx + i, + i, (long)pg->phys_addr, pg, 0); - pgs[pidx + i] = pg; + pgs[i] = pg; } } #endif @@ -1061,6 +1061,10 @@ const daddr_t pg_off = (i - ridx) << PAGE_SHIFT; + UVMHIST_LOG(ubchist, + "xip blk_off=%lx fs_off=%lx pg_off=%lx", + (long)blk_off, (long)fs_off, (long)pg_off, 0); + pps[i] = uvn_findpage_xip(devvp, &vp->v_uobj, blk_off + fs_off + pg_off); KASSERT(pps[i] != NULL);