[PATCH] cmd: sf: Support unaligned flash updates with 'sf update'

Michael Walle michael at walle.cc
Thu Sep 30 23:08:22 CEST 2021


Am 2021-09-30 19:17, schrieb Frieder Schrempf:
> On 30.09.21 18:35, Michael Walle wrote:
>> Am 2021-09-30 18:19, schrieb Frieder Schrempf:
>>> In order to support unaligned updates, we simply read the first full
>>> block and check only the requested part of the block for changes. If
>>> necessary, the block is erased, the first (unchanged) part of the 
>>> block
>>> is written back together with the second part of the block (updated
>>> data).
>> 
>> I'm not sure what I should think of this. You might loose that 
>> unchanged
>> part if there is an power loss in the middle, even worse, you likely 
>> don't
>> have this part anymore because it isn't part of the data you want to 
>> write
>> to the flash.
>> 
>> Maybe add an parameter for allow (unsafe) unaligned updates?
>> 
>> Now you might argue, that with "sf erase, sf write" you can do the 
>> same
>> harm, to which i reply: but then it is intentional ;) Because "sf 
>> erase"
>> just works on sector boundaries (which isn't really checked in the 
>> command,
>> i just realized, but at least my driver returns EINVAL) and then the
>> user has to include the "unchanged part" for the arguments on the
>> commandline.
> 
> True, but "sf update" already is "unsafe" even without supporting
> unaligned start offsets. The code already handles partial sector writes
> for the last sector in the same way (read, erase, write), which is also
> prone to data loss in case of power loss.

Ah, I missed that. Yes, in this case, we don't loose anything. Agreed.

> So this patch in fact just adds support for partial sector updates for
> the first sector. It is slightly more probable to loose data, but it
> doesn't introduce new "unsafe" behavior.
> 
> Maybe we could cover this by adding a warning to the documentation, or
> even printing a warning?

Heh, although I was using "sf update" all the time, I wasn't aware of
the read - "partly modify" - write cycle. Maybe it's just me being
over cautious.

Printing a warning might scare users, though. I'd prefer to fix the
online help, where only "erase and write" is mentioned.

-michael


More information about the U-Boot mailing list