This is turning out to be a small headache, but it has to be fixed
before we can release so I'm going to slog throug it.
It turns out that the vnode pager getpages code, the swap pager getpages
and putpages code, and the pageout code can all make calls to
vn_strategy() which ignore the device I/O size limit. It is also
possible for filesystems to attempt to do I/O to devices in larger
chunks then IDE can handle though UFS filesystems are not normally
created with a 64K block size so it doesn't actually happen at the
moment.
The only proper place to fix this is in spec_strategy(). That is, to
make specfs break up requests which are too large into smaller pieces.
I am looking into how best to do this right now.
-Matt
Matthew Dillon
<[EMAIL PROTECTED]>