Accouding to the codes I'v been reading(Android 5.1), the moves of generating ota patches is much more complicated than just using bsdiff to get a patch.
Before reading this part of codes, my guess was that:
1. Generate system.img for both source and target
2. bsdiff src.img tgt.img patch
In fact, the system.map file in the targat file play a important role in generating patches. The script even build a block-based digraph depends on system.map. And the final ota package contains not only the bsdiff patch, but also lots of rules in system.transfer.list.
So what is the advantage of the current ota generating system?