[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

CVS: cvs.openbsd.org: src



CVSROOT:	/cvs
Module name:	src
Changes by:	oga_(_at_)_cvs_(_dot_)_openbsd_(_dot_)_org	2009/05/04 23:12:17

Modified files:
	sys/uvm        : uvm_aobj.c uvm_aobj.h 

Log message:
The first step in cleaning up the use of PG_RELEASED for uvm objects.

Now, the PG_ RELEASED flag currently has two (maybe three) uses. The
valid one is for use with async io where we want to free the page after
we've paged it out.  The other ones are "oh i'd like to free this, but
someone else is playing with it". It's simpler to just sleep on the
damned page instead and stop the fiddling.

First step does uao's: in uao_detach, sleep on the object and free it
when we're clean, instead of setting a flag so it's freed after. In
uao_flush, do the same. Change the interation over the object in flush
so that we don't have to add marker pages or other such voodoo to the
list when we sleep (netbsd did that when they had a similar diff), just
use the hash always. We can now change uao_releasepg() to just free the
page, and not bother with the KILLME stuff. When the other objects are
fixed this hook will vanish.

Much discussion with art@ over the idea, and ariane@ over this specific
diff. As mentioned, this one is based loosely on a similar idea in
netbsd.

Been in my tree for a while, survived many make builds, etc, and forcing
paging using ariane's evil program.

ok ariane@, beck_(_at_)__(_dot_)_



Visit your host, monkey.org