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