git: hammer2 hammer2 - Reformulate strategy code and direct I/O
dillon at crater.dragonflybsd.org
Tue Mar 20 15:25:12 PDT 2012
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(-)
DragonFly BSD source repository
More information about the Commits