DragonFly BSD
DragonFly bugs List (threaded) for 2011-02
[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]

Re: [issue1984] hammer mount fails after crash - HAMMER: FIFO record bad head signature ..


From: Matthew Dillon <dillon@xxxxxxxxxxxxxxxxxxxx>
Date: Wed, 9 Feb 2011 19:29:27 -0800 (PST)

:Thomas Nikolajsen <thomas.nikolajsen@mail.dk> added the comment:
:
:The file system is 20GB.
:
:I know this is rather small for a HAMMER FS.
:It is just a root file system, for a x86_64 setup,
:had to 'steal' from swap partition (still have 12GB for 8 GB mem)
:it is not full at all.
:Disklabel was already setup with i386 DragonFly system;
:btw setting up dual boot i386/x86_64 works out quite easily w/ dloader ;-)
:
:show-undo output is put on leaf:
:http://leaf.dragonflybsd.org/~thomas/issue1984
:
:Feb  9 21:58:32 octopus kernel: HAMMER: Warning: UNDO area too small!
:Feb  9 21:58:32 octopus kernel: HAMMER: Warning: UNDO area too small!
:..
:priority:  -> bug

    Ok, I'm fairly certain that it is an UNDO/REDO FIFO overflow due to
    the mechanics of how HAMMER operates when this warning is active.

    Right now when HAMMER is forced to do mini-flushes inside the main
    flush due to the UNDO area being too small it still doesn't flush
    the volume header until the more encompassing meta-flush is done.
    I'm certain this is causing the FIFO to overflow and blowing up
    the recovery code.

    A 20GB HAMMER filesystem only reserves a 100MB UNDO/REDO FIFO.  Even
    a 200GB HAMMER filesystem only reserves a 232MB UNDO/REDO FIFO.  The
    real problem here is that the required size for the UNDO/REDO FIFO
    is related more to the system's ram and buffer cache configuration
    than to the filesystem size.  I think I'm going to have to change
    newfs_hammer to create a minimum 500MB UNDO/REDO FIFO.

    I will also have to change the flush mechanics to avoid the mini-flushes
    in the first place.

					-Matt
					Matthew Dillon 
					<dillon@backplane.com>



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