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