On Thu, 2012-05-10 at 10:33 +0200, Richard Weinberger wrote: > First of all, yes it's fully backward-compatible. It uses two new internal volume IDs > with compat = UBI_COMPAT_DELETE. > Old UBI implementations will delete the checkpoint and continue with scanning... OK. BTW, these patches do not compile when the fastmap is disabled. I hope you'll just kill the ifdefs in the next revision and this problem will go away. > Regarding design, ubi_wl_get_peb() currently offers three types of data types. > UBI_LONGTERM, UBI_SHORTTERM and UBI_UNKNOWN. Do we really need them? > Checkpointing has a pool of unknown PEBs. This PEBs have to be scanned while attaching. > For now I had to create three pools (for UBI_LONGTERM, UBI_SHORTTERM and UBI_UNKNOWN). > This makes the whole thing complexer than needed. > It introduces also some nasty corner cases. But AFAIR we already agreed that we kill these, no? I thought you'll send a separate patch for this. We do not need this feature and to our shame it even was not working and there was a bug found very recently. > To make the review easier for you: > The most critical code path is scan_pool() -> process_pool_seb() -> update_vol(). > It searches within a pool for PEBs which are no longer empty and scans them. > After that it updates the corresponding volume. OK, thanks. > ubi_update_checkpoint() is also very important because it has to find > unused PEBs at the beginning of the MTD to place the super block. OK. > Okay, got your point. > I think "fastmap" is a good name because I can also use it within the code. > So, while reviewing the code please keep s/checkpoint/fastmap/g and s/cp/fm/g in mind. ;-) OK. -- Best Regards, Artem Bityutskiy