HAMMER 58A/Many: Mirroring support part 1
commit5de0c0e50ad44269de9c756b21c5106f503d6df7
authorMatthew Dillon <dillon@dragonflybsd.org>
Mon, 23 Jun 2008 21:42:48 +0000 (23 21:42 +0000)
committerMatthew Dillon <dillon@dragonflybsd.org>
Mon, 23 Jun 2008 21:42:48 +0000 (23 21:42 +0000)
tree6deca93d403aa9d70916bbfabec05371222f08ad
parentb5aaba7fa11d32843096458fe5c0188ba7e49b26
HAMMER 58A/Many: Mirroring support part 1

* Implement mastership domains for transaction ids to support multi-master
  mirroring and implement mastership selection at mount time.

  Mastership domains work by having the low 4 bits of the transaction id
  specify the mastership id (0-15).  This allows the mirroring code to
  distinguish between changes originating on a particular node and changes
  mirrored from another node.

  This also ensures that filesystem objects can be created on the mirrors
  in parallel without resulting in conflicitng object ids.

* Eliminate time-based TID generation.  Just increment the TID as
  appropriate.

  NOTE: Portions of this change may be reverted at a later time depending
  on how the mirroring implementation proceeds.

* Minor code cleanups.
sys/vfs/hammer/hammer.h
sys/vfs/hammer/hammer_btree.h
sys/vfs/hammer/hammer_disk.h
sys/vfs/hammer/hammer_inode.c
sys/vfs/hammer/hammer_ioctl.h
sys/vfs/hammer/hammer_mount.h
sys/vfs/hammer/hammer_subs.c
sys/vfs/hammer/hammer_transaction.c
sys/vfs/hammer/hammer_vfsops.c