DragonFly BSD
DragonFly commits List (threaded) for 2010-10
[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]

git: HAMMER VFS - Fix deadlock during read-only HAMMER mount


From: Matthew Dillon <dillon@xxxxxxxxxxxxxxxxxxxxxxx>
Date: Tue, 5 Oct 2010 11:51:20 -0700 (PDT)

commit 6494bbf55217ae4f3167d3242590ee4136819602
Author: Matthew Dillon <dillon@apollo.backplane.com>
Date:   Tue Oct 5 09:36:42 2010 -0700

    HAMMER VFS - Fix deadlock during read-only HAMMER mount
    
    * HAMMER UNDOs are addressed using zone-1 (HAMMER_ZONE_RAW_VOLUME) and
      zone-2 (HAMMER_ZONE_RAW_BUFFER) data offsets.  Normal filesystem
      operations may use zone references which are incompatible with the UNDO
      data references.  That is, they may use a different zone accessing
      the same physical disk offset.
    
      Normally when the UNDO is run the modified buffers are flushed to disk
      and the buffers are destroyed before normal filesystem operations begin.
      Thus it isn't a problem for normal R+W mounts.
    
    * Read-only mounts are a different story.  The modified buffers from the
      undo are left in core memory (they cannot be flushed yet because the
      mount is read-only).  The incompatible zones cause the HAMMER buffer
      system to lose track of related locked buffer cache buffers and can lead
      to a deadlock.
    
    * Fix this by explicitly checking for a read-only mount and doing a
      secondary lookup using the RAW zone for certain selected zones.
    
    Reported-by: Matthias Schmidt <matthias@dragonflybsd.org>

Summary of changes:
 sys/vfs/hammer/hammer_ondisk.c |   19 +++++++++++++++++++
 1 files changed, 19 insertions(+), 0 deletions(-)

http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/6494bbf55217ae4f3167d3242590ee4136819602


-- 
DragonFly BSD source repository



[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]