[Tux3] Comparison to Hammer fs design

Daniel Phillips phillips at phunq.net
Sun Jul 27 23:39:56 PDT 2008


On Sunday 27 July 2008 14:31, Matthew Dillon wrote:
> :A versioned extent:
> :
> :   struct extent { unsigned version:10, count:6, block:24; };
> :
> :Directory format to index the extent within a leaf:
> :
> :   struct entry { unsigned loglo:24, offset:8 };
> :   struct group { unsigned loghi:24, count:8 };
> :
> :Leaf layout (abridged):
> :
> :   struct leaf { unsigned groups; struct group[]; struct entry[]; struct extent[] };
> :...
> :See, I am really obsessive when it comes to saving bits.  None of these
> :compression hacks costs a lot of code or has a big chance of hiding a
> :bug, because the extra boundary conditions are strictly local.
>      
>     Man, those are insanely small structures.  Watch out for the cpu
>     and in-kernel-memory tracking overhead.

And there is a mistake, it should be:

-   struct extent { unsigned version:10, count:6, block:24; };
+   struct extent { unsigned version:10, count:6, block:48; };

The compression effort was about finding a way to represent 48 bits of
logical address for each extent and to avoid repeating logical addresses
for successive extents starting at the same logical address, using 32
bits instead of the 64 bits currently used by the ddsnap leaf format,
for a 33% overall improvement in leaf capacity.

Regards,

Daniel

_______________________________________________
Tux3 mailing list
Tux3 at tux3.org
http://tux3.org/cgi-bin/mailman/listinfo/tux3



More information about the Tux3 mailing list