git: kernel - split the pbuf subsystem into two (kva and non-kva)

Matthew Dillon dillon at crater.dragonflybsd.org
Sun Aug 15 12:02:58 PDT 2010


commit 9a82e536c033562735802be193d648f04ed8bf6d
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date:   Sun Aug 15 11:57:53 2010 -0700

    kernel - split the pbuf subsystem into two (kva and non-kva)
    
    Most pbufs do not require kva reservations.  Split the API to provide
    pbufs without kva reservations out of a much larger pool of pbufs, fixing
    deadlock issues with the DM subsystem.
    
    Note in particular that the hammer reblocker can eat upwards of 5000 pbufs
    when operating on multi-layered DM-based storage, which blows away the
    256 pbufs normally available with kva reservations that the old API had.
    
    * Getpbuf() / trypbuf() now return pbufs without KVA reservations.
    
    * Add getpbuf_kva() and trypbuf_kva() to get pbufs with KVA reservations.
    
    * Fixes pbuf deadlocks in the low level I/O subsystem, particularly DM
      crypt, stripe, and mirror.

Summary of changes:
 sys/bus/cam/cam_periph.c  |    2 +-
 sys/kern/kern_dsched.c    |    9 +++
 sys/kern/kern_physio.c    |    2 +-
 sys/kern/vfs_aio.c        |    2 +-
 sys/kern/vfs_bio.c        |    2 +
 sys/kern/vfs_cluster.c    |    4 +-
 sys/sys/buf.h             |    2 +
 sys/vfs/ufs/ffs_rawread.c |    4 +-
 sys/vm/swap_pager.c       |    6 +-
 sys/vm/vm_pager.c         |  149 ++++++++++++++++++++++++++++++++++++++------
 10 files changed, 151 insertions(+), 31 deletions(-)

http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/9a82e536c033562735802be193d648f04ed8bf6d


-- 
DragonFly BSD source repository





More information about the Commits mailing list