From: Mateusz Moscicki Date: Fri, 16 Feb 2024 13:46:00 +0000 (+0100) Subject: Add data-checkpoint.service to local-fs.target.wants X-Git-Tag: accepted/tizen/unified/20240430.020633~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=19d5bfcd5a347cdb62e898ed71b8acd4e109f774;p=platform%2Fcore%2Fsystem%2Fupgrade.git Add data-checkpoint.service to local-fs.target.wants When the system starts in FOTA mode, data checkpoint of system-data and user partitions must be created so that data can be resotred in case of upgrade (data migration) failure. Change-Id: I5deffff111bd6527295a963b9904a087a649c23c --- diff --git a/packaging/upgrade.spec b/packaging/upgrade.spec index d8ff70a..a28a103 100644 --- a/packaging/upgrade.spec +++ b/packaging/upgrade.spec @@ -110,7 +110,7 @@ ln -s ../clone_partitions_recovery.service %{buildroot}%{_unitdir}/recovery.serv # rw-update mkdir -p %{buildroot}%{_unitdir}/system-update.target.wants -mkdir -p %{buildroot}%{_unitdir}/data-checkpoint.target.wants +mkdir -p %{buildroot}%{_unitdir}/local-fs.target.wants mkdir -p %{buildroot}%{_unitdir}/delayed.target.wants ln -s ../getty.target %{buildroot}%{_unitdir}/system-update.target.wants ln -s ../cynara.socket %{buildroot}%{_unitdir}/system-update.target.wants @@ -118,8 +118,7 @@ ln -s ../dbus.socket %{buildroot}%{_unitdir}/system-update.target.wants ln -s ../udev-sdb-init.service %{buildroot}%{_unitdir}/system-update.target.wants ln -s ../offline-update.service %{buildroot}%{_unitdir}/system-update.target.wants ln -s ../udev-trigger-dmbow@.service %{buildroot}%{_unitdir}/system-update.target.wants/udev-trigger-dmbow@user.service -ln -s ../data-checkpoint.target %{buildroot}%{_unitdir}/system-update.target.wants -ln -s ../data-checkpoint.service %{buildroot}%{_unitdir}/data-checkpoint.target.wants/data-checkpoint.service +ln -s ../data-checkpoint.service %{buildroot}%{_unitdir}/local-fs.target.wants/data-checkpoint.service ln -s ../update-post.service %{buildroot}%{_unitdir}/system-update.target.wants ln -s ../update-finalize.service %{buildroot}%{_unitdir}/delayed.target.wants @@ -164,12 +163,10 @@ fi %attr(755,root,root) %{img_verifier_root_ca_dir} # rw-upgrade %{_unitdir}/data-checkpoint.service -%{_unitdir}/data-checkpoint.target -%{_unitdir}/data-checkpoint.target.wants/data-checkpoint.service +%{_unitdir}/local-fs.target.wants/data-checkpoint.service %{_unitdir}/delayed.target.wants/update-finalize.service %{_unitdir}/offline-update.service %{_unitdir}/system-update.target.wants/cynara.socket -%{_unitdir}/system-update.target.wants/data-checkpoint.target %{_unitdir}/system-update.target.wants/dbus.socket %{_unitdir}/system-update.target.wants/getty.target %{_unitdir}/system-update.target.wants/offline-update.service @@ -189,6 +186,7 @@ fi %{upgrade_scripts_dir}/update-init.sh %{upgrade_scripts_dir}/update-post.sh %{upgrade_scripts_dir}/update.sh +%{upgrade_scripts_dir}/update-verify.sh %files -n parse-dynparts %manifest upgrade.manifest @@ -198,4 +196,4 @@ fi %files -n resize-dynparts %manifest upgrade.manifest %license LICENSE.Apache-2.0 -%{_bindir}/resize-dynparts \ No newline at end of file +%{_bindir}/resize-dynparts diff --git a/scripts/rw-upgrade/CMakeLists.txt b/scripts/rw-upgrade/CMakeLists.txt index 48dddc8..b27a295 100644 --- a/scripts/rw-upgrade/CMakeLists.txt +++ b/scripts/rw-upgrade/CMakeLists.txt @@ -11,7 +11,6 @@ INSTALL(FILES udev-sdb-init.service offline-update.service data-checkpoint.service - data-checkpoint.target update-post.service update-finalize.service udev-trigger-dmbow@.service @@ -30,5 +29,6 @@ INSTALL(FILES update-checkpoint-create.sh update-post.sh update-finalize.sh + update-verify.sh DESTINATION ${UPGRADE_SCRIPTS_DIR} PERMISSIONS OWNER_READ OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) diff --git a/scripts/rw-upgrade/data-checkpoint.service.in b/scripts/rw-upgrade/data-checkpoint.service.in index ed5d32f..2f373fc 100644 --- a/scripts/rw-upgrade/data-checkpoint.service.in +++ b/scripts/rw-upgrade/data-checkpoint.service.in @@ -1,9 +1,9 @@ [Unit] Description=Data checkpoint DefaultDependencies=no +ConditionKernelCommandLine=bootmode=fota Before=systemd-journald.service opt.mount opt-usr.mount mnt-inform.mount - [Service] Type=oneshot ExecStart=@UPGRADE_SCRIPTS_DIR@/update-checkpoint-create.sh diff --git a/scripts/rw-upgrade/data-checkpoint.target b/scripts/rw-upgrade/data-checkpoint.target deleted file mode 100644 index b4694c5..0000000 --- a/scripts/rw-upgrade/data-checkpoint.target +++ /dev/null @@ -1,7 +0,0 @@ -[Unit] -Description=Data checkpoint -DefaultDependencies=no -Conflicts=shutdown.target -Before=local-fs-pre.target -OnFailure=emergency.target -OnFailureJobMode=replace-irreversibly diff --git a/scripts/rw-upgrade/rw-update-macro.inc b/scripts/rw-upgrade/rw-update-macro.inc index 70a5c2d..9fc58a1 100644 --- a/scripts/rw-upgrade/rw-update-macro.inc +++ b/scripts/rw-upgrade/rw-update-macro.inc @@ -266,8 +266,10 @@ COMMIT_CHANGES() if ! COMMIT_PARTITION system-data; then return 1 fi - if ! COMMIT_PARTITION user; then - return 1 + if [ -e "/usr/lib/systemd/system/opt-usr.mount" ]; then + if ! COMMIT_PARTITION user; then + return 1 + fi fi return 0 diff --git a/scripts/rw-upgrade/update-checkpoint-create.sh b/scripts/rw-upgrade/update-checkpoint-create.sh index 525f1a4..fb456fc 100644 --- a/scripts/rw-upgrade/update-checkpoint-create.sh +++ b/scripts/rw-upgrade/update-checkpoint-create.sh @@ -25,9 +25,10 @@ exit_handler() { } get_partition_id() { - PART_ROOTFS=$("$BLKID" --match-token PARTLABEL=rootfs -o device -l || "$BLKID" --match-token LABEL=rootfs -o device -l) PART_SYSTEM_DATA=$("$BLKID" --match-token PARTLABEL=system-data -o device -l || "$BLKID" --match-token LABEL=system-data -o device -l) - PART_USER=$("$BLKID" --match-token PARTLABEL=user -o device -l || "$BLKID" --match-token LABEL=user -o device -l) + if [ -e "/usr/lib/systemd/system/opt-usr.mount" ]; then + PART_USER=$("$BLKID" --match-token PARTLABEL=user -o device -l || "$BLKID" --match-token LABEL=user -o device -l) + fi if [[ ! $(