git: hammer2 - Implement I/O abstraction, fix deadlocks
Matthew Dillon
dillon at crater.dragonflybsd.org
Tue Nov 5 09:39:41 PST 2013
commit fdf62707281e25c39a304fe47cdc9a46bc7f707f
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date: Tue Nov 5 09:34:08 2013 -0800
hammer2 - Implement I/O abstraction, fix deadlocks
* Implement a device buffer I/O abstraction, struct hammer2_io. This
abstraction allows multiple chains using smaller allocations to be
locked concurrently sharing the same (larger) underlying buffer cache
buffer.
* Does a very good job abstracting device block size selection from
logical block size selection.
* The new implementation also abstracts asynchronous callbacks quite well.
* Not currently all that SMP friendly.
* Fixes buf/bio deadlocks under heavy loads.
Summary of changes:
sys/vfs/hammer2/Makefile | 2 +-
sys/vfs/hammer2/TODO | 2 +
sys/vfs/hammer2/hammer2.h | 100 ++++++--
sys/vfs/hammer2/hammer2_chain.c | 320 +++++-------------------
sys/vfs/hammer2/hammer2_flush.c | 97 +++-----
sys/vfs/hammer2/hammer2_freemap.c | 17 +-
sys/vfs/hammer2/hammer2_io.c | 510 ++++++++++++++++++++++++++++++++++++++
sys/vfs/hammer2/hammer2_vfsops.c | 114 ++++-----
sys/vfs/hammer2/hammer2_vnops.c | 162 ++++++------
9 files changed, 818 insertions(+), 506 deletions(-)
create mode 100644 sys/vfs/hammer2/hammer2_io.c
http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/fdf62707281e25c39a304fe47cdc9a46bc7f707f
--
DragonFly BSD source repository
More information about the Commits
mailing list