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

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


From: Matthew Dillon <dillon@xxxxxxxxxxxxxxxxxxxxxxx>
Date: Fri, 27 Jun 2008 13:57:00 -0700 (PDT)

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



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