hammer2 - Major restructuring, part 4/several
* Add inumber -> inode structure tracking and lookup. This is needed to
ensure that only a single inode structure be used to track multiple
hardlinks to the same place.
* Continue stabilization. Remove modify_tid/delete_tid checks in the
flush code and (for now) only flush along the live path.
Refactor held chains when creating new chains. The creation of a new
chain can move around existing chains, causing the held chain to be
marked deleted.
When a hardlink is consolidated in a parent directory the source chain
used in the duplication is not deleted. Numerous chain->duplink
handling code was assuming that the source was always deleted. Fix
that.
* The shared inode lock now refactors ip->chain (the exclusive inode lock
already did so).
* Fix most ref-counting of the chain structure, fixing most of the memory
leakage issues on unmount.
* There are still some issues with small files not inheriting their data
on duplication. cpdup /usr/share works but a significant number of
small files lose their data references on re-mount.