Re: [PATCH v6 12/15] ubi: fastmap: Add all fastmap pebs into 'ai->fastmap' when fm->used_blocks>=2

From: Zhihao Cheng
Date: Tue Jan 11 2022 - 06:44:56 EST


Hi Richard,
In ubi_wl_init() there is another corner case documented:
/*
* The fastmap update code might not find a free PEB for
* writing the fastmap anchor to and then reuses the
* current fastmap anchor PEB. When this PEB gets erased
* and a power cut happens before it is written again we
* must make sure that the fastmap attach code doesn't
* find any outdated fastmap anchors, hence we erase the
* outdated fastmap anchor PEBs synchronously here.
*/
if (aeb->vol_id == UBI_FM_SB_VOLUME_ID)
sync = true;

So ubi_wl_init() makes sure that all old fastmap anchors get erased before UBI
starts to operate. With your change this is no longer satisfied
I seem to understand the another case. But I'm still confused that why outdated fastmap PEBs cannot be erased. When UBI comes to this point, it means UBI is attached by **full scanning mode**, scan_fast() returns two values:
UBI_NO_FASTMAP: scan all pebs from pnum UBI_FM_MAX_START, ai is assigned with scan_ai, at last, all fastmap pebs are added into 'ai->fastmap'
UBI_BAD_FASTMAP: scan all pebs from pnum 0, all fastmap pebs are added into 'ai->fastmap'