Subject: More on CLUSTERED_PAGEOUT
To: None <tech-kern@NetBSD.ORG>
From: Thor Lancelot Simon <tls@panix.com>
List: tech-kern
Date: 02/01/1997 12:24:00
So, a kernel built with CLUSTERED_PAGEOUT *almost* works. When I force it to
swap heavily, I get messages like this:
swap_pager_clean: clean of page 79be000 failed
swap_pager_clean: clean of page 79bf000 failed
swap_pager_clean: clean of page 79c0000 failed
swap_pager_clean: clean of page 79c1000 failed
swap_pager_clean: clean of page 79c2000 failed
swap_pager_clean: clean of page 79c3000 failed
swap_pager_clean: clean of page 79c4000 failed
Which some debugging show to ultimately issue from the following code in
sys/vm/vm_swap.c:
off = bp->b_blkno % dmmax;
if (off+sz > dmmax) {
bp->b_error = EINVAL;
bp->b_flags |= B_ERROR;
biodone(bp);
return;
}
I am rather bemused about how this can happen, since the clustering code in
swap_pager.c explicitly checks to ensure that clusters are smaller than both
dmmax and MAXPHYS.
Any ideas?
Thor