Source-Changes-D archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: CVS commit: [tls-maxphys] src/sys/dev
On Wed, Oct 10, 2012 at 04:08:55PM +0200, Manuel Bouyer wrote:
> [...]
> I suspect UVM wants to do batch of read or writes in power of 2 size,
> aligned on power of 2 boundaries. Or this is my feeling after playing
> with the readahead code, and I wouldn't be surprised if the write
> code had the same requirement.
I tried replacing the code in ufs_readwrite():
if (!async && oldoff >> 17 != uio->uio_offset >> 17) {
mutex_enter(vp->v_interlock);
error = VOP_PUTPAGES(vp, (oldoff >> 17) << 17,
(uio->uio_offset >> 17) << 17,
PGO_CLEANIT | PGO_JOURNALLOCKED | PGO_LAZY);
if (error)
break;
}
with:
int maxphys;
if (vp->v_mount && vp->v_mount->mnt_maxphys)
maxphys = vp->v_mount->mnt_maxphys;
else
maxphys = MAXPHYS;
if (!async && uio->uio_offset - oldoff >= maxphys) {
mutex_enter(vp->v_interlock);
error = VOP_PUTPAGES(vp, trunc_page(oldoff),
trunc_page(uio->uio_offset),
PGO_CLEANIT | PGO_JOURNALLOCKED | PGO_LAZY);
if (error)
break;
}
but I only get 16k writes. So I suspect the power of 2 alignement is
important here.
Also, I did hit:
panic: kernel diagnostic assertion "npages <= (MAXPHYS >> PAGE_SHIFT)" failed:
file "/dsk/l1/misc/bouyer/tls-maxphys/src/sys/uvm/uvm_pager.c", line 212
fatal breakpoint trap in supervisor mode
trap type 1 code 0 rip ffffffff8025695d cs 8 rflags 246 cr2 ffff80006c7c9ab4
ilevel 0 rsp fffffe810b929f90
curlwp 0xfffffe810b94a780 pid 0 lid 93 lowest kstack 0xfffffe810b927000
Stopped in pid 0.93 (system) at netbsd:breakpoint+0x5: leave
db{6}> tr
breakpoint() at netbsd:breakpoint+0x5
vpanic() at netbsd:vpanic+0x1f2
kern_assert() at netbsd:kern_assert+0x48
uvm_pagermapin() at netbsd:uvm_pagermapin+0x207
genfs_gop_write() at netbsd:genfs_gop_write+0x2f
genfs_do_putpages() at netbsd:genfs_do_putpages+0xda6
VOP_PUTPAGES() at netbsd:VOP_PUTPAGES+0x3a
uvm_pageout() at netbsd:uvm_pageout+0x22a
I guess emergva-related code (allocation and use) should use MACHINE_MAXPHYS
instead of MAXPHYS
--
Manuel Bouyer <bouyer%antioche.eu.org@localhost>
NetBSD: 26 ans d'experience feront toujours la difference
--
Home |
Main Index |
Thread Index |
Old Index