base-files: Align rootfs_data upgrades to 64KiB on eMMC
authorBrian Norris <computersforpeace@gmail.com>
Sun, 13 Mar 2022 06:04:30 +0000 (22:04 -0800)
committerChristian Lamparter <chunkeey@gmail.com>
Wed, 16 Mar 2022 16:50:06 +0000 (17:50 +0100)
Rootfs overlays get created at a ROOTDEV_OVERLAY_ALIGN (64KiB)
alignment after the rootfs, but emmc_do_upgrade() is assuming
it comes at the very next 512-byte sector.

Suggested-by: Christian Lamparter <chunkeey@gmail.com>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
(move spaces around, mention fstools' libtoolfs)
Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
package/base-files/files/lib/upgrade/emmc.sh

index 15fa370cd9d5598ebe4986807201fe012ba2a1a3..c3b02864aa916b1c8863ed020f81cae61a9935ac 100644 (file)
@@ -19,8 +19,11 @@ emmc_upgrade_tar() {
        [ "$has_kernel" = 1 -a "$EMMC_KERN_DEV" ] &&
                export EMMC_KERNEL_BLOCKS=$(($(tar xf "$tar_file" ${board_dir}/kernel -O | dd of="$EMMC_KERN_DEV" bs=512 2>&1 | grep "records out" | cut -d' ' -f1)))
 
-       [ "$has_rootfs" = 1 -a "$EMMC_ROOT_DEV" ] &&
+       [ "$has_rootfs" = 1 -a "$EMMC_ROOT_DEV" ] && {
                export EMMC_ROOTFS_BLOCKS=$(($(tar xf "$tar_file" ${board_dir}/root -O | dd of="$EMMC_ROOT_DEV" bs=512 2>&1 | grep "records out" | cut -d' ' -f1)))
+               # Account for 64KiB ROOTDEV_OVERLAY_ALIGN in libfstools
+               EMMC_ROOTFS_BLOCKS=$(((EMMC_ROOTFS_BLOCKS + 127) & ~127))
+       }
 
        if [ -z "$UPGRADE_BACKUP" ]; then
                if [ "$EMMC_DATA_DEV" ]; then