hammer2 - create new branch, sync working trees from dillon & vsrinivas

* hammer2 branch in main repo created.  This branch will loosely track
  master with the additional hammer2 bits added.  Any changes that have to
  be made to non-hammer2 bits will be done in master and merged into this
  branch instead of the other way around.

* Merge dillon's and vsrinivas's work, placing the files in the appropriate
  places in the source tree.

* Initial whitespace cleanup so git doesn't complain

* Major adjustments to hammer2_disk.h taking into account all discussions
  between dillon and vsrinivas to date relative to the original design.

  (1) The media blockref was expanded from 32 to 64 bytes in order to
      accomodate up to a 192 bit cryptographic hash.

  (2) The new blockref will also support multiple crc/hash/check algorithms.

  (3) The new blockref will also support multiple block compression algorithms.

  (4) The new blockref supports a full 64-bit key as well as a key mask,
      and an explicit type field instead of overloading the functionality
      of data_off's 6-bit physical storage size radix.

  (5) The fully associative blockset was reduced from 16 to 8 blockref
      entries.

  (6) Support for multiple copies is possible within a fully associative
      blockset (also needed new fields in the new blockref).

  (7) The media volume structure has been fleshed out to support the new
      features.

  (8) The volume structure now also contains fields for configuring device
      paths for up to 8 copies, a fully associative blockset pointint to
      the root inode, and multiple sub-block crcs.
hammer2 - More media format spec work, add DESIGN document

* Add additional fields to support up to 256 configured copyid's in the
  volume header.  Directory subtree copies are still limited to 8 but this
  will allow us to implement many different copy sets for different
  sub-trees.

* Add a flags field to the blockref for synchronization and desynchronization
  flags.

* Rename allocmap to freemap and add a freemap_version field which is
  separate from the global version field, which will allow a HAMMER2
  volume to at least be mounted read-only on older versions of HAMMER2
  if the only difference is in the freemap handling algorithm.

* Add the DESIGN document.
hammer2 - add titling to DESIGN document

* Add titling to the DESIGN document
hammer2 - Adjust media fields

* Expand the reserved area from 2MB to 4MB per every 2GB.  Just in case.

* Add definitions for compress and check code classes.

* Other misc adjustments.
hammer2 - Initial newfs_hammer2 implementation

* This is a rough start for the newfs_hammer2 implementation.

* Creates the volume header, super-root inode, and named root inode.
Merge branch 'master' of ssh://crater.dragonflybsd.org/repository/git/dragonfly into hammer2
hammer2 -- Compile fixes.
hammer2 -- Compile fixes #2.

Disable code reading volhdr for a bit; allows mounting w/o panic.
hammer2 -- Cleanup volume header readout a bit.
Merge branches 'hammer2' and 'master' of ssh://crater.dragonflybsd.org/repository/git/dragonfly into hammer2
hammer2 -- Remove tmpfs scaffold.

tmpfs structures were used in HAMMER2 development to help get a
mountable object, but were no longer needed.
hammer2 -- Flesh out _mount vfsops, add mountctl.
Merge branches 'hammer2' and 'master' of ssh://crater.dragonflybsd.org/repository/git/dragonfly into hammer2
hammer2 - code cleanup, fix kldload issue

* More code cleanups.   Formatting, add missing copyright notices,
  staticization, etc.

* Fix a missing symbol that was renamed.
hammer2 - complain if the hammer2 kld module isn't loaded

* Complain if the hammer2 kld module isn't loaded instead of exiting
  silently.
hammer2 - cleanup, kldload, mount, iget/ifree and other stuff.

* Make kldload and kldunload run cleanly

* Make mount/umount run cleanly.  Properly deallocate the root inode and
  close the underlying device.

* Write iget/ifree and properly deal with deadlocks between reclaim and
  iget.

* Remove the hm_ prefix for the hammer2_mount structure.

* Use 'hammer2_xxx_t' instead of 'struct hammer2_xxx' in many cases.

* Other general cleanups.
hammer2 - followup cleanup

* followup cleanup to last commit
Correct assertion in hammer2_freei.
Read volume header.
Merge branches 'hammer2' and 'master' of ssh://crater.dragonflybsd.org/repository/git/dragonfly into hammer2