kernel - Fix incorrect dirty/reprotect code in pageout
authorMatthew Dillon <dillon@apollo.backplane.com>
Thu, 16 Aug 2012 18:42:25 +0000 (11:42 -0700)
committerMatthew Dillon <dillon@apollo.backplane.com>
Tue, 21 Aug 2012 03:59:34 +0000 (20:59 -0700)
commit4d289d94806fbaf2b1d0d81acf036409bdd0e735
treec4e18ebb87657e3862606a52cfe635a0737b2c77
parentc4ad22e2259588e2e420164d97c938c437adbc87
kernel - Fix incorrect dirty/reprotect code in pageout

* vm_object_page_collect_flush() was trying to re-protect VM pages that
  were still marked dirty after pageout I/O was initiated without owning
  the BUSY bit on the page.  This operation could race whatever I/O was
  going on and multiple issues.  Remove the re-protect.

  Just don't do it.  It's an unnecessary operation.  We still re-set
  PG_CLEANCHK on the page and that should be fine insofar as the pageout
  daemon goes.

* Note that the pageout_flush code protects the VM pages properly (to
  read-only) prior to initiating I/O .

* Should fix bug #2350

* Might be related to the wire-count bug considering that we were messing
  with the page's pmap without owning the BUSY bit.  Small chance.
sys/vm/vm_object.c