
Dear Alison,
In message CAOuSAjdHerD7iWSwv5HQmx07nALRHschnH5=XToNEZDqA9JsvQ@mail.gmail.com you wrote:
The idea behind the 'swap' mode is that a storage device can have two sets of partitions, one set all named 'primary' and one set all named 'backup'. The software updater in userspace can then simply rename the partitions with sgdisk in order to pick the new image. The swap mode changes the whole set of labels at once, so there's little chance of being interrupted.
It's still a sequential, non-atomic operation, and "little chance" is exactly the places where Murphy likes to hit you.
One additional note: the last version I posted worked fine for the sandbox, but wouldn't link for an ARM target with the Linaro toolchain, as the linker couldn't find atoi(). I guess the libc for the x86 compiler includes it. To test on ARM, I copied in simple_atoi() from lib/vsprintf.c, but assuredly that is an ugly solution. Does anyone have a better idea to solve this problem?
U-Boot should always be self-contained and not link regular library code from the tool chain.
Best regards,
Wolfgang Denk