UBI: ignore/overwrite old data/PEBs after flashing

Rafał Miłecki zajec5 at gmail.com
Thu Oct 16 04:17:44 PDT 2014


On 16 October 2014 12:40, Artem Bityutskiy <dedekind1 at gmail.com> wrote:
> On Thu, 2014-10-16 at 12:29 +0200, Rafał Miłecki wrote:
>> On 16 October 2014 12:09, Artem Bityutskiy <dedekind1 at gmail.com> wrote:
>> > Then the solution would be to pad your image with 0xFFs and write it.
>> > UBI will notice PEBs which do not contain UBI headers and will erase
>> > them in background.
>>
>> That would be trivial trick to implement, however it's far from being
>> user friendly. Most devices have 128 MiB flash and our firmware
>> (OpenWrt) is only ~4 MiB big. It would be a waste of
>> space/bandwidth/time to provide firmware images padded with over 120
>> MiB of 0xFF.
>
> Right, this is a work-around, and it is OK for a work-around to be
> suboptimal, generally speaking.
>
> If you want a more optimal work-around, it will be more intrusive. One
> idea would be to can create a small specialized kernel driver which will
> start before UBI and clean-up your flash: erase PEBs you specify it.
> Something like 'mtd/flashcleaner.ko'.

I'm not sure if something like this is possible. My driver would need
to have a very good understanding of UBI to know which PEBs to leave
and which to clean. I would need to find out which PEBs were recently
flashed (are part of the just-installed firmware) and which are left
from the previous installation.


> May be you can invent an nice UBI feature to do this, but so far I feel
> like a separate driver should be a better way to go.

-- 
Rafał



More information about the linux-mtd mailing list