hammer2 - Stabilization for cluster code, features
commit05a3c4ece2b2ce092b812a55cdfcb64bab9844cd
authorMatthew Dillon <dillon@apollo.backplane.com>
Fri, 10 Mar 2017 17:22:17 +0000 (10 09:22 -0800)
committerMatthew Dillon <dillon@apollo.backplane.com>
Mon, 27 Mar 2017 06:43:09 +0000 (26 23:43 -0700)
treee05bc3fc3b10291ace736b889af697eddadb3bc5
parent4d065447e4e4b0d4e3deab3d4205e30531b479b7
hammer2 - Stabilization for cluster code, features

* Start working on stabilizing cluster operations when two or more
  nodes are present for a PFS.

* Fix a race in the strategy write code when writing out a buffer.  The
  buffer can be retired by the frontend before all cluster entities have
  a chance to use it.  This is what we actualy want to have happen (we
  don't want a dead or slow SLAVE to hold-up front-end operations, for
  example).

  Fix this by verifying that the bp is good and, at least for now, copying
  its data to a temporary buffer.

  Note that while it is expected that SLAVEs can get out of sync here,
  the synchronization thread is intended to eventually get everything
  synched up.

  (we may address this later for SLAVEs that are in good working later).

* Refactor the XOP API a bit to make access to the temporary buffer easier.

* We no longer need to pass (bp) into the strategy write support routines.
  Pass the data buffer instead.

* When reconstituting a hammer2 support thread, make sure any flags
  left-over from the previous use have been cleared.  Fixes an issue
  where support threads go missing after repeated unmount/mount
  operations.

* Add the feature where a hammer2 mount can simply specify @LABEL.  If
  LABEL is already available, the mount code will find and mount it.
  This feature will eventually be used to make it easier to access
  networked H2 PFSs.

  Note that the hammer2 user must still issue base mounts (typically
  /dev/blah@LOCAL) for hammer2 to recognize hammer2 partitions.  Ultimately
  I may auto-scan available drives but for now I am not.

* Fix missing CFLAGS->KCFLAGS conversion in Makefile.

* Fix administrative thread signaling interactions, tsleep and wakeup
  addresses were not matched up properly.
sbin/mount_hammer2/mount_hammer2.c
sys/vfs/hammer2/Makefile
sys/vfs/hammer2/hammer2.h
sys/vfs/hammer2/hammer2_admin.c
sys/vfs/hammer2/hammer2_flush.c
sys/vfs/hammer2/hammer2_inode.c
sys/vfs/hammer2/hammer2_strategy.c
sys/vfs/hammer2/hammer2_vfsops.c
sys/vfs/hammer2/hammer2_xops.c