From: Lech Perczak <lech.perczak@gmail.com>
Date: Thu, 28 Apr 2022 21:32:12 +0000 (+0200)
Subject: imx: make sdcard/eMMC sysupgrade more resilient
X-Git-Url: http://git.cdn.openwrt.org/?a=commitdiff_plain;h=4436d7bae8c38eda1cb159e3b1ffd2fd1a553bed;p=openwrt%2Fstaging%2Fjogo.git

imx: make sdcard/eMMC sysupgrade more resilient

Ensure, that kernel update is performed atomically on filesystem, to
reduce likelihood of failure if power-cut occurs during sysupgrade. If
kernel update fails for whatever reason, skip updating rootfs as well.

Signed-off-by: Lech Perczak <lech.perczak@gmail.com>
---

diff --git a/target/linux/imx/base-files/lib/imx.sh b/target/linux/imx/base-files/lib/imx.sh
index a451de3779..9c69235758 100644
--- a/target/linux/imx/base-files/lib/imx.sh
+++ b/target/linux/imx/base-files/lib/imx.sh
@@ -41,9 +41,12 @@ imx_sdcard_do_upgrade() {
 	board_dir="${board_dir%/}"
 
 	imx_sdcard_mount_boot
-	get_image "$1" | tar Oxf - ${board_dir}/kernel > /boot/uImage
-	get_image "$1" | tar Oxf - ${board_dir}/root > $(rootpart_from_uuid)
-	sync
+	get_image "$1" | tar Oxf - ${board_dir}/kernel > /boot/uImage-new && \
+		mv /boot/uImage-new /boot/uImage && \
+		sync && \
+		get_image "$1" | tar Oxf - ${board_dir}/root > $(rootpart_from_uuid) && \
+		sync
+
 	umount /boot
 }