#
# System RW Update Script
#
-
+STATUS_FILE="/opt/data/update/RW.STATUS"
+STAT="/usr/bin/stat"
COLOR_ERROR='\033[01;31m'
COLOR_DEBUG='\033[01;34m'
COLOR_NOTIFY='\033[01;33m'
echo "$1" > ${UPDATE_RESULT_FILE}
}
+COMMIT_BOW_PARTITION()
+{
+ LABEL=${1}
+
+ BOWDEV_PATH=/dev/mapper/bowdev_${LABEL}
+ DM_NUMBER=$(($("${STAT}" -c "0x%T" $(readlink -f ${BOWDEV_PATH}))))
+ echo 2 > /sys/block/dm-${DM_NUMBER}/bow/state
+ NOTIFY "Changes on partition ${LABEL} commited (dm-bow)"
+}
+
+COMMIT_F2FS_PARTITION()
+{
+ LABEL=${1}
+ PART_DEVICE=${2}
+
+ mount -o remount,checkpoint=enable "${PART_DEVICE}"
+ NOTIFY "Changes on partition ${LABEL} commited (f2fs)"
+}
+
+COMMIT_PARTITION()
+{
+ LABEL=${1}
+
+ PART_DEVICE=$(blkid --match-token PARTLABEL="${LABEL}" -o device || blkid --match-token LABEL="${LABEL}" -o device)
+ if [ -z "${PART_DEVICE}" ]; then
+ NOTIFY "WARNING: Partition ${LABEL} not found"
+ return
+ fi
+
+ TYPE=$(blkid --match-token LABEL="${LABEL}" -o value -s TYPE | tail -n 1)
+ if [ "${TYPE}" = "ext4" ]; then
+ COMMIT_BOW_PARTITION "${LABEL}"
+ elif [ "${TYPE}" = "f2fs" ]; then
+ COMMIT_F2FS_PARTITION "${LABEL}" ${PART_DEVICE}
+ else
+ ERROR "ERROR: Cannot commit ${LABEL}: Unsupported filesystem ${TYPE}"
+ fi
+}
+
+COMMIT_CHANGES()
+{
+ rm ${STATUS_FILE}
+ COMMIT_PARTITION system-data
+ COMMIT_PARTITION user
+}
+
NOTIFY "----------------------------------------------------------------------"
NOTIFY "System RW update: rw update started"
/bin/sync
NOTIFY "----------------------------------------------------------------------"
+COMMIT_CHANGES
#Reboot
reboot -f