few edits to this still don't solve the original problem. It appears
that the recursion is *much* worse than we thought - I'm already testing
at 30 levels deep, and it still terminates before finishing the job.
This problaby explains some people's stack overflow problems... :-(
broken and return wrong data to the user. Sigh...I need a vacation.
This patch is copied directly from John's edit on the main branch,
so I'm *sure* it is correct. :-)
MAXPHYS/PAGE_SIZE pages. This occurs when there is a non-page aligned
I/O of MAXPHYS size. The fix is to trim the request to MAXPHYS-PAGE_SIZE.
It apparantly wasn't noticed previously because of other bugs.
The existing worm driver there was entirely useless, you couldn't do
anything with it. Thus i believe that shipping a beta-quality driver
is still better. (The only other option would have been to remove it
from the branch.)
Not only is the code higher quality, but it also fixes a rounding/off-by-
one bug that caused a panic when doing physio() with DIAGNOSTIC. This
fix closes PR#1195.
queues and inadvertantly stepping off the queue via a page that was
previous removed from it. Also killed the potentially evil RSS limiting
code in the vmdaemon - it traverses allproc which would not be consistent
if the code should block for some reason (it shouldn't block, but we're
not completely sure of that...).
Submitted by: dyson
version isn't ready and the version in -stable is quite broken):
- read optimization
- corrections in data flow mechanism
- restoring board memory window state while returning from
reentrable functions
1996/03/16:
- now several boards can coexist and share the same memory window
1996/03/24:
- eliminated 'b_to_q to a clist..' message while turning off modem
1996/04/10
- 'static int nports'... - next attempt to drive several boards.
Reported that with this fix it works with 2 boards.
1996/04/20
- Overloading channel (ping -f host) caused 'No buffer space..'
state until slip unit restart. Fixed.
Submitted by: "Serge A. Babkin" <[email protected]>
Changes by: Oleg Panashchenko <[email protected]>
can/will allocate map entries at interrupt time. This is similar to a
(splvm) change that was made in the main branch, but much simpler. The
code in the main branch is broken (the thresholds are of such that
freed map entries will accumulate on the non-kernel pool)...so the fix
was re-implemented with just the spl protection and minor algorithmic
simplification.
This is similar to the splvm() protection that was added in the main
branch. It protects the queues from page insertions that can happen during
buffer rundown of asynchronous I/O read-aheads.
call to pmap_enter(). Closes a window where PG_MAPPED might be cleared
if the process blocked and someone else does a vm_page_protect(NONE)
before the process unblocks.
Reviewed by: dyson
that has to do with the PG_MAPPED flag not being set at the right time,
and PG_BUSY the page rather than doing a vm_page_hold/unhold. This
fixes a potential problem where some mapped pages might go unnoticed by
other parts of the vm system, which can be a real problem if the page(s)
are reclaimed.
Reviewed by: dyson