DragonFly commits List (threaded) for 2008-05
DragonFly BSD
DragonFly commits List (threaded) for 2008-05
[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]

cvs commit: src/sys/kern kern_slaballoc.c kern_umtx.c kern_xio.c sys_pipe.c vfs_bio.c src/sys/platform/pc32/i386 pmap.c trap.c src/sys/platform/vkernel/platform copyio.c pmap.c src/sys/vm swap_pager.c vm_fault.c vm_object.c vm_page.c vm_page.h ...


From: Matthew Dillon <dillon@xxxxxxxxxxxxxxxxxxxxxxx>
Date: Fri, 9 May 2008 00:24:48 -0700 (PDT)

dillon      2008/05/09 00:24:48 PDT

DragonFly src repository

  Modified files:
    sys/kern             kern_slaballoc.c kern_umtx.c kern_xio.c 
                         sys_pipe.c vfs_bio.c 
    sys/platform/pc32/i386 pmap.c trap.c 
    sys/platform/vkernel/platform copyio.c pmap.c 
    sys/vm               swap_pager.c vm_fault.c vm_object.c 
                         vm_page.c vm_page.h vm_pageout.c 
                         vnode_pager.c 
  Log:
  Fix many bugs and issues in the VM system, particularly related to
  heavy paging.
  
  * (cleanup) PG_WRITEABLE is now set by the low level pmap code and not by
    high level code.  It means 'This page may contain a managed page table
    mapping which is writeable', meaning that hardware can dirty the page
    at any time.  The page must be tested via appropriate pmap calls before
    being disposed of.
  
  * (cleanup) PG_MAPPED is now handled by the low level pmap code and only
    applies to managed mappings.  There is still a bit of cruft left over
    related to the pmap code's page table pages but the high level code is now
    clean.
  
  * (bug) Various XIO, SFBUF, and MSFBUF routines which bypass normal paging
    operations were not properly dirtying pages when the caller intended
    to write to them.
  
  * (bug) vfs_busy_pages in kern/vfs_bio.c had a busy race.  Separate the code
    out to ensure that we have marked all the pages as undergoing IO before we
    call vm_page_protect().  vm_page_protect(... VM_PROT_NONE) can block
    under very heavy paging conditions and if the pages haven't been marked
    for IO that could blow up the code.
  
  * (optimization) Make a minor optimization.  When busying pages for write
    IO, downgrade the page table mappings to read-only instead of removing
    them entirely.
  
  * (bug) In platform/pc32/i386/pmap.c fix various places where
    pmap_inval_add() was being called at the wrong point.  Only one was
    critical, in pmap_enter(), where pmap_inval_add() was being called so far
    away from the pmap entry being modified that it could wind up being flushed
    out prior to the modification, breaking the cpusync required.
  
    pmap.c also contains most of the work involved in the PG_MAPPED and
    PG_WRITEABLE changes.
  
  * (bug) Close numerous pte updating races with hardware setting the
    modified bit.  There is still one race left (in pmap_enter()).
  
  * (bug) Disable pmap_copy() entirely.   Fix most of the bugs anyway, but
    there is still one left in the handling of the srcmpte variable.
  
  * (cleanup) Change vm_page_dirty() from an inline to a real procedure, and
    move the code which set the object to writeable/maybedirty into
    vm_page_dirty().
  
  * (bug) Calls to vm_page_protect(... VM_PROT_NONE) can block.  Fix all cases
    where this call was made with a non-busied page.  All such calls are
    now made with a busied page, preventing blocking races from re-dirtying
    or remapping the page unexpectedly.
  
    (Such blockages could only occur during heavy paging activity where the
    underlying page table pages are being actively recycled).
  
  * (bug) Fix the pageout code to properly mark pages as undergoing I/O before
    changing their protection bits.
  
  * (bug) Busy pages undergoing zeroing or partial zeroing in the vnode pager
    (vm/vnode_pager.c) to avoid unexpected effects.
  
  Revision  Changes    Path
  1.52      +6 -1      src/sys/kern/kern_slaballoc.c
  1.9       +1 -0      src/sys/kern/kern_umtx.c
  1.16      +6 -2      src/sys/kern/kern_xio.c
  1.47      +6 -3      src/sys/kern/sys_pipe.c
  1.102     +23 -2     src/sys/kern/vfs_bio.c
  1.84      +116 -78   src/sys/platform/pc32/i386/pmap.c
  1.112     +2 -1      src/sys/platform/pc32/i386/trap.c
  1.9       +1 -0      src/sys/platform/vkernel/platform/copyio.c
  1.29      +57 -48    src/sys/platform/vkernel/platform/pmap.c
  1.31      +4 -4      src/sys/vm/swap_pager.c
  1.46      +40 -28    src/sys/vm/vm_fault.c
  1.33      +1 -1      src/sys/vm/vm_object.c
  1.38      +37 -7     src/sys/vm/vm_page.c
  1.28      +27 -26    src/sys/vm/vm_page.h
  1.35      +20 -10    src/sys/vm/vm_pageout.c
  1.42      +6 -1      src/sys/vm/vnode_pager.c


http://www.dragonflybsd.org/cvsweb/src/sys/kern/kern_slaballoc.c.diff?r1=1.51&r2=1.52&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/kern/kern_umtx.c.diff?r1=1.8&r2=1.9&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/kern/kern_xio.c.diff?r1=1.15&r2=1.16&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/kern/sys_pipe.c.diff?r1=1.46&r2=1.47&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/kern/vfs_bio.c.diff?r1=1.101&r2=1.102&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/platform/pc32/i386/pmap.c.diff?r1=1.83&r2=1.84&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/platform/pc32/i386/trap.c.diff?r1=1.111&r2=1.112&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/platform/vkernel/platform/copyio.c.diff?r1=1.8&r2=1.9&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/platform/vkernel/platform/pmap.c.diff?r1=1.28&r2=1.29&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vm/swap_pager.c.diff?r1=1.30&r2=1.31&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vm/vm_fault.c.diff?r1=1.45&r2=1.46&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vm/vm_object.c.diff?r1=1.32&r2=1.33&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vm/vm_page.c.diff?r1=1.37&r2=1.38&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vm/vm_page.h.diff?r1=1.27&r2=1.28&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vm/vm_pageout.c.diff?r1=1.34&r2=1.35&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vm/vnode_pager.c.diff?r1=1.41&r2=1.42&f=u



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