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