}
check_clone_background_available() {
- local bootmode=$(device_board_get_boot_mode)
- local ret_boot_mode=$?
+ # Partitions should not be cloned if upgrade is in progress.
+ local upgrade_state
+ local upgrade_type
+ local bootmode
+ local ret
+
+ upgrade_state=$(device_board_get_upgrade_state)
+ ret=$?
+ if [[ $? -ne 0 ]]; then
+ critical_log "[Error] Cannot get upgrade state: ${ret}"
+ exit 1
+ fi
+
+ upgrade_type=$(device_board_get_upgrade_type)
+ ret=$?
+ if [[ $? -ne 0 ]]; then
+ critical_log "[Error] Cannot get upgrade type: ${ret}"
+ exit 1
+ fi
- if [ ${ret_boot_mode} -ne 0 ]; then
- critical_log "[Error] Cannot get boot mode: ${ret_boot_mode}"
+ bootmode=$(device_board_get_boot_mode)
+ ret=$?
+ if [[ $? -ne 0 ]]; then
+ critical_log "[Error] Cannot get boot mode: ${ret}"
exit 1
fi
- if [ "${bootmode}" != "normal" ]; then
- log "[Info] bootmode is not \"normal\": ${bootmode}"
+ if [[ "${upgrade_state}" != "completed" ]]; then
+ log "[Info] Upgrade state is not \"completed\": ${upgrade_state}"
exit 0
fi
+
+ if [[ "${bootmode}" != "normal" ]]; then
+ if [[ "${bootmode}" != "fota" ]]; then
+ log "[Info] bootmode should be \"normal\" or \"fota\": ${bootmode}"
+ exit 0
+ fi
+
+ if [[ "${upgrade_type}" != "online" ]]; then
+ log "[Info] Upgrade type should be online if bootmode is fota: ${upgrade_type}"
+ exit 0
+ fi
+ fi
}
clone_background() {
# wait for 60 seconds to wait for bootup
sleep 60
- check_clone_available
+ check_clone_background_available
start_clone
}