cvs commit: src/sys/vfs/hammer hammer.h hammer_flusher.c hammer_inode.c hammer_mirror.c hammer_object.c hammer_prune.c hammer_reblock.c hammer_recover.c hammer_undo.c hammer_vfsops.c

Matthew Dillon dillon at crater.dragonflybsd.org
Fri Jun 27 13:58:35 PDT 2008


dillon      2008/06/27 13:57:00 PDT

DragonFly src repository

  Modified files:
    sys/vfs/hammer       hammer.h hammer_flusher.c hammer_inode.c 
                         hammer_mirror.c hammer_object.c 
                         hammer_prune.c hammer_reblock.c 
                         hammer_recover.c hammer_undo.c 
                         hammer_vfsops.c 
  Log:
  HAMMER 59B/Many: Stabilization pass - fixes for large file issues
  
  * The flusher was trying to flush whole inodes in one pass.  If a large
    (in the 100GB range) file is deleted or truncated this single pass could
    blow out the UNDO FIFO and cause a panic.
  
    Detect the case and only do a partial flush, then requeue the inode to
    the next flush group and reflush.  This continues until the file is
    completely eradicated or the truncation has completed.
  
  * In addition, the same flusher issue could exhaust the kernel's buffer
    cache with unflushable dirty buffers.  The same fix applies.
  
  * The UNDO FIFO code was calculating available space based on the next
    flush's start position instead of the last flush's start position,
    allowing areas of the UNDO FIFO still subject to a recovery pass
    (if a crash were to occur right then) to be overwritten too soon.
  
  * The pruner and reblocker were doing insufficient UNDO FIFO space checks
    and could blow out the UNDO FIFO.  Fixed.
  
  Revision  Changes    Path
  1.94      +7 -4      src/sys/vfs/hammer/hammer.h
  1.30      +64 -14    src/sys/vfs/hammer/hammer_flusher.c
  1.86      +62 -9     src/sys/vfs/hammer/hammer_inode.c
  1.3       +8 -0      src/sys/vfs/hammer/hammer_mirror.c
  1.77      +22 -2     src/sys/vfs/hammer/hammer_object.c
  1.9       +51 -40    src/sys/vfs/hammer/hammer_prune.c
  1.22      +8 -4      src/sys/vfs/hammer/hammer_reblock.c
  1.26      +21 -3     src/sys/vfs/hammer/hammer_recover.c
  1.18      +23 -13    src/sys/vfs/hammer/hammer_undo.c
  1.55      +1 -1      src/sys/vfs/hammer/hammer_vfsops.c


http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer.h.diff?r1=1.93&r2=1.94&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_flusher.c.diff?r1=1.29&r2=1.30&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_inode.c.diff?r1=1.85&r2=1.86&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_mirror.c.diff?r1=1.2&r2=1.3&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_object.c.diff?r1=1.76&r2=1.77&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_prune.c.diff?r1=1.8&r2=1.9&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_reblock.c.diff?r1=1.21&r2=1.22&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_recover.c.diff?r1=1.25&r2=1.26&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_undo.c.diff?r1=1.17&r2=1.18&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_vfsops.c.diff?r1=1.54&r2=1.55&f=u





More information about the Commits mailing list