hammer2 - Reformulate strategy code and direct I/O
authorMatthew Dillon <dillon@apollo.backplane.com>
Tue, 20 Mar 2012 22:12:02 +0000 (15:12 -0700)
committerMatthew Dillon <dillon@apollo.backplane.com>
Tue, 20 Mar 2012 22:24:13 +0000 (15:24 -0700)
commit8cce658d3de92fd35f4bb442991dfba1bc809b4e
tree235ffa926b192d27addb5300b9390403905fa262
parentc5e2b162d66af766c43f0408e8577e1d31e8cb17
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.
sys/vfs/hammer2/Makefile
sys/vfs/hammer2/TODO
sys/vfs/hammer2/hammer2.h
sys/vfs/hammer2/hammer2_chain.c
sys/vfs/hammer2/hammer2_subr.c
sys/vfs/hammer2/hammer2_vnops.c