From: Kichan Kwon Date: Mon, 26 Oct 2020 01:56:56 +0000 (+0900) Subject: Reflect dm-verity status to update progress X-Git-Tag: submit/tizen/20201104.032152~5 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=a0c53ee527e375dcea88a8a040fed272f74ba3c4;p=platform%2Fcore%2Fsystem%2Ftota-ua.git Reflect dm-verity status to update progress - With dm-verity : 20 ~ 80% - 80 ~ 100% is for hash remaking - Without dm-verity : 20 ~ 100% Change-Id: Icf9a65456eb40334f239f12ac407ddee22d7e6a9 Signed-off-by: Kichan Kwon --- diff --git a/src/ua.c b/src/ua.c index a8ae328..cc5a7d5 100755 --- a/src/ua.c +++ b/src/ua.c @@ -45,6 +45,7 @@ #define SYSTEM_LOG_DIR "/opt/var/log" int ua_op_mode = UA_OP_MODE_FG; +int dm_verity_status = DM_VERITY_DISABLED; static char fota_result[MAX_FILE_PATH]; static char fota_cause[MAX_FILE_PATH]; @@ -155,7 +156,10 @@ void fota_gui_progress(void * pbUserData, unsigned long uPercent) percent = percent / 5; } else if ((ua_data->ua_operation == UI_OP_SCOUT_UPDATE) || (ua_data->ua_operation == UI_OP_UPDATE)) { - percent = 20 + percent * 4 / 5; + if (dm_verity_status == DM_VERITY_ENABLED) + percent = 20 + percent * 3 / 5; /* 20 ~ 80 */ + else + percent = 20 + percent * 4 / 5; /* 20 ~ 100 */ } if (ua_op_mode == UA_OP_MODE_FG) @@ -951,6 +955,30 @@ int check_ua_op_mode(int argc, char **argv) } /*----------------------------------------------------------------------------- + check_dm_verity_status + ----------------------------------------------------------------------------*/ +int check_dm_verity_status(void) +{ + int ret = 0; + + ret = access("/usr/bin/verityctl", F_OK); + if (ret == -1) { + if (errno == ENOENT) { + LOG("dm-verity status : disabled\n"); + dm_verity_status = DM_VERITY_DISABLED; + return 0; + } else { + LOG("access failed with errno: %d\n", errno); + return -errno; + } + } + + LOG("dm-verity status : enabled\n"); + dm_verity_status = DM_VERITY_ENABLED; + return 0; +} + +/*----------------------------------------------------------------------------- remove_temp_files ----------------------------------------------------------------------------*/ void remove_temp_files(void) @@ -1203,6 +1231,12 @@ int main(int argc, char **argv) log_init(); fota_cfg_str_load(); + if (check_dm_verity_status() < 0) { + LOG("check_dm_verity_status fail\n"); + ret = UPI_CONFIG_ERROR; + goto Results; + } + /* Check fota folder path */ if (check_existence(delta_folder) == 0) { ret = UPI_DELTA_PATH_ERROR; diff --git a/src/ua.h b/src/ua.h index 288e15d..696e0ee 100755 --- a/src/ua.h +++ b/src/ua.h @@ -80,6 +80,11 @@ enum { UA_OP_MODE_BG }; +enum { + DM_VERITY_DISABLED = 0, + DM_VERITY_ENABLED = 1 +}; + void log_deinit(void); #endif