diff options
author | Sergey Ryazanov <ryazanov.s.a@gmail.com> | 2020-04-24 17:04:14 +0300 |
---|---|---|
committer | Petr Štetiar <ynezz@true.cz> | 2020-06-03 16:49:28 +0200 |
commit | 880c1f0336616b0b5692ff284f83923011c548f2 (patch) | |
tree | e80bf770f32078603a3528ee5269d98e38937954 /package/base-files | |
parent | 2171493f7fc28cb134594a779f08a9797b558444 (diff) | |
download | upstream-880c1f0336616b0b5692ff284f83923011c548f2.tar.gz upstream-880c1f0336616b0b5692ff284f83923011c548f2.tar.bz2 upstream-880c1f0336616b0b5692ff284f83923011c548f2.zip |
base-files: prevent issues w/ overlay on powerloss after sysupgrade
Due to filesystem write caching the old configuration data could stay
out of flash for a long time during a first boot after the sysupgrade.
Power loss during this period could damage the overlay data and even
make device inaccessable via the network.
Fix this by syncing data to a flash as soon as the previous
configuration will be unpacked after the sysupgrade. Also sync the FS
state after the sysupgrade.tgz archive removing to prevent duplicative
extraction of a previous configuration.
Tested with AMD Geode based board.
Signed-off-by: Sergey Ryazanov <ryazanov.s.a@gmail.com>
Diffstat (limited to 'package/base-files')
-rwxr-xr-x | package/base-files/files/etc/init.d/done | 2 | ||||
-rw-r--r-- | package/base-files/files/lib/preinit/80_mount_root | 2 |
2 files changed, 3 insertions, 1 deletions
diff --git a/package/base-files/files/etc/init.d/done b/package/base-files/files/etc/init.d/done index 374353a23c..32d6118df7 100755 --- a/package/base-files/files/etc/init.d/done +++ b/package/base-files/files/etc/init.d/done @@ -4,7 +4,7 @@ START=95 boot() { mount_root done - rm -f /sysupgrade.tgz + rm -f /sysupgrade.tgz && sync # process user commands [ -f /etc/rc.local ] && { diff --git a/package/base-files/files/lib/preinit/80_mount_root b/package/base-files/files/lib/preinit/80_mount_root index f3fe788e19..265a3f18df 100644 --- a/package/base-files/files/lib/preinit/80_mount_root +++ b/package/base-files/files/lib/preinit/80_mount_root @@ -9,6 +9,8 @@ do_mount_root() { echo "- config restore -" cd / tar xzf /sysupgrade.tgz + # Prevent configuration corruption on a power loss + sync } } |