When swapout gets up and segkp_unlock gets called a page is checked to see if 
it has been modified by using the hat_mod() operation. This is actually a call 
to hat_page_getattr() with the P_MOD flag as one of the arguments. In hat_i86.c 
hat_page_getattr() is simply a PP_GETRM() operation which is a check of 
pp->p_nrm. Now this assumes the value in p_nrm has been sync'd to the hardware 
mechanism used to hold the page status (in the case of x86 this is the pte). 
What guarantee is there that p_nrm has been sync'd? checkpage() is one routine 
that will cause this sync'ing to occur.  However, it seems possible that while 
the scanning is happening memory pressure can get to the point where swapout() 
is invoked with pages that have yet to be scanned (it's possible for 
checkpage() to wait and allow other threads to process isn't it?). If this is 
the case then it would be possible for the p_nrm bits not to have been sync'd 
when segkp_unlock() looks them.

Neale
 
 
This message posted from opensolaris.org
_______________________________________________
opensolaris-code mailing list
[email protected]
http://mail.opensolaris.org/mailman/listinfo/opensolaris-code

Reply via email to