hammer2 - Implement I/O abstraction, fix deadlocks
authorMatthew Dillon <dillon@apollo.backplane.com>
Tue, 5 Nov 2013 17:34:08 +0000 (09:34 -0800)
committerMatthew Dillon <dillon@apollo.backplane.com>
Tue, 5 Nov 2013 17:39:13 +0000 (09:39 -0800)
commitfdf62707281e25c39a304fe47cdc9a46bc7f707f
treee91c1c7d0e9e75061f269ca9b30ad97f7f625187
parentfa5612e9997f089782423b01286143b8b8d6c1c7
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.
sys/vfs/hammer2/Makefile
sys/vfs/hammer2/TODO
sys/vfs/hammer2/hammer2.h
sys/vfs/hammer2/hammer2_chain.c
sys/vfs/hammer2/hammer2_flush.c
sys/vfs/hammer2/hammer2_freemap.c
sys/vfs/hammer2/hammer2_io.c [new file with mode: 0644]
sys/vfs/hammer2/hammer2_vfsops.c
sys/vfs/hammer2/hammer2_vnops.c