Modify to set upgrade progress status as upgrade trigger state 85/313385/1 accepted/tizen/unified/20240626.155305 accepted/tizen/unified/dev/20240701.072911 accepted/tizen/unified/x/20240627.011911
authorSangYoun Kwak <sy.kwak@samsung.com>
Tue, 25 Jun 2024 06:22:47 +0000 (15:22 +0900)
committerSangYoun Kwak <sy.kwak@samsung.com>
Tue, 25 Jun 2024 06:35:48 +0000 (15:35 +0900)
If upgrade trigger is succeed, it means upgrade is started to upgrade
progress status is set to 0.
If upgrade trigger is failed, upgrade progress status is set to -1.

Change-Id: I24b25a2ec52dfdd1bf6a010543361d130eb31ee4
Signed-off-by: SangYoun Kwak <sy.kwak@samsung.com>
update-manager/fota/fota-installer.c

index 8ed8e8df414d99545387c3eb5f376bfb005b297f..609214c3a6851da33bfd40f3ad300e54f9aeb221 100644 (file)
@@ -258,6 +258,12 @@ static int set_upgrade_state_ready(void)
                return -1;
        }
 
+       ret = hal_device_board_set_upgrade_progress_status(0);
+       if (ret < 0) {
+               _FLOGE("Failed to set upgrade progress status(%d): %d", 0, ret);
+               return -1;
+       }
+
        _FLOGI("Succeed to set upgrade state %s -> %s", current_upgrade_state,
                                                        next_upgrade_state);
 
@@ -299,7 +305,7 @@ int fota_installer_ro_update_and_finish_update(pid_t sender_pid)
                /* Double fork to avoid zombies */
                switch (fork()) {
                        case -1:
-                               exit(EXIT_FAILURE);
+                               goto trigger_failed;
                        case 0:
                                break;
                        default:
@@ -313,7 +319,7 @@ int fota_installer_ro_update_and_finish_update(pid_t sender_pid)
                        _FLOGE("Failed to execl(%s %s %s %s)", FOTA_TRIGGER_PATH, deltas.first_delta, deltas.second_delta,
                                FOTA_TRIGGER_MODE_RO_UPDATE_AND_FINISH_UPDATE);
 
-               exit(EXIT_FAILURE);
+               goto trigger_failed;
        }
 
        /* Since we double forked, we have to wait for the first child (otherwise
@@ -330,8 +336,20 @@ execute_destroy:
                free(deltas.first_delta);
        if (deltas.second_delta)
                free(deltas.second_delta);
+       if (status < 0) {
+               ret = hal_device_board_set_upgrade_progress_status(-1);
+               if (ret < 0)
+                       _FLOGE("Failed to set upgrade progress status(%d): %d",
+                                       -1, ret);
+       }
 
        return status;
+
+trigger_failed:
+       ret = hal_device_board_set_upgrade_progress_status(-1);
+       if (ret < 0)
+               _FLOGE("Failed to set upgrade progress status(%d): %d", -1, ret);
+       exit(EXIT_FAILURE);
 }
 
 int fota_installer_ro_update(pid_t sender_pid)
@@ -371,7 +389,7 @@ int fota_installer_ro_update(pid_t sender_pid)
                        _FLOGE("Failed to execl(%s %s %s %s)", FOTA_TRIGGER_PATH, deltas.first_delta,
                                deltas.second_delta, FOTA_TRIGGER_MODE_RO_UPDATE);
 
-               exit(EXIT_FAILURE);
+               goto trigger_failed;
        }
 
        ret = waitpid(pid, &exec_status, 0);
@@ -389,8 +407,20 @@ execute_destroy:
                free(deltas.first_delta);
        if (deltas.second_delta)
                free(deltas.second_delta);
+       if (status < 0) {
+               ret = hal_device_board_set_upgrade_progress_status(-1);
+               if (ret < 0)
+                       _FLOGE("Failed to set upgrade progress status(%d): %d",
+                                       -1, ret);
+       }
 
        return status;
+
+trigger_failed:
+       ret = hal_device_board_set_upgrade_progress_status(-1);
+       if (ret < 0)
+               _FLOGE("Failed to set upgrade progress status(%d): %d", -1, ret);
+       exit(EXIT_FAILURE);
 }
 
 int fota_installer_finish_update(void)