On Thu, 7 May 2020 09:28:29 +0000 "Bean Huo (beanhuo)" <beanhuo@xxxxxxxxxx> wrote: > Hi, Boris, Richard > > > > > > > A missing VID header plus good payload will cause UBI to stop > > > attaching since it violates the IO model. > > > > Sure, and that's not what we want to do anyway. We basically have 2 choices > > here: > > > > 1/ overwrite all pages starting from page 0 and ending at page 15. This will lead > > to ECC errors on already written pages, and 0-filled pages for others (unless we > > go for a raw write, in which case it might actually lead to ECC errors depending > > on the engine). > > No need for overwriting all pages. I overwrite EC and VID page just for prevent of > Erase power loss issue. But you hate this since FS-specific approach. > According to Richard's emails, we don't need to overwrite page0, overwrite page1 > Is enough. It's still UBI specific, so that's still a no-go for me. > > > 2/ track already written pages (by reading them first), and only writes those that > > have not been written yet. That means no ECC error in that case, and no > > corrupted EC/VID header as well. > > This is similar with my patch approach, but corrupted EC and VID headers. > > I have two proposals: > 1. rebase my patch, and copy one idea from Miquel's patch which records the programmed pages. > But page 1 should be overwrote considering the UBIFS re-erase mechanism. See above, and remember we do all that because Micron broke one of the base assumptions we have about NANDs => erase should reset all bits to 1 or return an error if that fails. > > 2. add a new padding structure in the MTD, which is used to filling empty page in the MTD. > And once FS layer detects this padding data, just ignore or trigger re-erase this block. Not sure what you mean by padding structure, but yes, filling empty pages with 0s and expecting the FS/wear-leveling layers to be happy with that would be ideal. But, as for the "erase only 2-page because this is where UBI puts its VID header" thing, that's a NACK on my side if you want to introduce a new pattern that's only understood by UBI/UBIFS. I really wish FS/wear-leveling layers were immune to corrupted/invalid LEBs they should no longer reference, but according to Richard, that's not that simple. ______________________________________________________ Linux MTD discussion mailing list http://lists.infradead.org/mailman/listinfo/linux-mtd/