git: hammer2 hammer2 - Reformulate strategy code and direct I/O

Matthew Dillon dillon at crater.dragonflybsd.org
Tue Mar 20 15:25:12 PDT 2012


commit 8cce658d3de92fd35f4bb442991dfba1bc809b4e
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date:   Tue Mar 20 15:12:02 2012 -0700

    hammer2 - Reformulate strategy code and direct I/O
    
    * Use variable block sizes for both logical and physical buffers such
      that the logical buffer matches the physical buffer.
    
    * Change the file data layout to use 64K blocks for all bulk data fully
      enclosed in the block, with a single variable-length block straddling
      the file EOF sized 1K - 64K in powers of 2.  The inode's 512 bytes of
      embedded data is still implemented for file sizes <= 512 bytes.
    
    * Implement direct IO for both reading and writing.
    
    * Reformulate the strategy write code such that bio2.bio_offset is always
      pre-calculated, allowing the strategy code to issue the I/O without
      requiring any further filesystem interactions.
    
    * Fixes numerous deadlocks.

Summary of changes:
 sys/vfs/hammer2/Makefile        |    1 +
 sys/vfs/hammer2/TODO            |    7 +
 sys/vfs/hammer2/hammer2.h       |   14 +-
 sys/vfs/hammer2/hammer2_chain.c |  549 +++++++++++++++++------------
 sys/vfs/hammer2/hammer2_subr.c  |   21 ++
 sys/vfs/hammer2/hammer2_vnops.c |  751 ++++++++++++++++++++++-----------------
 6 files changed, 785 insertions(+), 558 deletions(-)

http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/8cce658d3de92fd35f4bb442991dfba1bc809b4e


-- 
DragonFly BSD source repository





More information about the Commits mailing list