git: hammer2 - Cleanup error paths

Matthew Dillon dillon at crater.dragonflybsd.org
Mon Mar 30 21:57:18 PDT 2015


commit 23c7c7dd4e59da5bdb6ffa7fe2074c5b7ffe5e4f
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date:   Mon Mar 30 21:50:14 2015 -0700

    hammer2 - Cleanup error paths
    
    * Do not try to return I/O error status from hammer2_chain_lock() or
      hammer2_cluster_lock().  This is just asking for trouble by depending
      on callers to keep track of state in local variables.
    
      Instead, accumulate error status in chain->error and cluster->error.
      Adjust cluster->error based on focus.  Code does not yet check this field.
    
    * Do not NULL-out cluster array entries on I/O errors or if unavailable.
      Leave the chain structure intact.
    
      This makes the cluster's array-of-chains more deterministic and will
      allow upcoming code to use errored chains as a placeholder for blocking
      operations.
    
    * When locking a cluster, attempt to select alternative masters or slaves
      for our focus if the chain we would have otherwised used is errored.
    
    * Add inlines to test whether a chain or cluster can be read or written
      (writing still also requires calling *_modify()).
    
    * Document leaving inode->pfs_nmasters set to 0 for new masters.
    
    * Adjust hammer2 pfs-list to display whether a master is a normal
      master or a snapshot.

Summary of changes:
 sbin/hammer2/cmd_pfs.c             |  16 +-
 sbin/newfs_hammer2/newfs_hammer2.c |   5 +
 sys/vfs/hammer2/hammer2.h          |  64 ++++++-
 sys/vfs/hammer2/hammer2_chain.c    |  76 ++++----
 sys/vfs/hammer2/hammer2_cluster.c  | 368 ++++++++-----------------------------
 sys/vfs/hammer2/hammer2_vfsops.c   |   4 +-
 6 files changed, 191 insertions(+), 342 deletions(-)

http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/23c7c7dd4e59da5bdb6ffa7fe2074c5b7ffe5e4f


-- 
DragonFly BSD source repository



More information about the Commits mailing list