git: hammer2 hammer2 - Config notifications, cleanup HAMMER2 VFS API

Matthew Dillon dillon at crater.dragonflybsd.org
Fri Aug 10 20:56:35 PDT 2012


commit 1a34728c11e151b7dd897784899b5a763b3b8fe8
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date:   Fri Aug 10 20:46:51 2012 -0700

    hammer2 - Config notifications, cleanup HAMMER2 VFS API
    
    * A hammer2 volume has a PERSISTENT table of 256 entries in the media
      volume header for specifying how the cluster connects together.  Various
      hammer2 directives can list, add, or remove entries from this table.
    
      This table will be used for several different aspects of the filesystem
      and one of them is to tell the userland hammer2 service daemon what
      other machines to connect to.  That is, we want the cluster configuration
      to be persistently stored as part of a HAMMER2 filesystem.
    
    * Add a notification message from the kernel to the daemon whenever this
      table id modified.  The kernel will also spam the contents of the table
      to the daemon when it first connects to the daemon.
    
      The service daemon tracks the table and will connect to (or disconnect
      from) the listed targets in real time.  In addition, the service daemon
      will retry a failed connection (or failed DNS lookup) forever as long
      as the entry is intact.  The idea being that a machine in the cluster
      will recover once transitory failures are resolved.
    
      This is a bit messy at the moment as two pthreads have to be created for
      each connection... one to handle connect, disconnect, and retry operations
      and the other to handle the actual message stream over the connection.
    
    * Clean up the HAMMER2 VFS code's messaging APIs a bit, bringing them
      closer to the hammer2 userland APIs (though of course there will
      always be major differences).
    
    * Adjust the hammer2 VFS to try to clean up open transactional states
      when a socket failure occurs before proceeding with a umount, so the
      related functional states can be triggered and cleaned up.
    
    * Added an ioctl to reconnect a hammer2 mount to the userland hammer2
      service daemon (not yet used).  This will allow us to kill and restart
      the daemon and have it recover the communications pipes between itself
      and the HAMMER2 mounts in the kernel.

Summary of changes:
 sbin/hammer2/cmd_remote.c         |    2 +-
 sbin/hammer2/msg.c                |    3 +
 sbin/hammer2/msg_lnk.c            |  261 +++++++++++++++++++++++++++++++++----
 sbin/hammer2/network.h            |   10 +-
 sys/vfs/hammer2/hammer2.h         |   18 ++-
 sys/vfs/hammer2/hammer2_ioctl.c   |   37 +++++-
 sys/vfs/hammer2/hammer2_ioctl.h   |   10 ++-
 sys/vfs/hammer2/hammer2_msg.c     |   78 ++++++-----
 sys/vfs/hammer2/hammer2_network.h |   33 ++++-
 sys/vfs/hammer2/hammer2_vfsops.c  |  151 ++++++++++++++++++++--
 10 files changed, 511 insertions(+), 92 deletions(-)

http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/1a34728c11e151b7dd897784899b5a763b3b8fe8


-- 
DragonFly BSD source repository





More information about the Commits mailing list