How does NervesHub delta firmware updates work when writing?

I know the delta is a binary diff between the current running firmware and the target update firmware.

Usually for an update I would say fwup just writes the raw chunks to disk. I believe you have described it as “essentially just dd” @fhunleth :slight_smile:

Of course that doesn’t work quite the same with a delta update.

Partition A has v1.
Partition B has v2. (current)

We are updating to v3 and receive from our nice NervesHub a delta firmware update to take us from v2 → v3.

For every chunk it wants to write does it then check the delta for changes and if nothing changed grab data from B and write to A, if there are changes in the delta, of course write those directly to A.

I assume that’s how it has to work. So it still has to write the entire partition update. Unless we did a v1 → v3 delta I suppose…

Have I got it about right?