git: kernel - Fix incorrect dirty/reprotect code in pageout

Matthew Dillon dillon at crater.dragonflybsd.org
Thu Aug 16 11:49:49 PDT 2012


commit ab3e1edd524fbb06adf34b8a5d37c2789a379c4f
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date:   Thu Aug 16 11:42:25 2012 -0700

    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.

Summary of changes:
 sys/vm/vm_object.c |   14 ++++++++++----
 1 files changed, 10 insertions(+), 4 deletions(-)

http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/ab3e1edd524fbb06adf34b8a5d37c2789a379c4f


-- 
DragonFly BSD source repository





More information about the Commits mailing list