ar71xx: Fix sysupgrades for Allnet and OpenMesh devices

Both Allnet and OpenMesh sysupgrade uses fw_setenv from uboot-envtools to
change different settings in the uboot environment. uboot-envtools version
2013.01 introduced a filesystem lock "/var/lock/fw_printenv.lock" to guarantee
mutually exclusive access to the uboot environment. But the path /var doesn't
exist on the sysupgrade ramfs.

An upgrade on these devices fails since r36033 ("[package] uboot-envtools:
upgrade to version 2013.01.01") with following messages:

 Error opening lock file /var/lock/fw_printenv.lock
 failed to update U-Boot environment

Creating the "/var/lock" path before running fw_setenv is therefore a
requirement unless the locking functionality in fw_setenv is removed or
replaced with optional locking.

Signed-off-by: Sven Eckelmann <sven@open-mesh.com>
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>

SVN-Revision: 38483
lede-17.01
Gabor Juhos 2013-10-20 15:59:05 +00:00
parent 68e13de37d
commit 80a15fe8ad
2 changed files with 4 additions and 0 deletions

View File

@ -4,9 +4,11 @@
# a minimal web-interface for flashing a new firmware. # a minimal web-interface for flashing a new firmware.
# make sure we got uboot-envtools and fw_env.config copied over to the ramfs # make sure we got uboot-envtools and fw_env.config copied over to the ramfs
# create /var/lock for the lock "fw_setenv.lock" of fw_setenv
platform_add_ramfs_ubootenv() { platform_add_ramfs_ubootenv() {
[ -e /usr/sbin/fw_printenv ] && install_bin /usr/sbin/fw_printenv /usr/sbin/fw_setenv [ -e /usr/sbin/fw_printenv ] && install_bin /usr/sbin/fw_printenv /usr/sbin/fw_setenv
[ -e /etc/fw_env.config ] && install_file /etc/fw_env.config [ -e /etc/fw_env.config ] && install_file /etc/fw_env.config
mkdir -p $RAM_ROOT/var/lock
} }
append sysupgrade_pre_upgrade platform_add_ramfs_ubootenv append sysupgrade_pre_upgrade platform_add_ramfs_ubootenv

View File

@ -27,10 +27,12 @@ cfg_value_get()
} }
# make sure we got uboot-envtools and fw_env.config copied over to the ramfs # make sure we got uboot-envtools and fw_env.config copied over to the ramfs
# create /var/lock for the lock "fw_setenv.lock" of fw_setenv
platform_add_ramfs_ubootenv() platform_add_ramfs_ubootenv()
{ {
[ -e /usr/sbin/fw_printenv ] && install_bin /usr/sbin/fw_printenv /usr/sbin/fw_setenv [ -e /usr/sbin/fw_printenv ] && install_bin /usr/sbin/fw_printenv /usr/sbin/fw_setenv
[ -e /etc/fw_env.config ] && install_file /etc/fw_env.config [ -e /etc/fw_env.config ] && install_file /etc/fw_env.config
mkdir -p $RAM_ROOT/var/lock
} }
append sysupgrade_pre_upgrade platform_add_ramfs_ubootenv append sysupgrade_pre_upgrade platform_add_ramfs_ubootenv