Commit changes on HAL partition for non-A/B upgrade 93/266993/4
authorMateusz Moscicki <m.moscicki2@partner.samsung.com>
Tue, 23 Nov 2021 15:41:38 +0000 (16:41 +0100)
committerMateusz Moscicki <m.moscicki2@partner.samsung.com>
Thu, 25 Nov 2021 16:02:38 +0000 (17:02 +0100)
Change-Id: I26c3569ff7aec2b28e112fe575b2c99109d60bcf

units/data-checkpoint.service.in
upgrade/rw-update-macro.inc
upgrade/update-checkpoint-create.sh

index 866611f6c6354fa8bb6239b5d5ca79df1a25ce1e..b71fb49c2b7690579b1ac7d35bff252970fb4ab6 100644 (file)
@@ -1,7 +1,7 @@
 [Unit]
 Description=Data checkpoint
 DefaultDependencies=no
-Before=systemd-journald.service opt.mount opt-usr.mount
+Before=systemd-journald.service opt.mount opt-usr.mount mnt-inform.mount
 
 
 [Service]
index 27ab6e8bac8f0faca9884116b70b85eda9677975..67369b1f8fd33eac1e72823b2a2877c0dbefa242 100644 (file)
@@ -222,4 +222,8 @@ COMMIT_CHANGES()
 {
        COMMIT_PARTITION system-data
        COMMIT_PARTITION user
+       if [[ ! $(</proc/cmdline) =~ partition_ab= ]]; then
+               # Support legacy (non-A/B) case
+               COMMIT_PARTITION hal
+       fi
 }
index 452e463c78099965fa67aa1a55568dec70458eeb..cc276d114b737808c475eed6fa032911299b501b 100755 (executable)
@@ -12,12 +12,18 @@ STAT="/usr/bin/stat"
 
 SYSTEM_DATA_MNT="opt"
 USER_MNT="opt/usr"
+HAL_MNT="hal"
 BTRFS="/usr/sbin/btrfs"
 
 get_partition_id() {
         PART_ROOTFS=$("$BLKID" --match-token PARTLABEL=rootfs -o device || "$BLKID" --match-token LABEL=rootfs -o device)
         PART_SYSTEM_DATA=$("$BLKID" --match-token PARTLABEL=system-data -o device || "$BLKID" --match-token LABEL=system-data -o device)
         PART_USER=$("$BLKID" --match-token PARTLABEL=user -o device || "$BLKID" --match-token LABEL=user -o device)
+        if [[ ! $(</proc/cmdline) =~ partition_ab= ]]; then
+                PART_HAL=$("$BLKID" --match-token PARTLABEL=hal -o device || "$BLKID" --match-token LABEL=hal -o device)
+        else
+                PART_HAL=""
+        fi
 }
 
 mount_bow_partition() {
@@ -81,3 +87,9 @@ mount_checkpoint_partition system-data ${PART_SYSTEM_DATA} /${SYSTEM_DATA_MNT}
 if [ ! -z "${PART_USER}" ]; then
         mount_checkpoint_partition user ${PART_USER} /${USER_MNT}
 fi
+
+if [ ! -z "${PART_HAL}" ] && [ ! -d "/${HAL_MNT}/lib" ]
+then
+        # Workaround code to check whether /hal/lib directory is exist
+        mount_checkpoint_partition hal ${PART_HAL} /${HAL_MNT}
+fi