30 lines
1.4 KiB
Diff
30 lines
1.4 KiB
Diff
|
From: Matthias Schiffer <mschiffer@universe-factory.net>
|
||
|
Date: Thu, 4 May 2017 07:29:58 +0200
|
||
|
Subject: sunxi: sysupgrade: don't write partitions twice
|
||
|
|
||
|
When existing partitions are retained, the dd call writing the uboot image
|
||
|
in the space before the first partition was accidentally writing the whole
|
||
|
image, making the code for individual partitions redundant. Limit the copy
|
||
|
to 1016KiB (the first 8KiB are skipped, and the first partition starts at
|
||
|
1024KiB).
|
||
|
|
||
|
In addition, conv=notrunc is replaced with conv=fsync. It seems this was an
|
||
|
oversight, as notrunc doesn't make sense for block devices and all other dd
|
||
|
commands use conv=fsync.
|
||
|
|
||
|
Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
|
||
|
|
||
|
diff --git a/target/linux/sunxi/base-files/lib/upgrade/platform.sh b/target/linux/sunxi/base-files/lib/upgrade/platform.sh
|
||
|
index f2cd970d428a780d7497d8802765c656a47ff421..776bdf53bf89c5eafc24b7b59b943e12f3fab77e 100644
|
||
|
--- a/target/linux/sunxi/base-files/lib/upgrade/platform.sh
|
||
|
+++ b/target/linux/sunxi/base-files/lib/upgrade/platform.sh
|
||
|
@@ -43,7 +43,7 @@ platform_do_upgrade() {
|
||
|
fi
|
||
|
|
||
|
#write uboot image
|
||
|
- get_image "$@" | dd of="$diskdev" bs=1024 skip=8 seek=8 conv=notrunc
|
||
|
+ get_image "$@" | dd of="$diskdev" bs=1024 skip=8 seek=8 count=1016 conv=fsync
|
||
|
#iterate over each partition from the image and write it to the boot disk
|
||
|
while read part start size; do
|
||
|
part="$(($part - 2))"
|