Re: HAMMER update 10-Feb-2008

Previous thread: Re: HAMMER update 06-Feb-2008 by Matthew Dillon on Sunday, February 10, 2008 - 10:43 pm. (1 message)

Next thread: Re: HAMMER update 10-Feb-2008 by Matthew Dillon on Sunday, February 10, 2008 - 11:27 pm. (1 message)
To: <kernel@...>
Date: Sunday, February 10, 2008 - 11:21 pm

The three major pieces didn't integrate together well enough. It's
really that simple. Individually they were great. Together they
were not.

* Small (64MB) clusters with localized B-Trees.

Plus: Recovering the filesystem from a massive failure not difficult.

Minus: Data and records cannot roam about, they have to be placed in
the particular cluster covering their key.

* Fine-grained A-list allocator.

Plus: Fine grained allocation and freeing.

Minus: It didn't help the problem of dead space in the cluster, or
for that matter help the issue of dealing with full clusters,
because particular records and data had to go into particular
clusters.

* Per-cluster recovery mechanic.

Plus: Very easy to recover a fixed portion of the B-Tree.

Minus: Couldn't cross cluster boundaries. Couldn't deal with
transactions that crossed cluster boundaries. Requires strict
write ordering and for clusters to be marked 'open' (virtually
synchronously it turned out) to even detect that recovery was needed.

I still would have needed to implement an UNDO FIFO on top of
everything else, and despite the per-buffer locality of reference
the model had it still made an excessive number of little modifications
all over the buffer that would have made the UNDO FIFO rather
expensive.

So I had a fine-grained allocator that couldn't contribute to solving
the issue of what to do when clusters were too full or too empty, a
recovery mechanic that couldn't guarantee consistency for transactions
which spanned more then one cluster, and clusters that wound up being
too small (64MB) and caused management I/O to become too dispersed.

Add to that the fact that the model required an excessive number of
special cases in-code. Do a cvs diff just of the B-Tree and cursor
code from before I ripped it out to now and you will see the new code...

Previous thread: Re: HAMMER update 06-Feb-2008 by Matthew Dillon on Sunday, February 10, 2008 - 10:43 pm. (1 message)

Next thread: Re: HAMMER update 10-Feb-2008 by Matthew Dillon on Sunday, February 10, 2008 - 11:27 pm. (1 message)