[openwrt/openwrt] base-files: Align rootfs_data upgrades to 64KiB on eMMC

LEDE Commits lede-commits at lists.infradead.org
Wed Mar 16 12:55:20 PDT 2022


chunkeey pushed a commit to openwrt/openwrt.git, branch master:
https://git.openwrt.org/e8a0c55909427703b7c72ed46326531397287b20

commit e8a0c55909427703b7c72ed46326531397287b20
Author: Brian Norris <computersforpeace at gmail.com>
AuthorDate: Sat Mar 12 22:04:30 2022 -0800

    base-files: Align rootfs_data upgrades to 64KiB on eMMC
    
    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 at gmail.com>
    Signed-off-by: Brian Norris <computersforpeace at gmail.com>
    (move spaces around, mention fstools' libtoolfs)
    Signed-off-by: Christian Lamparter <chunkeey at gmail.com>
---
 package/base-files/files/lib/upgrade/emmc.sh | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/package/base-files/files/lib/upgrade/emmc.sh b/package/base-files/files/lib/upgrade/emmc.sh
index 15fa370cd9..c3b02864aa 100644
--- a/package/base-files/files/lib/upgrade/emmc.sh
+++ b/package/base-files/files/lib/upgrade/emmc.sh
@@ -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




More information about the lede-commits mailing list