[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: mkfs.jffs2 throws away my erase size
> That's right, but this small erasesizes give a lot of overhead in
> padding of blocks and garbage collection. So we use 64KB erase size
> in JFFS2 and erase 8 Blocks at once ,if the chip has 8K erase size.
Yep. The problem is that we must never write nodes which cross block
boundaries - so 8KiB blocks mean that we end up writing lots of pages out
which are _split_ between two erase blocks, hence wasting lots of space on
extra node headers and less efficient compression.
If during garbage collection you go from a state where all your nodes
fitted perfectly into the end of the block to a state where _every_ block
has a split node at the end of it, then even ignoring compression you
effectively lose <nrblocks> * hdrsize during that GC pass.
So far, the overly cautious five erase blocks that we keep spare for GC has
been enough to cover that. But the amount of space should actually be a
block or two + <nrblocks> * (hdrsize + <space lost to compression>, and by
keeping <nrblocks> low I'm trying to avoid having to think too hard about
that for a little while longer.
To unsubscribe from this list: send the line "unsubscribe jffs-dev" in
the body of a message to email@example.com