git: hammer2 - Stabilization for cluster code, features

Matthew Dillon dillon at crater.dragonflybsd.org
Sun Mar 26 23:43:15 PDT 2017


commit 05a3c4ece2b2ce092b812a55cdfcb64bab9844cd
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date:   Fri Mar 10 09:22:17 2017 -0800

    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 at 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.

Summary of changes:
 sbin/mount_hammer2/mount_hammer2.c |   2 +-
 sys/vfs/hammer2/Makefile           |   4 +-
 sys/vfs/hammer2/hammer2.h          |  35 +++++----
 sys/vfs/hammer2/hammer2_admin.c    |  52 ++++++++-----
 sys/vfs/hammer2/hammer2_flush.c    |   8 +-
 sys/vfs/hammer2/hammer2_inode.c    |  41 +++++-----
 sys/vfs/hammer2/hammer2_strategy.c | 153 +++++++++++++++++++++++--------------
 sys/vfs/hammer2/hammer2_vfsops.c   |  84 +++++++++++++++-----
 sys/vfs/hammer2/hammer2_xops.c     |  78 +++++++++----------
 9 files changed, 276 insertions(+), 181 deletions(-)

http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/05a3c4ece2b2ce092b812a55cdfcb64bab9844cd


-- 
DragonFly BSD source repository



More information about the Commits mailing list