58521d75ed
Removed call to vm_object_collapse(), which can block. This was being called without the pageout code holding any sort of reference on the vm_object or vm_page_t structures being manipulated. Since this code can block, it was possible for other kernel code to shred the state the pageout code was assuming remained intact. Fixed potential blocking condition in vm_pageout_page_free() ( which could cause a deadlock in a low-memory situation ). Currently there is a hack in-place to deal with clean filesystem meta-data polluting the inactive page queue. John doesn't like the hack, and neither do I. Revamped and commented a portion of the pageout loop. Added protection against potential memory deadlocks with OBJT_VNODE when using VOP_ISLOCKED(). The problem is that vp->v_data can be NULL which causes VOP_ISLOCKED() to return a less informed answer. remove vm_pager_sync() -- none of the pagers use it any more ( the old swapper used to. The new one does not ).