diff options
Diffstat (limited to 'package/base-files/files/sbin')
-rwxr-xr-x | package/base-files/files/sbin/sysupgrade | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/package/base-files/files/sbin/sysupgrade b/package/base-files/files/sbin/sysupgrade index 200a0e520b..809e789f9f 100755 --- a/package/base-files/files/sbin/sysupgrade +++ b/package/base-files/files/sbin/sysupgrade @@ -251,8 +251,16 @@ run_hooks "" $sysupgrade_pre_upgrade install_bin /sbin/upgraded v "Commencing upgrade. All shell sessions will be closed now." -ubus call system sysupgrade "{ - \"prefix\": \"$RAM_ROOT\", - \"path\": $(json_string "$IMAGE"), - \"command\": \". /lib/functions.sh; include /lib/upgrade; do_upgrade_stage2\" -}" + +COMMAND='. /lib/functions.sh; include /lib/upgrade; do_upgrade_stage2' + +if [ -n "$FAILSAFE" ]; then + printf '%s\x00%s\x00%s' "$RAM_ROOT" "$IMAGE" "$COMMAND" >/tmp/sysupgrade + lock -u /tmp/.failsafe +else + ubus call system sysupgrade "{ + \"prefix\": $(json_string "$RAM_ROOT"), + \"path\": $(json_string "$IMAGE"), + \"command\": $(json_string "$COMMAND") + }" +fi |