One of the steps in A/B upgrade is to clone a partitions from the
current slot to the next slot. At the same time there is
clone_partition.service that also clones partitions for recovery
purposes. Adding a lock is to prevent both processes from cloning
partitions at the same time.
Change-Id: I6f831eebbd6de37617a0b09145dbd70f15d7d638
#!/bin/bash
PATH=/bin:/usr/bin:/sbin:/usr/sbin
+FLOCK_PATH="/var/lock/clone_partitions.lock"
SCRIPT_NAME="clone_partitions.sh"
set -x
fi
+(
+flock 9
case $1 in
"recovery")
/bin/device_board_clear_partition_ab_cloned
do_clone
;;
esac
+) 9> "$FLOCK_PATH
\ No newline at end of file
CONFIG_FILE="update.cfg"
HAL_UPGRADE_CFG_DIR="/hal/etc/upgrade/"
HAL_PART_LIST_FILE="background_copy.list"
+FLOCK_PATH="/var/lock/clone_partitions.lock"
if [ "$#" != "1" ] || [ ! -f "$1" ]; then
log "[Error] Usage: $0 path_to_upgrade.tar[.gz]" "$LOG_FILE"
fi
}
+(
+flock 9
+
check_ab_partition_scheme
check_used_block_device
unpack_file "$DELTA_TAR" "$CONFIG_FILE"
set_upgrade_status 80
reboot_to_fota
cleanup_files
+) 9> "$FLOCK_PATH"
SCRIPT_UPGRADE_PREPARE_PARTITIONS="upgrade-prepare-partitions.sh"
SCRIPT_UPGRADE_PARTIAL="upgrade-partial.sh"
SCRIPT_UPGRADE_FOTA="upgrade-fota.sh"
+FLOCK_PATH="/var/lock/clone_partitions.lock"
prepare_fota_dir() {
if [ -d "$FOTA_DIR" ]; then
fi
}
+(
+flock 9
+
rm -f "$LOG_FILE" && touch "$LOG_FILE"
if [ "$#" != "1" ] || [ ! -f "$1" ]; then
set_upgrade_status 1
verify_img "${DOWNLOAD_DELTA}"
do_update
+) 9> "$FLOCK_PATH"