From 3f707355aeb38fb68be1de2ab6d457f49fddfaf2 Mon Sep 17 00:00:00 2001 From: lizhao Date: Wed, 8 Jan 2025 15:51:42 +0800 Subject: [PATCH 1/4] add hyperhold inode to shrinkinfo Signed-off-by: lizhao --- interfaces/kits/updaterkits/updaterkits.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/interfaces/kits/updaterkits/updaterkits.cpp b/interfaces/kits/updaterkits/updaterkits.cpp index cefbd0e5..aa2dc31f 100755 --- a/interfaces/kits/updaterkits/updaterkits.cpp +++ b/interfaces/kits/updaterkits/updaterkits.cpp @@ -134,6 +134,21 @@ static bool IsPackagePath(const std::string &path) return true; } +static void UpdateOptExpand(std::string& updateOpt) +{ + if (updateOpt.find("--shrink_info=") == std::string::npos || + updateOpt.find("--virtual_shrink_info=") == std::string::npos) { + return; + } + struct stat file_stat; + int ret = stat("/data/service/el1/0/hyperhold", &file_stat); + if (ret != 0) { + return; + } + std::string inode = std::to_string(file_stat.st_ino); + updateOpt += "," + inode; +} + static int AddPkgPath(struct UpdateMessage &msg, size_t updateOffset, const std::vector &packageName) { for (auto path : packageName) { @@ -146,6 +161,7 @@ static int AddPkgPath(struct UpdateMessage &msg, size_t updateOffset, const std: ret = snprintf_s(msg.update + updateOffset, sizeof(msg.update) - updateOffset, sizeof(msg.update) - 1 - updateOffset, "--update_package=%s\n", path.c_str()); } else { + UpdateOptExpand(path); ret = snprintf_s(msg.update + updateOffset, sizeof(msg.update) - updateOffset, sizeof(msg.update) - 1 - updateOffset, "%s\n", path.c_str()); } -- Gitee From eaa21d18025f3b7f17bf74fb688c015479d2509d Mon Sep 17 00:00:00 2001 From: lizhao Date: Wed, 8 Jan 2025 15:57:58 +0800 Subject: [PATCH 2/4] fix Signed-off-by: lizhao --- interfaces/kits/updaterkits/updaterkits.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interfaces/kits/updaterkits/updaterkits.cpp b/interfaces/kits/updaterkits/updaterkits.cpp index aa2dc31f..1acea1fd 100755 --- a/interfaces/kits/updaterkits/updaterkits.cpp +++ b/interfaces/kits/updaterkits/updaterkits.cpp @@ -136,7 +136,7 @@ static bool IsPackagePath(const std::string &path) static void UpdateOptExpand(std::string& updateOpt) { - if (updateOpt.find("--shrink_info=") == std::string::npos || + if (updateOpt.find("--shrink_info=") == std::string::npos && updateOpt.find("--virtual_shrink_info=") == std::string::npos) { return; } -- Gitee From 5cac6febb4468063ac5f158c585cebe1197c0702 Mon Sep 17 00:00:00 2001 From: lizhao Date: Fri, 24 Jan 2025 10:04:38 +0800 Subject: [PATCH 3/4] fix Signed-off-by: lizhao --- services/updater.cpp | 5 ----- utils/include/utils.h | 2 +- utils/utils.cpp | 4 ++-- 3 files changed, 3 insertions(+), 8 deletions(-) diff --git a/services/updater.cpp b/services/updater.cpp index c28933e0..9e8e4a95 100644 --- a/services/updater.cpp +++ b/services/updater.cpp @@ -117,11 +117,6 @@ UpdaterStatus IsSpaceCapacitySufficient(const UpdaterParams &upParams) uint64_t maxStashSize = *max_element(stashSizeList.begin(), stashSizeList.end()); LOG(INFO) << "get max stash size: " << maxStashSize; uint64_t totalPkgSize = maxStashSize + MIN_UPDATE_SPACE; - uint64_t shrinkSize = 0; - if (!upParams.virtualShrinkInfo.empty() && - Utils::ConvertToUnsignedLongLong(upParams.virtualShrinkInfo, shrinkSize)) { - totalPkgSize += shrinkSize * 3 / 2; // 3 / 2 = 1.5 - } LOG(INFO) << "needed totalPkgSize = " << totalPkgSize; if (CheckStatvfs(totalPkgSize) != UPDATE_SUCCESS) { LOG(ERROR) << "CheckStatvfs error"; diff --git a/utils/include/utils.h b/utils/include/utils.h index 0074fceb..11170dda 100644 --- a/utils/include/utils.h +++ b/utils/include/utils.h @@ -106,7 +106,7 @@ bool IsEsDevice(); bool ConvertToUnsignedLongLong(const std::string &str, uint64_t &value); bool ConvertToLongLong(const std::string &str, int64_t &value); bool ConvertToLong(const std::string &str, int32_t &value); -bool ConvertToUnsignedLong(const std::string &str, uint32_t &value); +bool ConvertToUnsignedLong(const std::string &str, uint32_t &value, int base = 0); bool ConvertToDouble(const std::string &str, double &value); bool ConvertToFloat(const std::string &str, float &value); #ifndef __WIN32 diff --git a/utils/utils.cpp b/utils/utils.cpp index 0fdf150d..854e135c 100644 --- a/utils/utils.cpp +++ b/utils/utils.cpp @@ -1007,12 +1007,12 @@ bool ConvertToLong(const std::string &str, int32_t &value) return true; } -bool ConvertToUnsignedLong(const std::string &str, uint32_t &value) +bool ConvertToUnsignedLong(const std::string &str, uint32_t &value, int base) { char *endPtr = nullptr; errno = 0; - value = std::strtoul(str.c_str(), &endPtr, 16); // 16 : hexadecimal scale + value = std::strtoul(str.c_str(), &endPtr, base); #ifndef UPDATER_UT if (endPtr == str.c_str() || *endPtr != '\0' || errno == ERANGE) { LOG(ERROR) << "Convert string to uint32_t failed, str " << str << " converted to value " << value; -- Gitee From d621a1ba9a872a2eaf7e95cbcdbd0d2cb7bb491b Mon Sep 17 00:00:00 2001 From: lizhao Date: Fri, 24 Jan 2025 11:13:05 +0800 Subject: [PATCH 4/4] fix Signed-off-by: lizhao --- interfaces/kits/updaterkits/updaterkits.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/interfaces/kits/updaterkits/updaterkits.cpp b/interfaces/kits/updaterkits/updaterkits.cpp index 1acea1fd..f4e79b49 100755 --- a/interfaces/kits/updaterkits/updaterkits.cpp +++ b/interfaces/kits/updaterkits/updaterkits.cpp @@ -140,12 +140,12 @@ static void UpdateOptExpand(std::string& updateOpt) updateOpt.find("--virtual_shrink_info=") == std::string::npos) { return; } - struct stat file_stat; - int ret = stat("/data/service/el1/0/hyperhold", &file_stat); + struct stat fileStat; + int ret = stat("/data/service/el1/0/hyperhold", &fileStat); if (ret != 0) { return; } - std::string inode = std::to_string(file_stat.st_ino); + std::string inode = std::to_string(fileStat.st_ino); updateOpt += "," + inode; } -- Gitee