hammer2 - Implement variable-sized indirect blocks, clustered reads
authorMatthew Dillon <dillon@apollo.backplane.com>
Tue, 20 Mar 2012 01:34:45 +0000 (18:34 -0700)
committerMatthew Dillon <dillon@apollo.backplane.com>
Tue, 20 Mar 2012 01:34:45 +0000 (18:34 -0700)
commit6ba3b984736974a60373ed1610426443c5be4266
tree2fde77d1f402c71b034c2fd4ede0d9e4e61318d5
parent2f2a0f3eebab1bae551a92e2915172be279505d3
hammer2 - Implement variable-sized indirect blocks, clustered reads

* Implement 4K indirect blocks as well as 64K indirect blocks

* Do not flush the chains for VOP_FSYNC() calls issued from 'sync' or
  from the syncer, only flush the chains when called from fsync().

  This solves a fairly nasty repeated copy-on-write ops on the same block
  in the topology.

* Issue appropriate cluster_read() calls instead of bread().

* Implement forward-looking bmap across multiple blocks instead of just one.
sys/vfs/hammer2/hammer2.h
sys/vfs/hammer2/hammer2_chain.c
sys/vfs/hammer2/hammer2_disk.h
sys/vfs/hammer2/hammer2_freemap.c
sys/vfs/hammer2/hammer2_inode.c
sys/vfs/hammer2/hammer2_subr.c
sys/vfs/hammer2/hammer2_vnops.c