hammer2 - major simplification of algorithms part 1/many
authorMatthew Dillon <dillon@apollo.backplane.com>
Wed, 30 Jul 2014 07:17:29 +0000 (00:17 -0700)
committerMatthew Dillon <dillon@apollo.backplane.com>
Wed, 30 Jul 2014 07:17:29 +0000 (00:17 -0700)
commitda6f36f44bb9c76612e31b56cdfe4d787e53d61f
treee2a8c9d99aaeeb3f79b20e6a02e33cf9ac63e837
parent8fb66b817a1d23a278774e35eeec1390d1e7a13e
hammer2 - major simplification of algorithms part 1/many

* Huge simplification of in-memory data structures and algorithms.
  Remove delete-duplicate, ownerq (shadow copies), dbq, dbtree, and most of
  the xid lo/hi sequencing.  Remove all the complexities related to
  managing the above elements.  Net removal of ~1500 lines of code or so.

* Blockmap deletions are now handled by the frontend, so the backend doesn't
  need to deal with shadowed deletions.  This is still fairly optimal since
  insertions are still handled by the backend during flushes.  So for quick
  create/delete operations the blockmap is never even initialized which means
  that deletions don't have to remove anything.

* Cleanup buffer cache on file removal / last-close, but allow file delete
  to simply wipe out the inode.  Don't bother iterating its indirect blocks
  or data blocks on-media but use the flush code to get rid of any chains
  still cached.

* Buffer invalidation on permanent chain deletions for modified chains.

* Major items still TODO: flush interlocks and meta-data updates.
sys/vfs/hammer2/TODO
sys/vfs/hammer2/hammer2.h
sys/vfs/hammer2/hammer2_chain.c
sys/vfs/hammer2/hammer2_cluster.c
sys/vfs/hammer2/hammer2_flush.c
sys/vfs/hammer2/hammer2_freemap.c
sys/vfs/hammer2/hammer2_inode.c
sys/vfs/hammer2/hammer2_ioctl.c
sys/vfs/hammer2/hammer2_subr.c
sys/vfs/hammer2/hammer2_vfsops.c
sys/vfs/hammer2/hammer2_vnops.c