Author: Charles Manning Date: To: yaffs Subject: [Yaffs] Checkpointing changes, easier to use.
Hi yaffsers
One problem that was identified with the original checkpointing was that it
requires the use of a partitioning scheme to break off a chunk of storage for
the checkpoint data. This is fiddly (needs setting extra parameters), is
wasteful (need to cut off a bigger area than you typically need), and various
other issues.
Thus, I spent some of the last week or so changing the checkpoint allocation
to a "non-partitioned" mechanism using blocks in the main data area. This
does away with the above problem but adds a very slight overhead to seach for
the checkpoint data. This overhead is extremely small in my testing.
The speedup is pretty impressive. So far I have two data points. If anyone
else can provide some info I'd like to see it:
200MHz ARM with 128MB flash, almost full with 2k files.
Mount with no checkpoint: ~4 secs
Mount with partitioned checkpoint: ~0.25 secs
Mount with non-partitioned checkpoint: ~0.3 secs
180MHz ARM device with 2GBytes flash and hot-rodded NAND driver
Mount with no checkpointing: many tens of seconds
Mount with partitioned checkpoint: sub second
Mount with non-partitioned checkpoiint: ... we'll here soon.