On 30.09.21 23:08, Michael Walle wrote: > 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.
Which document are you referring to? I don't really see the "sf" command documented anywhere.