From 3e24926d4b4201377a91aec3c906795f2d63cade Mon Sep 17 00:00:00 2001 From: zhangxiaoyu Date: Thu, 11 May 2023 15:17:12 +0800 Subject: [PATCH] update from upstream to update cri Signed-off-by: zhangxiaoyu --- ...dify-dependence-from-lcr-to-libisula.patch | 206 -- ...ry_swap_limit_in_bytes-fields-into-C.patch | 243 -- 0003-Add-macro-for-protoc-cmake.patch | 135 - 0004-fix-design-typo.patch | 25 - 0005-fix-cpu-rt-review-comments.patch | 44 - 0006-fix-inspect.sh-failed.patch | 31 - 0007-add-CRI-ContainerStats-Service.patch | 490 ---- 0008-fix-isula-cpu-rt-CI.patch | 183 -- 0009-fix-cpu-rt-CI.patch | 105 - 0010-fix-cpu-rt-CI.patch | 54 - 0011-Bugfix-in-config-and-executor.patch | 52 - ...-cpu-rt-disable-after-reboot-machine.patch | 823 ------ ...l_ut-timeout-and-add-timeout-for-all.patch | 465 ---- 0014-add-retry-for-read-write.patch | 360 --- 0015-support-pull-image-with-digest.patch | 302 --- ...d-shim-support-execSync-with-timeout.patch | 186 -- 0017-Refine-the-commit-info.patch | 30 - 0018-Refine-typo-of-word-container.patch | 85 - 0019-cleancode-for-read-write.patch | 54 - 0020-add-crictl-timeout-and-sync-for-CI.patch | 127 - 0021-unlock-m_podsLock-if-new-failed.patch | 27 - 0022-Update-CRI.patch | 73 - 0023-add-cgroup-cpu-ut.patch | 70 - 0024-remove-temp-variables.patch | 179 -- 0025-fix-read-member-error-from-struct.patch | 34 - 0026-Fix-PR-runc.patch | 108 - ...w-the-paused-container-to-be-stopped.patch | 68 - 0028-Refine.patch | 29 - ...rt-isula-update-when-runtime-is-runc.patch | 291 --- 0030-Refine-as-others-feedback.patch | 41 - ...RI-SetupPod-and-TearDownPod-deadlock.patch | 134 - 0032-remote-layer-store-demo.patch | 2296 ----------------- 0033-add-ci-for-remote-ro.patch | 119 - ...-usleep-to-avoid-lossing-of-accuracy.patch | 26 - ...pile-error-when-not-enable-remote-ro.patch | 62 - ...apt-to-repo-of-openeuler-url-changed.patch | 33 - 0037-change-goto-branch.patch | 27 - 0038-CI-not-enable-remote-ro-for-ut.patch | 41 - 0039-use-auto-free-to-proc_t.patch | 43 - 0040-modifying-cpurt-file-permissions.patch | 72 - ...INFOFUNCTION-instead-of-deprecated-C.patch | 131 - ...-try-add-or-remove-image-layer-twice.patch | 99 - ...lete-layers-under-dir-overlay-layers.patch | 34 - ...nt-about-support-remote-ro-directory.patch | 396 --- 0045-Refine-a-minor-log-message.patch | 34 - ...n-value-of-the-util_waitpid_with_tim.patch | 44 - 0047-fix-util_getgrent_r-overflow.patch | 74 - 0048-add-ut-for-runc.patch | 188 -- 0049-add-runc-doc.patch | 506 ---- 0050-fix-isula_rt_ops_ut-bugs.patch | 28 - 0051-refactor-remote-ro-code.patch | 2089 --------------- 0052-add-ci-for-runc.patch | 1666 ------------ ...en-refresh-can-t-load-or-pull-images.patch | 319 --- iSulad.spec | 72 +- v2.1.1.tar.gz => v2.1.2.tar.gz | Bin 10570579 -> 10760255 bytes 55 files changed, 12 insertions(+), 13441 deletions(-) delete mode 100644 0001-modify-dependence-from-lcr-to-libisula.patch delete mode 100644 0002-Add-unified-memory_swap_limit_in_bytes-fields-into-C.patch delete mode 100644 0003-Add-macro-for-protoc-cmake.patch delete mode 100644 0004-fix-design-typo.patch delete mode 100644 0005-fix-cpu-rt-review-comments.patch delete mode 100644 0006-fix-inspect.sh-failed.patch delete mode 100644 0007-add-CRI-ContainerStats-Service.patch delete mode 100644 0008-fix-isula-cpu-rt-CI.patch delete mode 100644 0009-fix-cpu-rt-CI.patch delete mode 100644 0010-fix-cpu-rt-CI.patch delete mode 100644 0011-Bugfix-in-config-and-executor.patch delete mode 100644 0012-fix-cpu-rt-disable-after-reboot-machine.patch delete mode 100644 0013-fix-selinux_label_ut-timeout-and-add-timeout-for-all.patch delete mode 100644 0014-add-retry-for-read-write.patch delete mode 100644 0015-support-pull-image-with-digest.patch delete mode 100644 0016-isulad-shim-support-execSync-with-timeout.patch delete mode 100644 0017-Refine-the-commit-info.patch delete mode 100644 0018-Refine-typo-of-word-container.patch delete mode 100644 0019-cleancode-for-read-write.patch delete mode 100644 0020-add-crictl-timeout-and-sync-for-CI.patch delete mode 100644 0021-unlock-m_podsLock-if-new-failed.patch delete mode 100644 0022-Update-CRI.patch delete mode 100644 0023-add-cgroup-cpu-ut.patch delete mode 100644 0024-remove-temp-variables.patch delete mode 100644 0025-fix-read-member-error-from-struct.patch delete mode 100644 0026-Fix-PR-runc.patch delete mode 100644 0027-allow-the-paused-container-to-be-stopped.patch delete mode 100644 0028-Refine.patch delete mode 100644 0029-support-isula-update-when-runtime-is-runc.patch delete mode 100644 0030-Refine-as-others-feedback.patch delete mode 100644 0031-fix-CRI-SetupPod-and-TearDownPod-deadlock.patch delete mode 100644 0032-remote-layer-store-demo.patch delete mode 100644 0033-add-ci-for-remote-ro.patch delete mode 100644 0034-change-sleep-to-usleep-to-avoid-lossing-of-accuracy.patch delete mode 100644 0035-fix-compile-error-when-not-enable-remote-ro.patch delete mode 100644 0036-adapt-to-repo-of-openeuler-url-changed.patch delete mode 100644 0037-change-goto-branch.patch delete mode 100644 0038-CI-not-enable-remote-ro-for-ut.patch delete mode 100644 0039-use-auto-free-to-proc_t.patch delete mode 100644 0040-modifying-cpurt-file-permissions.patch delete mode 100644 0041-use-CURLOPT_XFERINFOFUNCTION-instead-of-deprecated-C.patch delete mode 100644 0042-bugfix-remote-ro-try-add-or-remove-image-layer-twice.patch delete mode 100644 0043-bugfix-can-t-delete-layers-under-dir-overlay-layers.patch delete mode 100644 0044-doc-add-document-about-support-remote-ro-directory.patch delete mode 100644 0045-Refine-a-minor-log-message.patch delete mode 100644 0046-modify-the-return-value-of-the-util_waitpid_with_tim.patch delete mode 100644 0047-fix-util_getgrent_r-overflow.patch delete mode 100644 0048-add-ut-for-runc.patch delete mode 100644 0049-add-runc-doc.patch delete mode 100644 0050-fix-isula_rt_ops_ut-bugs.patch delete mode 100644 0051-refactor-remote-ro-code.patch delete mode 100644 0052-add-ci-for-runc.patch delete mode 100644 0053-bugfix-when-refresh-can-t-load-or-pull-images.patch rename v2.1.1.tar.gz => v2.1.2.tar.gz (59%) diff --git a/0001-modify-dependence-from-lcr-to-libisula.patch b/0001-modify-dependence-from-lcr-to-libisula.patch deleted file mode 100644 index 83d70eb..0000000 --- a/0001-modify-dependence-from-lcr-to-libisula.patch +++ /dev/null @@ -1,206 +0,0 @@ -From d3d13f374bb341e7e4d389feb1780e43fec91945 Mon Sep 17 00:00:00 2001 -From: zhangxiaoyu -Date: Tue, 7 Feb 2023 14:27:51 +0800 -Subject: [PATCH 01/53] modify dependence from lcr to libisula - -Signed-off-by: zhangxiaoyu ---- - cmake/checker.cmake | 2 +- - iSulad.spec | 10 ++++----- - isulad.pc.in | 6 +++--- - src/CMakeLists.txt | 32 ++++++++++++++-------------- - src/daemon/modules/runtime/runtime.c | 14 ++---------- - 5 files changed, 27 insertions(+), 37 deletions(-) - -diff --git a/cmake/checker.cmake b/cmake/checker.cmake -index 0a4b6fb6..a1ca9360 100644 ---- a/cmake/checker.cmake -+++ b/cmake/checker.cmake -@@ -92,7 +92,7 @@ if (ENABLE_SELINUX) - endif() - - # check iSula libutils --pkg_check_modules(PC_ISULA_LIBUTILS REQUIRED "lcr") -+pkg_check_modules(PC_ISULA_LIBUTILS REQUIRED "libisula") - find_path(ISULA_LIBUTILS_INCLUDE_DIR isula_libutils/log.h - HINTS ${PC_ISULA_LIBUTILS_INCLUDEDIR} ${PC_ISULA_LIBUTILS_INCLUDE_DIRS}) - _CHECK(ISULA_LIBUTILS_INCLUDE_DIR "ISULA_LIBUTILS_INCLUDE_DIR-NOTFOUND" "isula_libutils/log.h") -diff --git a/iSulad.spec b/iSulad.spec -index 79275885..3cff9c25 100644 ---- a/iSulad.spec -+++ b/iSulad.spec -@@ -16,7 +16,7 @@ ExclusiveArch: x86_64 aarch64 - - %ifarch x86_64 aarch64 - Provides: libhttpclient.so()(64bit) --Provides: libisula.so()(64bit) -+Provides: libisula_client.so()(64bit) - Provides: libisulad_img.so()(64bit) - Provides: libisulad_tools.so()(64bit) - %endif -@@ -42,14 +42,14 @@ BuildRequires: lib-shim-v2-devel - Requires: lib-shim-v2 - %endif - --BuildRequires: cmake gcc-c++ lxc-devel lcr-devel yajl-devel -+BuildRequires: cmake gcc-c++ lxc-devel lcr-devel yajl-devel libisula-devel - BuildRequires: grpc-plugins grpc-devel protobuf-devel - BuildRequires: libcurl-devel libarchive-devel device-mapper-devel - BuildRequires: http-parser-devel - BuildRequires: libselinux-devel libwebsockets-devel - BuildRequires: systemd-devel git - --Requires: lcr lxc -+Requires: libisula lxc - Requires: grpc libcurl http-parser - Requires: libselinux libwebsockets libarchive device-mapper - Requires: systemd -@@ -78,13 +78,13 @@ cd build - rm -rf %{buildroot} - cd build - install -d $RPM_BUILD_ROOT/%{_libdir} --install -m 0644 ./src/libisula.so %{buildroot}/%{_libdir}/libisula.so -+install -m 0644 ./src/libisula_client.so %{buildroot}/%{_libdir}/libisula_client.so - install -m 0644 ./src/utils/http/libhttpclient.so %{buildroot}/%{_libdir}/libhttpclient.so - chrpath -d ./src/libisulad_tools.so - install -m 0644 ./src/libisulad_tools.so %{buildroot}/%{_libdir}/libisulad_tools.so - chrpath -d ./src/daemon/modules/image/libisulad_img.so - install -m 0644 ./src/daemon/modules/image/libisulad_img.so %{buildroot}/%{_libdir}/libisulad_img.so --chmod +x %{buildroot}/%{_libdir}/libisula.so -+chmod +x %{buildroot}/%{_libdir}/libisula_client.so - chmod +x %{buildroot}/%{_libdir}/libhttpclient.so - chmod +x %{buildroot}/%{_libdir}/libisulad_img.so - -diff --git a/isulad.pc.in b/isulad.pc.in -index 695ba364..016e406d 100644 ---- a/isulad.pc.in -+++ b/isulad.pc.in -@@ -3,10 +3,10 @@ libdir=@CMAKE_INSTALL_PREFIX@/lib - localstatedir=@CMAKE_INSTALL_PREFIX@/var - includedir=@CMAKE_INSTALL_PREFIX@/include - --Name: libisula --Description: light-weighted container runtime daemon library -+Name: libisula_client -+Description: light-weighted container client library - Version: @ISULAD_VERSION@ - URL: iSulad --Libs: -L@CMAKE_INSTALL_PREFIX@/lib -lisula -+Libs: -L@CMAKE_INSTALL_PREFIX@/lib -lisula_client - Cflags: -I@CMAKE_INSTALL_PREFIX@/include - -diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt -index abce1284..8de18082 100644 ---- a/src/CMakeLists.txt -+++ b/src/CMakeLists.txt -@@ -60,40 +60,40 @@ endif() - # get all c and header files - list(REMOVE_DUPLICATES SHARED_INCS) - --# ------ build libisula ------ -+# ------ build libisula_client ------ - - add_subdirectory(client) - if (OPENSSL_VERIFY) - list(APPEND CLIENT_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/utils/http/certificate.c) - endif() - --add_library(libisula ${LIBTYPE} -+add_library(libisula_client ${LIBTYPE} - ${CLIENT_SRCS} - ) - --target_include_directories(libisula PUBLIC -+target_include_directories(libisula_client PUBLIC - ${SHARED_INCS} - ${CLIENT_INCS} - ${CMAKE_CURRENT_SOURCE_DIR}/utils/http - ) - --# set libisula FLAGS --set_target_properties(libisula PROPERTIES PREFIX "") -+# set libisula_client FLAGS -+set_target_properties(libisula_client PROPERTIES PREFIX "") - --target_link_libraries(libisula libisulad_tools) -+target_link_libraries(libisula_client libisulad_tools) - - if (GRPC_CONNECTOR) -- target_link_libraries(libisula -Wl,--as-needed -lstdc++) -- target_link_libraries(libisula -Wl,--as-needed ${PROTOBUF_LIBRARY}) -- target_link_libraries(libisula -Wl,--no-as-needed ${GRPC_PP_REFLECTION_LIBRARY} ${GRPC_PP_LIBRARY} ${GRPC_LIBRARY} ${GPR_LIBRARY}) -+ target_link_libraries(libisula_client -Wl,--as-needed -lstdc++) -+ target_link_libraries(libisula_client -Wl,--as-needed ${PROTOBUF_LIBRARY}) -+ target_link_libraries(libisula_client -Wl,--no-as-needed ${GRPC_PP_REFLECTION_LIBRARY} ${GRPC_PP_LIBRARY} ${GRPC_LIBRARY} ${GPR_LIBRARY}) - if(ABSL_SYNC_LIB) -- target_link_libraries(libisula -Wl,--no-as-needed ${ABSL_SYNC_LIB}) -+ target_link_libraries(libisula_client -Wl,--no-as-needed ${ABSL_SYNC_LIB}) - endif() - else() -- target_link_libraries(libisula -ldl libhttpclient) -- set_target_properties(libisula PROPERTIES LINKER_LANGUAGE "C") -+ target_link_libraries(libisula_client -ldl libhttpclient) -+ set_target_properties(libisula_client PROPERTIES LINKER_LANGUAGE "C") - endif() --# ------ build libisula finish ----- -+# ------ build libisula_client finish ----- - - add_subdirectory(cmd) - # ------ build isula ------- -@@ -101,7 +101,7 @@ add_executable(isula - ${ISULA_SRCS} - ) - target_include_directories(isula PUBLIC ${ISULA_INCS} ${SHARED_INCS}) --target_link_libraries(isula libisula ${LIBYAJL_LIBRARY}) -+target_link_libraries(isula libisula_client ${LIBYAJL_LIBRARY}) - if (ANDROID OR MUSL) - target_link_libraries(isula ${LIBSSL_LIBRARY}) - else() -@@ -192,7 +192,7 @@ endif() - - if (ISULAD_GCOV) - target_link_libraries(isula -lgcov) -- target_link_libraries(libisula -lgcov) -+ target_link_libraries(libisula_client -lgcov) - target_link_libraries(isulad -lgcov) - endif() - -@@ -201,7 +201,7 @@ endif() - # ------ install binary -------- - install(TARGETS libisulad_tools - ${INSTALL_TYPE} DESTINATION ${LIB_INSTALL_DIR_DEFAULT} PERMISSIONS OWNER_READ OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) --install(TARGETS libisula -+install(TARGETS libisula_client - ${INSTALL_TYPE} DESTINATION ${LIB_INSTALL_DIR_DEFAULT} PERMISSIONS OWNER_READ OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) - install(TARGETS isula - RUNTIME DESTINATION bin PERMISSIONS OWNER_READ OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) -diff --git a/src/daemon/modules/runtime/runtime.c b/src/daemon/modules/runtime/runtime.c -index 23a4d60f..7a3ed87f 100644 ---- a/src/daemon/modules/runtime/runtime.c -+++ b/src/daemon/modules/runtime/runtime.c -@@ -542,20 +542,10 @@ bool is_default_runtime(const char *name) - - int runtime_init() - { -- int ret = 0; -- - if (engines_global_init()) { - ERROR("Init engines global failed"); -- ret = -1; -- goto out; -+ return -1; - } - -- /* Init default engine, now is lcr */ -- if (engines_discovery(DEFAULT_RUNTIME_NAME)) { -- ERROR("Failed to discovery engine %s", DEFAULT_RUNTIME_NAME); -- ret = -1; -- } -- --out: -- return ret; -+ return 0; - } --- -2.25.1 - diff --git a/0002-Add-unified-memory_swap_limit_in_bytes-fields-into-C.patch b/0002-Add-unified-memory_swap_limit_in_bytes-fields-into-C.patch deleted file mode 100644 index b492de1..0000000 --- a/0002-Add-unified-memory_swap_limit_in_bytes-fields-into-C.patch +++ /dev/null @@ -1,243 +0,0 @@ -From 27c3d00f74c5641685d5781fe0c02c5eead92d23 Mon Sep 17 00:00:00 2001 -From: "ilya.kuksenok" -Date: Thu, 2 Feb 2023 14:41:16 +0300 -Subject: [PATCH 02/53] Add unified, memory_swap_limit_in_bytes fields into - ContainerStats; add unified and memory_swap_limit_in_bytes into - UpdateCreateConfig add nullptr for unified. - ---- - src/daemon/common/sysinfo.c | 3 +- - .../cri/cri_container_manager_service.cc | 19 ++++++++++++ - src/daemon/entry/cri/cri_helpers.cc | 17 ++++++++++- - src/daemon/modules/runtime/runtime.c | 30 +++++++++---------- - 4 files changed, 52 insertions(+), 17 deletions(-) - -diff --git a/src/daemon/common/sysinfo.c b/src/daemon/common/sysinfo.c -index 8b5768db..38416db4 100644 ---- a/src/daemon/common/sysinfo.c -+++ b/src/daemon/common/sysinfo.c -@@ -743,7 +743,8 @@ static void check_cgroup_mem(struct layer **layers, bool quiet, cgroup_mem_info_ - return; - } - -- meminfo->limit = true; -+ meminfo->limit = cgroup_enabled(mountpoint, CGROUP_MEMORY_LIMIT); -+ cgroup_do_log(quiet, !(meminfo->limit), "Your kernel does not support memory limit"); - - meminfo->swap = cgroup_enabled(mountpoint, CGROUP_MEMORY_SWAP); - cgroup_do_log(quiet, !(meminfo->swap), "Your kernel does not support swap memory limit"); -diff --git a/src/daemon/entry/cri/cri_container_manager_service.cc b/src/daemon/entry/cri/cri_container_manager_service.cc -index d2f486cf..d044cca8 100644 ---- a/src/daemon/entry/cri/cri_container_manager_service.cc -+++ b/src/daemon/entry/cri/cri_container_manager_service.cc -@@ -1084,6 +1084,12 @@ void ContainerManagerService::UpdateContainerResources(const std::string &contai - struct parser_context ctx { - OPT_GEN_SIMPLIFY, 0 - }; -+ json_map_string_string *unified = nullptr; -+ unified = (json_map_string_string *)util_common_calloc_s(sizeof(json_map_string_string)); -+ if (unified == nullptr) { -+ error.SetError("Out of memory"); -+ goto cleanup; -+ } - request = (container_update_request *)util_common_calloc_s(sizeof(container_update_request)); - if (request == nullptr) { - error.SetError("Out of memory"); -@@ -1100,6 +1106,18 @@ void ContainerManagerService::UpdateContainerResources(const std::string &contai - hostconfig->cpu_period = resources.cpu_period(); - hostconfig->cpu_quota = resources.cpu_quota(); - hostconfig->cpu_shares = resources.cpu_shares(); -+ hostconfig->memory_swap_limit_in_bytes = resources.memory_swap_limit_in_bytes(); -+ -+ if (!resources.unified().empty()) { -+ for (auto &iter : resources.unified()) { -+ if (append_json_map_string_string(unified, iter.first.c_str(), iter.second.c_str()) != 0) { -+ error.SetError("Failed to append string"); -+ goto cleanup; -+ } -+ } -+ } -+ hostconfig->unified = unified; -+ unified = nullptr; - hostconfig->memory = resources.memory_limit_in_bytes(); - if (!resources.cpuset_cpus().empty()) { - hostconfig->cpuset_cpus = util_strdup_s(resources.cpuset_cpus().c_str()); -@@ -1126,6 +1144,7 @@ cleanup: - free_container_update_request(request); - free_container_update_response(response); - free_host_config(hostconfig); -+ free_json_map_string_string(unified); - free(perror); - } - -diff --git a/src/daemon/entry/cri/cri_helpers.cc b/src/daemon/entry/cri/cri_helpers.cc -index ddcc153f..2f6dcf78 100644 ---- a/src/daemon/entry/cri/cri_helpers.cc -+++ b/src/daemon/entry/cri/cri_helpers.cc -@@ -445,8 +445,23 @@ void UpdateCreateConfig(container_config *createConfig, host_config *hc, - hc->cpuset_mems = util_strdup_s(rOpts.cpuset_mems().c_str()); - } - hc->oom_score_adj = rOpts.oom_score_adj(); -+ hc->memory_swap_limit_in_bytes = rOpts.memory_swap_limit_in_bytes(); -+ auto *unified = (json_map_string_string *)util_common_calloc_s(sizeof(json_map_string_string)); -+ if (unified == nullptr) { -+ error.SetError("Out of memory"); -+ return; -+ } -+ if (!rOpts.unified().empty()) { -+ for (auto &iter : rOpts.unified()) { -+ if (append_json_map_string_string(unified, iter.first.c_str(), iter.second.c_str()) != 0) { -+ error.SetError("Failed to append string"); -+ free_json_map_string_string(unified); -+ return; -+ } -+ } -+ } -+ hc->unified = unified; - } -- - createConfig->open_stdin = config.stdin(); - createConfig->tty = config.tty(); - } -diff --git a/src/daemon/modules/runtime/runtime.c b/src/daemon/modules/runtime/runtime.c -index 7a3ed87f..29a64ac1 100644 ---- a/src/daemon/modules/runtime/runtime.c -+++ b/src/daemon/modules/runtime/runtime.c -@@ -122,7 +122,7 @@ int runtime_create(const char *name, const char *runtime, const rt_create_params - const struct rt_ops *ops = NULL; - - if (name == NULL || runtime == NULL) { -- ERROR("Invalide arguments for runtime create"); -+ ERROR("Invalid arguments for runtime create"); - ret = -1; - goto out; - } -@@ -146,7 +146,7 @@ int runtime_start(const char *name, const char *runtime, const rt_start_params_t - const struct rt_ops *ops = NULL; - - if (name == NULL || runtime == NULL || pid_info == NULL) { -- ERROR("Invalide arguments for runtime start"); -+ ERROR("Invalid arguments for runtime start"); - ret = -1; - goto out; - } -@@ -194,7 +194,7 @@ int runtime_restart(const char *name, const char *runtime, const rt_restart_para - const struct rt_ops *ops = NULL; - - if (name == NULL || runtime == NULL) { -- ERROR("Invalide arguments for runtime restart"); -+ ERROR("Invalid arguments for runtime restart"); - ret = -1; - goto out; - } -@@ -218,7 +218,7 @@ int runtime_clean_resource(const char *name, const char *runtime, const rt_clean - const struct rt_ops *ops = NULL; - - if (name == NULL || runtime == NULL) { -- ERROR("Invalide arguments for runtime clean"); -+ ERROR("Invalid arguments for runtime clean"); - ret = -1; - goto out; - } -@@ -242,7 +242,7 @@ int runtime_rm(const char *name, const char *runtime, const rt_rm_params_t *para - const struct rt_ops *ops = NULL; - - if (name == NULL || runtime == NULL) { -- ERROR("Invalide arguments for runtime rm"); -+ ERROR("Invalid arguments for runtime rm"); - ret = -1; - goto out; - } -@@ -267,7 +267,7 @@ int runtime_status(const char *name, const char *runtime, const rt_status_params - const struct rt_ops *ops = NULL; - - if (name == NULL || runtime == NULL || status == NULL) { -- ERROR("Invalide arguments for runtime status"); -+ ERROR("Invalid arguments for runtime status"); - ret = -1; - goto out; - } -@@ -292,7 +292,7 @@ int runtime_resources_stats(const char *name, const char *runtime, const rt_stat - const struct rt_ops *ops = NULL; - - if (name == NULL || runtime == NULL || rs_stats == NULL) { -- ERROR("Invalide arguments for runtime stats"); -+ ERROR("Invalid arguments for runtime stats"); - ret = -1; - goto out; - } -@@ -316,7 +316,7 @@ int runtime_exec(const char *name, const char *runtime, const rt_exec_params_t * - const struct rt_ops *ops = NULL; - - if (name == NULL || runtime == NULL || exit_code == NULL) { -- ERROR("Invalide arguments for runtime exec"); -+ ERROR("Invalid arguments for runtime exec"); - ret = -1; - goto out; - } -@@ -340,7 +340,7 @@ int runtime_pause(const char *name, const char *runtime, const rt_pause_params_t - const struct rt_ops *ops = NULL; - - if (name == NULL || runtime == NULL || params == NULL) { -- ERROR("Invalide arguments for runtime pause"); -+ ERROR("Invalid arguments for runtime pause"); - ret = -1; - goto out; - } -@@ -364,7 +364,7 @@ int runtime_resume(const char *name, const char *runtime, const rt_resume_params - const struct rt_ops *ops = NULL; - - if (name == NULL || runtime == NULL || params == NULL) { -- ERROR("Invalide arguments for runtime resume"); -+ ERROR("Invalid arguments for runtime resume"); - ret = -1; - goto out; - } -@@ -388,7 +388,7 @@ int runtime_attach(const char *name, const char *runtime, const rt_attach_params - const struct rt_ops *ops = NULL; - - if (name == NULL || runtime == NULL || params == NULL) { -- ERROR("Invalide arguments for runtime attach"); -+ ERROR("Invalid arguments for runtime attach"); - ret = -1; - goto out; - } -@@ -412,7 +412,7 @@ int runtime_update(const char *name, const char *runtime, const rt_update_params - const struct rt_ops *ops = NULL; - - if (name == NULL || runtime == NULL || params == NULL) { -- ERROR("Invalide arguments for runtime update"); -+ ERROR("Invalid arguments for runtime update"); - ret = -1; - goto out; - } -@@ -447,7 +447,7 @@ int runtime_listpids(const char *name, const char *runtime, const rt_listpids_pa - const struct rt_ops *ops = NULL; - - if (name == NULL || runtime == NULL || params == NULL || out == NULL) { -- ERROR("Invalide arguments for runtime listpids"); -+ ERROR("Invalid arguments for runtime listpids"); - ret = -1; - goto out; - } -@@ -471,7 +471,7 @@ int runtime_resize(const char *name, const char *runtime, const rt_resize_params - const struct rt_ops *ops = NULL; - - if (name == NULL || runtime == NULL || params == NULL) { -- ERROR("Invalide arguments for runtime resize"); -+ ERROR("Invalid arguments for runtime resize"); - ret = -1; - goto out; - } -@@ -495,7 +495,7 @@ int runtime_exec_resize(const char *name, const char *runtime, const rt_exec_res - const struct rt_ops *ops = NULL; - - if (name == NULL || runtime == NULL || params == NULL) { -- ERROR("Invalide arguments for runtime exec resize"); -+ ERROR("Invalid arguments for runtime exec resize"); - ret = -1; - goto out; - } --- -2.25.1 - diff --git a/0003-Add-macro-for-protoc-cmake.patch b/0003-Add-macro-for-protoc-cmake.patch deleted file mode 100644 index accf473..0000000 --- a/0003-Add-macro-for-protoc-cmake.patch +++ /dev/null @@ -1,135 +0,0 @@ -From 466309bc0aafe61ebed5c71012e28b9912783b60 Mon Sep 17 00:00:00 2001 -From: Xuepeng Xu -Date: Thu, 9 Feb 2023 14:32:59 +0800 -Subject: [PATCH 03/53] Add macro for protoc cmake - -Signed-off-by: Xuepeng Xu ---- - cmake/protoc.cmake | 98 +++++++++++++--------------------------------- - 1 file changed, 28 insertions(+), 70 deletions(-) - -diff --git a/cmake/protoc.cmake b/cmake/protoc.cmake -index 5c433e5c..23b8c077 100644 ---- a/cmake/protoc.cmake -+++ b/cmake/protoc.cmake -@@ -11,89 +11,47 @@ if (ENABLE_NATIVE_NETWORK) - set(NETWORK_PROTOS_OUT_PATH ${GRPC_OUT_PRE_PATH}/src/api/services/network) - endif() - -+macro(PROTOC_CPP_GEN proto_name cpp_out_path proto_path) -+ execute_process(COMMAND ${CMD_PROTOC} -I ${PROTOS_PATH}/${proto_name} --cpp_out=${cpp_out_path} ${proto_path} ERROR_VARIABLE cpp_err) -+ if (cpp_err) -+ message("Parse ${proto_path} failed: ") -+ message(FATAL_ERROR ${cpp_err}) -+ endif() -+endmacro(PROTOC_CPP_GEN) -+ -+macro(PROTOC_GRPC_GEN proto_name grpc_out_path proto_path) -+ execute_process(COMMAND ${CMD_PROTOC} -I ${PROTOS_PATH}/${proto_name} --grpc_out=${grpc_out_path} --plugin=protoc-gen-grpc=${CMD_GRPC_CPP_PLUGIN} ${proto_path} ERROR_VARIABLE grpc_err) -+ if (grpc_err) -+ message("Parse ${proto_path} failed: ") -+ message(FATAL_ERROR ${grpc_err}) -+ endif() -+endmacro(PROTOC_GRPC_GEN) -+ - if (GRPC_CONNECTOR) - execute_process(COMMAND mkdir -p ${CONTAINER_PROTOS_OUT_PATH}) - execute_process(COMMAND mkdir -p ${IMAGE_PROTOS_OUT_PATH}) - execute_process(COMMAND mkdir -p ${VOLUME_PROTOS_OUT_PATH}) - execute_process(COMMAND mkdir -p ${CRI_PROTOS_OUT_PATH}) -- execute_process(COMMAND ${CMD_PROTOC} -I ${PROTOS_PATH}/containers --cpp_out=${CONTAINER_PROTOS_OUT_PATH} -- ${PROTOS_PATH}/containers/container.proto ERROR_VARIABLE containers_err) -- if (containers_err) -- message("Parse ${PROTOS_PATH}/containers/container.proto failed: ") -- message(FATAL_ERROR ${containers_err}) -- endif() - -- execute_process(COMMAND ${CMD_PROTOC} -I ${PROTOS_PATH}/containers --grpc_out=${CONTAINER_PROTOS_OUT_PATH} --plugin=protoc-gen-grpc=${CMD_GRPC_CPP_PLUGIN} ${PROTOS_PATH}/containers/container.proto ERROR_VARIABLE containers_err) -- if (containers_err) -- message("Parse ${PROTOS_PATH}/containers/container.proto plugin failed: ") -- message(FATAL_ERROR ${containers_err}) -- endif() -+ PROTOC_CPP_GEN(containers ${CONTAINER_PROTOS_OUT_PATH} ${PROTOS_PATH}/containers/container.proto) -+ PROTOC_GRPC_GEN(containers ${CONTAINER_PROTOS_OUT_PATH} ${PROTOS_PATH}/containers/container.proto) - -- execute_process(COMMAND ${CMD_PROTOC} -I ${PROTOS_PATH}/images --cpp_out=${IMAGE_PROTOS_OUT_PATH} ${PROTOS_PATH}/images/images.proto ERROR_VARIABLE images_err) -- if (images_err) -- message("Parse ${PROTOS_PATH}/images/images.proto failed: ") -- message(FATAL_ERROR ${images_err}) -- endif() -+ PROTOC_CPP_GEN(images ${IMAGE_PROTOS_OUT_PATH} ${PROTOS_PATH}/images/images.proto) -+ PROTOC_GRPC_GEN(images ${IMAGE_PROTOS_OUT_PATH} ${PROTOS_PATH}/images/images.proto) - -- execute_process(COMMAND ${CMD_PROTOC} -I ${PROTOS_PATH}/images --grpc_out=${IMAGE_PROTOS_OUT_PATH} --plugin=protoc-gen-grpc=${CMD_GRPC_CPP_PLUGIN} ${PROTOS_PATH}/images/images.proto ERROR_VARIABLE images_err) -- if (images_err) -- message("Parse ${PROTOS_PATH}/images/images.proto plugin failed: ") -- message(FATAL_ERROR ${images_err}) -- endif() -+ PROTOC_CPP_GEN(volumes ${VOLUME_PROTOS_OUT_PATH} ${PROTOS_PATH}/volumes/volumes.proto) -+ PROTOC_GRPC_GEN(volumes ${VOLUME_PROTOS_OUT_PATH} ${PROTOS_PATH}/volumes/volumes.proto) - -- execute_process(COMMAND ${CMD_PROTOC} -I ${PROTOS_PATH}/volumes --cpp_out=${VOLUME_PROTOS_OUT_PATH} ${PROTOS_PATH}/volumes/volumes.proto ERROR_VARIABLE volumes_err) -- if (volumes_err) -- message("Parse ${PROTOS_PATH}/volumes/volumes.proto failed: ") -- message(FATAL_ERROR ${volumes_err}) -- endif() -+ PROTOC_CPP_GEN(cri ${CRI_PROTOS_OUT_PATH} ${PROTOS_PATH}/cri/api.proto) -+ PROTOC_GRPC_GEN(cri ${CRI_PROTOS_OUT_PATH} ${PROTOS_PATH}/cri/api.proto) - -- execute_process(COMMAND ${CMD_PROTOC} -I ${PROTOS_PATH}/volumes --grpc_out=${VOLUME_PROTOS_OUT_PATH} --plugin=protoc-gen-grpc=${CMD_GRPC_CPP_PLUGIN} ${PROTOS_PATH}/volumes/volumes.proto ERROR_VARIABLE volumes_err) -- if (volumes_err) -- message("Parse ${PROTOS_PATH}/volumes/volumes.proto plugin failed: ") -- message(FATAL_ERROR ${volumes_err}) -- endif() -- -- execute_process(COMMAND ${CMD_PROTOC} -I ${PROTOS_PATH}/cri --cpp_out=${CRI_PROTOS_OUT_PATH} ${PROTOS_PATH}/cri/api.proto -- ERROR_VARIABLE cri_err) -- if (cri_err) -- message("Parse ${PROTOS_PATH}/cri/api.proto failed: ") -- message(FATAL_ERROR ${cri_err}) -- endif() -- -- execute_process(COMMAND ${CMD_PROTOC} -I ${PROTOS_PATH}/cri --grpc_out=${CRI_PROTOS_OUT_PATH} -- --plugin=protoc-gen-grpc=${CMD_GRPC_CPP_PLUGIN} ${PROTOS_PATH}/cri/api.proto ERROR_VARIABLE cri_err) -- if (cri_err) -- message("Parse ${PROTOS_PATH}/cri/api.proto plugin failed: ") -- message(FATAL_ERROR ${cri_err}) -- endif() -- execute_process(COMMAND ${CMD_PROTOC} -I ${PROTOS_PATH}/cri --cpp_out=${CRI_PROTOS_OUT_PATH} ${PROTOS_PATH}/cri/gogo.proto -- ERROR_VARIABLE cri_err) -- if (cri_err) -- message("Parse ${PROTOS_PATH}/cri/gogo.proto failed: ") -- message(FATAL_ERROR ${cri_err}) -- endif() -- execute_process(COMMAND ${CMD_PROTOC} -I ${PROTOS_PATH}/cri --grpc_out=${CRI_PROTOS_OUT_PATH} -- --plugin=protoc-gen-grpc=${CMD_GRPC_CPP_PLUGIN} ${PROTOS_PATH}/cri/gogo.proto ERROR_VARIABLE cri_err) -- if (cri_err) -- message("Parse ${PROTOS_PATH}/cri/gogo.proto plugin failed: ") -- message(FATAL_ERROR ${cri_err}) -- endif() -+ PROTOC_CPP_GEN(cri ${CRI_PROTOS_OUT_PATH} ${PROTOS_PATH}/cri/gogo.proto) -+ PROTOC_GRPC_GEN(cri ${CRI_PROTOS_OUT_PATH} ${PROTOS_PATH}/cri/gogo.proto) - - if (ENABLE_NATIVE_NETWORK) - execute_process(COMMAND mkdir -p ${NETWORK_PROTOS_OUT_PATH}) -- execute_process(COMMAND ${CMD_PROTOC} -I ${PROTOS_PATH}/network -- --cpp_out=${NETWORK_PROTOS_OUT_PATH} ${PROTOS_PATH}/network/network.proto ERROR_VARIABLE network_err) -- if (network_err) -- message("Parse ${PROTOS_PATH}/network/network.proto failed: ") -- message(FATAL_ERROR ${network_err}) -- endif() -- -- execute_process(COMMAND ${CMD_PROTOC} -I ${PROTOS_PATH}/network --grpc_out=${NETWORK_PROTOS_OUT_PATH} -- --plugin=protoc-gen-grpc=${CMD_GRPC_CPP_PLUGIN} ${PROTOS_PATH}/network/network.proto ERROR_VARIABLE network_err) -- if (network_err) -- message("Parse ${PROTOS_PATH}/network/network.proto plugin failed: ") -- message(FATAL_ERROR ${network_err}) -- endif() -+ PROTOC_CPP_GEN(network ${NETWORK_PROTOS_OUT_PATH} ${PROTOS_PATH}/network/network.proto) -+ PROTOC_GRPC_GEN(network ${NETWORK_PROTOS_OUT_PATH} ${PROTOS_PATH}/network/network.proto) - endif() - endif() - --- -2.25.1 - diff --git a/0004-fix-design-typo.patch b/0004-fix-design-typo.patch deleted file mode 100644 index dafc2c7..0000000 --- a/0004-fix-design-typo.patch +++ /dev/null @@ -1,25 +0,0 @@ -From a7df50dc3b51f961f3d2e48dd968cfb115c39fec Mon Sep 17 00:00:00 2001 -From: zhushy -Date: Sat, 11 Feb 2023 00:05:53 +0800 -Subject: [PATCH 04/53] fix design typo - ---- - README.md | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/README.md b/README.md -index 3d1fc7cb..7e4b6de1 100644 ---- a/README.md -+++ b/README.md -@@ -70,7 +70,7 @@ CRI interface is implemented based on gRPC. iSulad implemented CRI gRPC Server f - - - [user manual](./docs/manual/README.md) - --- [desgin docs](./docs/design/README.md) -+- [design docs](./docs/design/README.md) - - ### Installing - --- -2.25.1 - diff --git a/0005-fix-cpu-rt-review-comments.patch b/0005-fix-cpu-rt-review-comments.patch deleted file mode 100644 index d5f812d..0000000 --- a/0005-fix-cpu-rt-review-comments.patch +++ /dev/null @@ -1,44 +0,0 @@ -From 257054b234debb7b1fcafce6f2ec3df828370aed Mon Sep 17 00:00:00 2001 -From: songbuhuang <544824346@qq.com> -Date: Sun, 12 Feb 2023 15:23:37 +0800 -Subject: [PATCH 05/53] fix cpu rt review comments - -Signed-off-by: songbuhuang <544824346@qq.com> ---- - src/daemon/executor/container_cb/execution_create.c | 10 +++++----- - 1 file changed, 5 insertions(+), 5 deletions(-) - -diff --git a/src/daemon/executor/container_cb/execution_create.c b/src/daemon/executor/container_cb/execution_create.c -index feaa3064..cc9ae716 100644 ---- a/src/daemon/executor/container_cb/execution_create.c -+++ b/src/daemon/executor/container_cb/execution_create.c -@@ -1327,7 +1327,7 @@ static int save_container_config_before_create(const char *id, const char *runti - static int maybe_create_cpu_realtime_file(int64_t value, const char *file, const char *path) - { - int ret; -- int fd = 0; -+ int fd = -1; - ssize_t nwrite; - char fpath[PATH_MAX] = { 0 }; - char buf[ISULAD_NUMSTRLEN64] = { 0 }; -@@ -1342,13 +1342,13 @@ static int maybe_create_cpu_realtime_file(int64_t value, const char *file, const - return -1; - } - -- int nret = snprintf(fpath, sizeof(fpath), "%s/%s", path, file); -- if (nret < 0 || nret >= sizeof(fpath)) { -+ ret = snprintf(fpath, sizeof(fpath), "%s/%s", path, file); -+ if (ret < 0 || ret >= sizeof(fpath)) { - ERROR("Failed to print string"); - return -1; - } -- nret = snprintf(buf, sizeof(buf), "%lld", (long long int)value); -- if (nret < 0 || (size_t)nret >= sizeof(buf)) { -+ ret = snprintf(buf, sizeof(buf), "%lld", (long long int)value); -+ if (ret < 0 || (size_t)ret >= sizeof(buf)) { - ERROR("Failed to print string"); - return -1; - } --- -2.25.1 - diff --git a/0006-fix-inspect.sh-failed.patch b/0006-fix-inspect.sh-failed.patch deleted file mode 100644 index 17f5510..0000000 --- a/0006-fix-inspect.sh-failed.patch +++ /dev/null @@ -1,31 +0,0 @@ -From e4993d0e89ca853d74d8b23895de0967b4379441 Mon Sep 17 00:00:00 2001 -From: zhangxiaoyu -Date: Mon, 13 Feb 2023 17:42:30 +0800 -Subject: [PATCH 06/53] fix inspect.sh failed - -Signed-off-by: zhangxiaoyu ---- - CI/test_cases/container_cases/inspect.sh | 7 +------ - 1 file changed, 1 insertion(+), 6 deletions(-) - -diff --git a/CI/test_cases/container_cases/inspect.sh b/CI/test_cases/container_cases/inspect.sh -index 0d4ccb02..cde9ea1f 100755 ---- a/CI/test_cases/container_cases/inspect.sh -+++ b/CI/test_cases/container_cases/inspect.sh -@@ -103,12 +103,7 @@ function test_inspect_spec() - isula inspect --format='{{.Image}}' $containername 2>&1 | grep "sha256:${image_id}" - [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to check container with image: ${image}" && ((ret++)) - -- if [ -d /sys/fs/cgroup/files ];then -- grepval="100" -- else -- grepval="0" -- fi -- isula inspect --format='{{json .HostConfig.FilesLimit}}' $containername 2>&1 | grep "$grepval" -+ isula inspect --format='{{json .HostConfig.FilesLimit}}' $containername 2>&1 | grep 0 - [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to check container with image: ${image}" && ((ret++)) - - isula inspect --format='{{json .Config.Env}}' $containername 2>&1 | grep "a=1" --- -2.25.1 - diff --git a/0007-add-CRI-ContainerStats-Service.patch b/0007-add-CRI-ContainerStats-Service.patch deleted file mode 100644 index e719086..0000000 --- a/0007-add-CRI-ContainerStats-Service.patch +++ /dev/null @@ -1,490 +0,0 @@ -From 9bd02c394110180ac7d7cbe80c1f4abe18146ebb Mon Sep 17 00:00:00 2001 -From: zhangxiaoyu -Date: Fri, 10 Feb 2023 17:43:11 +0800 -Subject: [PATCH 07/53] add CRI ContainerStats Service - -Signed-off-by: zhangxiaoyu ---- - .../connect/grpc/runtime_image_service.cc | 12 ++--- - .../connect/grpc/runtime_runtime_service.cc | 45 +++++++++++----- - .../connect/grpc/runtime_runtime_service.h | 3 ++ - .../cri/cri_container_manager_service.cc | 54 +++++++++++++++++++ - .../entry/cri/cri_container_manager_service.h | 3 ++ - src/daemon/entry/cri/cri_runtime_service.h | 3 ++ - .../entry/cri/cri_runtime_service_impl.cc | 6 +++ - .../entry/cri/cri_runtime_service_impl.h | 3 ++ - src/daemon/modules/events/collector.c | 4 +- - src/daemon/modules/image/image.c | 16 +++--- - .../modules/image/oci/oci_common_operators.c | 8 +-- - 11 files changed, 125 insertions(+), 32 deletions(-) - -diff --git a/src/daemon/entry/connect/grpc/runtime_image_service.cc b/src/daemon/entry/connect/grpc/runtime_image_service.cc -index 23447baf..e593a9c6 100644 ---- a/src/daemon/entry/connect/grpc/runtime_image_service.cc -+++ b/src/daemon/entry/connect/grpc/runtime_image_service.cc -@@ -54,7 +54,7 @@ grpc::Status RuntimeImageServiceImpl::ListImages(grpc::ServerContext *context, - std::vector> images; - Errors error; - -- WARN("Event: {Object: CRI, Type: Listing all images}"); -+ INFO("Event: {Object: CRI, Type: Listing all images}"); - - rService->ListImages(request->filter(), &images, error); - if (!error.Empty()) { -@@ -70,7 +70,7 @@ grpc::Status RuntimeImageServiceImpl::ListImages(grpc::ServerContext *context, - *image = *(iter->get()); - } - -- WARN("Event: {Object: CRI, Type: Listed all images}"); -+ INFO("Event: {Object: CRI, Type: Listed all images}"); - - return grpc::Status::OK; - } -@@ -82,7 +82,7 @@ grpc::Status RuntimeImageServiceImpl::ImageStatus(grpc::ServerContext *context, - std::unique_ptr image_info = nullptr; - Errors error; - -- WARN("Event: {Object: CRI, Type: Statusing image %s}", request->image().image().c_str()); -+ INFO("Event: {Object: CRI, Type: Statusing image %s}", request->image().image().c_str()); - - image_info = rService->ImageStatus(request->image(), error); - if (!error.Empty() && !CRIHelpers::IsImageNotFoundError(error.GetMessage())) { -@@ -96,7 +96,7 @@ grpc::Status RuntimeImageServiceImpl::ImageStatus(grpc::ServerContext *context, - *image = *image_info; - } - -- WARN("Event: {Object: CRI, Type: Statused image %s}", request->image().image().c_str()); -+ INFO("Event: {Object: CRI, Type: Statused image %s}", request->image().image().c_str()); - - return grpc::Status::OK; - } -@@ -108,7 +108,7 @@ grpc::Status RuntimeImageServiceImpl::ImageFsInfo(grpc::ServerContext *context, - std::vector> usages; - Errors error; - -- WARN("Event: {Object: CRI, Type: Statusing image fs info}"); -+ INFO("Event: {Object: CRI, Type: Statusing image fs info}"); - - rService->ImageFsInfo(&usages, error); - if (!error.Empty()) { -@@ -125,7 +125,7 @@ grpc::Status RuntimeImageServiceImpl::ImageFsInfo(grpc::ServerContext *context, - *fs_info = *(iter->get()); - } - -- WARN("Event: {Object: CRI, Type: Statused image fs info}"); -+ INFO("Event: {Object: CRI, Type: Statused image fs info}"); - return grpc::Status::OK; - } - -diff --git a/src/daemon/entry/connect/grpc/runtime_runtime_service.cc b/src/daemon/entry/connect/grpc/runtime_runtime_service.cc -index b6f9e751..8fed162b 100644 ---- a/src/daemon/entry/connect/grpc/runtime_runtime_service.cc -+++ b/src/daemon/entry/connect/grpc/runtime_runtime_service.cc -@@ -171,7 +171,7 @@ grpc::Status RuntimeRuntimeServiceImpl::ListContainers(grpc::ServerContext *cont - { - Errors error; - -- WARN("Event: {Object: CRI, Type: Listing all Container}"); -+ INFO("Event: {Object: CRI, Type: Listing all Container}"); - - std::vector> containers; - m_rService->ListContainers(request->has_filter() ? &request->filter() : nullptr, &containers, error); -@@ -189,7 +189,28 @@ grpc::Status RuntimeRuntimeServiceImpl::ListContainers(grpc::ServerContext *cont - *container = *(iter->get()); - } - -- WARN("Event: {Object: CRI, Type: Listed all Container}"); -+ INFO("Event: {Object: CRI, Type: Listed all Container}"); -+ -+ return grpc::Status::OK; -+} -+ -+grpc::Status RuntimeRuntimeServiceImpl::ContainerStats(grpc::ServerContext *context, -+ const runtime::v1alpha2::ContainerStatsRequest *request, -+ runtime::v1alpha2::ContainerStatsResponse *reply) -+{ -+ Errors error; -+ -+ INFO("Event: {Object: CRI, Type: Getting Container Stats: %s}", request->container_id().c_str()); -+ -+ std::unique_ptr contStats = -+ m_rService->ContainerStats(request->container_id(), error); -+ if (!error.Empty() || !contStats) { -+ ERROR("Object: CRI, Type: Failed to get container stats %s", request->container_id().c_str()); -+ return grpc::Status(grpc::StatusCode::UNKNOWN, error.GetMessage()); -+ } -+ *(reply->mutable_stats()) = *contStats; -+ -+ INFO("Event: {Object: CRI, Type: Got Container stats: %s}", request->container_id().c_str()); - - return grpc::Status::OK; - } -@@ -200,7 +221,7 @@ grpc::Status RuntimeRuntimeServiceImpl::ListContainerStats(grpc::ServerContext * - { - Errors error; - -- WARN("Event: {Object: CRI, Type: Listing all Container stats}"); -+ INFO("Event: {Object: CRI, Type: Listing all Container stats}"); - - std::vector> containers; - m_rService->ListContainerStats(request->has_filter() ? &request->filter() : nullptr, &containers, error); -@@ -218,7 +239,7 @@ grpc::Status RuntimeRuntimeServiceImpl::ListContainerStats(grpc::ServerContext * - *container = *(iter->get()); - } - -- WARN("Event: {Object: CRI, Type: Listed all Container stats}"); -+ INFO("Event: {Object: CRI, Type: Listed all Container stats}"); - - return grpc::Status::OK; - } -@@ -229,7 +250,7 @@ grpc::Status RuntimeRuntimeServiceImpl::ContainerStatus(grpc::ServerContext *con - { - Errors error; - -- WARN("Event: {Object: CRI, Type: Statusing Container: %s}", request->container_id().c_str()); -+ INFO("Event: {Object: CRI, Type: Statusing Container: %s}", request->container_id().c_str()); - - std::unique_ptr contStatus = - m_rService->ContainerStatus(request->container_id(), error); -@@ -239,7 +260,7 @@ grpc::Status RuntimeRuntimeServiceImpl::ContainerStatus(grpc::ServerContext *con - } - *(reply->mutable_status()) = *contStatus; - -- WARN("Event: {Object: CRI, Type: Statused Container: %s}", request->container_id().c_str()); -+ INFO("Event: {Object: CRI, Type: Statused Container: %s}", request->container_id().c_str()); - - return grpc::Status::OK; - } -@@ -329,7 +350,7 @@ grpc::Status RuntimeRuntimeServiceImpl::PodSandboxStatus(grpc::ServerContext *co - { - Errors error; - -- WARN("Event: {Object: CRI, Type: Status Pod: %s}", request->pod_sandbox_id().c_str()); -+ INFO("Event: {Object: CRI, Type: Status Pod: %s}", request->pod_sandbox_id().c_str()); - - std::unique_ptr podStatus; - podStatus = m_rService->PodSandboxStatus(request->pod_sandbox_id(), error); -@@ -340,7 +361,7 @@ grpc::Status RuntimeRuntimeServiceImpl::PodSandboxStatus(grpc::ServerContext *co - } - *(reply->mutable_status()) = *podStatus; - -- WARN("Event: {Object: CRI, Type: Statused Pod: %s}", request->pod_sandbox_id().c_str()); -+ INFO("Event: {Object: CRI, Type: Statused Pod: %s}", request->pod_sandbox_id().c_str()); - - return grpc::Status::OK; - } -@@ -351,7 +372,7 @@ grpc::Status RuntimeRuntimeServiceImpl::ListPodSandbox(grpc::ServerContext *cont - { - Errors error; - -- WARN("Event: {Object: CRI, Type: Listing all Pods}"); -+ INFO("Event: {Object: CRI, Type: Listing all Pods}"); - - std::vector> pods; - m_rService->ListPodSandbox(request->has_filter() ? &request->filter() : nullptr, &pods, error); -@@ -368,7 +389,7 @@ grpc::Status RuntimeRuntimeServiceImpl::ListPodSandbox(grpc::ServerContext *cont - *pod = *(iter->get()); - } - -- WARN("Event: {Object: CRI, Type: Listed all Pods}"); -+ INFO("Event: {Object: CRI, Type: Listed all Pods}"); - - return grpc::Status::OK; - } -@@ -460,7 +481,7 @@ grpc::Status RuntimeRuntimeServiceImpl::Status(grpc::ServerContext *context, - { - Errors error; - -- WARN("Event: {Object: CRI, Type: Statusing daemon}"); -+ INFO("Event: {Object: CRI, Type: Statusing daemon}"); - - std::unique_ptr status = m_rService->Status(error); - if (status == nullptr || error.NotEmpty()) { -@@ -469,7 +490,7 @@ grpc::Status RuntimeRuntimeServiceImpl::Status(grpc::ServerContext *context, - } - *(reply->mutable_status()) = *status; - -- WARN("Event: {Object: CRI, Type: Statused daemon}"); -+ INFO("Event: {Object: CRI, Type: Statused daemon}"); - - return grpc::Status::OK; - } -diff --git a/src/daemon/entry/connect/grpc/runtime_runtime_service.h b/src/daemon/entry/connect/grpc/runtime_runtime_service.h -index 6e8c1009..cb3c5425 100644 ---- a/src/daemon/entry/connect/grpc/runtime_runtime_service.h -+++ b/src/daemon/entry/connect/grpc/runtime_runtime_service.h -@@ -52,6 +52,9 @@ public: - const runtime::v1alpha2::ListContainerStatsRequest *request, - runtime::v1alpha2::ListContainerStatsResponse *reply) override; - -+ grpc::Status ContainerStats(grpc::ServerContext *context, const runtime::v1alpha2::ContainerStatsRequest *request, -+ runtime::v1alpha2::ContainerStatsResponse *reply) override; -+ - grpc::Status ContainerStatus(grpc::ServerContext *context, const runtime::v1alpha2::ContainerStatusRequest *request, - runtime::v1alpha2::ContainerStatusResponse *reply) override; - -diff --git a/src/daemon/entry/cri/cri_container_manager_service.cc b/src/daemon/entry/cri/cri_container_manager_service.cc -index d044cca8..710556a3 100644 ---- a/src/daemon/entry/cri/cri_container_manager_service.cc -+++ b/src/daemon/entry/cri/cri_container_manager_service.cc -@@ -893,6 +893,60 @@ cleanup: - free_container_stats_response(response); - } - -+auto ContainerManagerService::ContainerStats(const std::string &containerID, Errors &error) -+-> std::unique_ptr -+{ -+ container_stats_request *request { nullptr }; -+ container_stats_response *response { nullptr }; -+ std::unique_ptr contStats { nullptr }; -+ std::vector> contStatsVec; -+ -+ if (containerID.empty()) { -+ error.SetError("Empty container id"); -+ return nullptr; -+ } -+ -+ if (m_cb == nullptr || m_cb->container.stats == nullptr) { -+ error.SetError("Unimplemented callback"); -+ return nullptr; -+ } -+ -+ request = (container_stats_request *)util_common_calloc_s(sizeof(container_stats_request)); -+ if (request == nullptr) { -+ error.SetError("Out of memory"); -+ return nullptr; -+ } -+ -+ request->containers = (char **)util_smart_calloc_s(sizeof(char *), 1); -+ if (request->containers == nullptr) { -+ error.SetError("Out of memory"); -+ goto cleanup; -+ } -+ -+ request->containers[0] = util_strdup_s(containerID.c_str()); -+ request->containers_len = 1; -+ -+ if (m_cb->container.stats(request, &response) != 0) { -+ if (response != nullptr && response->errmsg != nullptr) { -+ error.SetError(response->errmsg); -+ } else { -+ error.SetError("Failed to call stats container callback"); -+ } -+ goto cleanup; -+ } -+ -+ ContainerStatsToGRPC(response, &contStatsVec, error); -+ if (error.NotEmpty()) { -+ goto cleanup; -+ } -+ contStats = std::move(contStatsVec[0]); -+ -+cleanup: -+ free_container_stats_request(request); -+ free_container_stats_response(response); -+ return contStats; -+} -+ - void ContainerManagerService::PackContainerImageToStatus( - container_inspect *inspect, std::unique_ptr &contStatus, Errors &error) - { -diff --git a/src/daemon/entry/cri/cri_container_manager_service.h b/src/daemon/entry/cri/cri_container_manager_service.h -index 8002b77d..6ec1f21d 100644 ---- a/src/daemon/entry/cri/cri_container_manager_service.h -+++ b/src/daemon/entry/cri/cri_container_manager_service.h -@@ -53,6 +53,9 @@ public: - std::vector> *containerstats, - Errors &error); - -+ auto ContainerStats(const std::string &containerID, Errors &error) -+ -> std::unique_ptr; -+ - auto ContainerStatus(const std::string &containerID, Errors &error) - -> std::unique_ptr; - -diff --git a/src/daemon/entry/cri/cri_runtime_service.h b/src/daemon/entry/cri/cri_runtime_service.h -index 4727230f..5e4740cb 100644 ---- a/src/daemon/entry/cri/cri_runtime_service.h -+++ b/src/daemon/entry/cri/cri_runtime_service.h -@@ -49,6 +49,9 @@ public: - std::vector> *containerstats, - Errors &error) = 0; - -+ virtual auto ContainerStats(const std::string &containerID, -+ Errors &error) -> std::unique_ptr = 0; -+ - virtual auto ContainerStatus(const std::string &containerID, - Errors &error) -> std::unique_ptr = 0; - -diff --git a/src/daemon/entry/cri/cri_runtime_service_impl.cc b/src/daemon/entry/cri/cri_runtime_service_impl.cc -index 241d4316..c4b84828 100644 ---- a/src/daemon/entry/cri/cri_runtime_service_impl.cc -+++ b/src/daemon/entry/cri/cri_runtime_service_impl.cc -@@ -70,6 +70,12 @@ void CRIRuntimeServiceImpl::ListContainerStats( - m_containerManager->ListContainerStats(filter, containerstats, error); - } - -+auto CRIRuntimeServiceImpl::ContainerStats(const std::string &containerID, Errors &error) -+-> std::unique_ptr -+{ -+ return m_containerManager->ContainerStats(containerID, error); -+} -+ - auto CRIRuntimeServiceImpl::ContainerStatus(const std::string &containerID, Errors &error) - -> std::unique_ptr - { -diff --git a/src/daemon/entry/cri/cri_runtime_service_impl.h b/src/daemon/entry/cri/cri_runtime_service_impl.h -index f2e25e42..7355c5cb 100644 ---- a/src/daemon/entry/cri/cri_runtime_service_impl.h -+++ b/src/daemon/entry/cri/cri_runtime_service_impl.h -@@ -51,6 +51,9 @@ public: - std::vector> *containerstats, - Errors &error) override; - -+ auto ContainerStats(const std::string &containerID, Errors &error) -+ -> std::unique_ptr override; -+ - auto ContainerStatus(const std::string &containerID, Errors &error) - -> std::unique_ptr override; - -diff --git a/src/daemon/modules/events/collector.c b/src/daemon/modules/events/collector.c -index fb4e4a98..f53ad319 100644 ---- a/src/daemon/modules/events/collector.c -+++ b/src/daemon/modules/events/collector.c -@@ -484,7 +484,7 @@ static int write_events_log(const struct isulad_events_format *events) - - len = calculate_annaotation_info_len(events); - if (len == 1) { -- WARN("Event: {Object: %s, Type: %s}", events->id, events->opt); -+ INFO("Event: {Object: %s, Type: %s}", events->id, events->opt); - } else { - annotation = (char *)util_common_calloc_s(len); - if (annotation == NULL) { -@@ -502,7 +502,7 @@ static int write_events_log(const struct isulad_events_format *events) - } - (void)strcat(annotation, ")"); - -- WARN("Event: {Object: %s, Type: %s %s}", events->id, events->opt, annotation); -+ INFO("Event: {Object: %s, Type: %s %s}", events->id, events->opt, annotation); - } - - out: -diff --git a/src/daemon/modules/image/image.c b/src/daemon/modules/image/image.c -index d5fbc8dc..a9b9523e 100644 ---- a/src/daemon/modules/image/image.c -+++ b/src/daemon/modules/image/image.c -@@ -416,7 +416,7 @@ int im_get_filesystem_info(const char *image_type, im_fs_info_response **respons - goto out; - } - -- WARN("Event: {Object: get image filesystem info, Type: inspecting}"); -+ INFO("Event: {Object: get image filesystem info, Type: inspecting}"); - ret = q->ops->get_filesystem_info(response); - if (ret != 0) { - if (response != NULL && *response != NULL) { -@@ -426,7 +426,7 @@ int im_get_filesystem_info(const char *image_type, im_fs_info_response **respons - } - goto out; - } -- WARN("Event: {Object: get image filesystem info, Type: inspected}"); -+ INFO("Event: {Object: get image filesystem info, Type: inspected}"); - - out: - return ret; -@@ -466,7 +466,7 @@ int im_get_container_filesystem_usage(const char *image_type, const char *id, im - request->name_id = util_strdup_s(id); - } - -- WARN("Event: {Object: container \'%s\' filesystem info, Type: inspecting}", id != NULL ? id : ""); -+ INFO("Event: {Object: container \'%s\' filesystem info, Type: inspecting}", id != NULL ? id : ""); - ret = q->ops->container_fs_usage(request, &filesystemusage); - if (ret != 0) { - ERROR("Failed to get filesystem usage for container %s", id); -@@ -476,7 +476,7 @@ int im_get_container_filesystem_usage(const char *image_type, const char *id, im - - *fs_usage = filesystemusage; - filesystemusage = NULL; -- WARN("Event: {Object: container \'%s\' filesystem info, Type: inspected}", id != NULL ? id : ""); -+ INFO("Event: {Object: container \'%s\' filesystem info, Type: inspected}", id != NULL ? id : ""); - - out: - free_im_container_fs_usage_request(request); -@@ -916,7 +916,7 @@ int im_list_images(const im_list_request *ctx, im_list_response **response) - return -1; - } - -- WARN("Event: {Object: list images, Type: listing}"); -+ INFO("Event: {Object: list images, Type: listing}"); - - for (i = 0; i < g_numbims; i++) { - if (g_bims[i].ops->list_ims == NULL) { -@@ -936,7 +936,7 @@ int im_list_images(const im_list_request *ctx, im_list_response **response) - images_tmp = NULL; - } - -- WARN("Event: {Object: list images, Type: listed}"); -+ INFO("Event: {Object: list images, Type: listed}"); - - if (g_isulad_errmsg != NULL) { - (*response)->errmsg = util_strdup_s(g_isulad_errmsg); -@@ -1671,7 +1671,7 @@ int im_inspect_image(const im_inspect_request *request, im_inspect_response **re - - image_ref = util_strdup_s(request->image.image); - -- WARN("Event: {Object: %s, Type: image inspecting}", image_ref); -+ INFO("Event: {Object: %s, Type: image inspecting}", image_ref); - - bim_type = bim_query(image_ref); - if (bim_type == NULL) { -@@ -1693,7 +1693,7 @@ int im_inspect_image(const im_inspect_request *request, im_inspect_response **re - goto pack_response; - } - -- WARN("Event: {Object: %s, Type: image inspected}", image_ref); -+ INFO("Event: {Object: %s, Type: image inspected}", image_ref); - - pack_response: - if (g_isulad_errmsg != NULL) { -diff --git a/src/daemon/modules/image/oci/oci_common_operators.c b/src/daemon/modules/image/oci/oci_common_operators.c -index 3d200e09..83cccbe6 100644 ---- a/src/daemon/modules/image/oci/oci_common_operators.c -+++ b/src/daemon/modules/image/oci/oci_common_operators.c -@@ -429,7 +429,7 @@ int oci_summary_image(im_summary_request *request, im_summary_response *response - goto pack_response; - } - -- WARN("Event: {Object: %s, Type: statusing image summary}", resolved_name); -+ INFO("Event: {Object: %s, Type: statusing image summary}", resolved_name); - - image_summary = storage_img_get_summary(resolved_name); - if (image_summary == NULL) { -@@ -442,7 +442,7 @@ int oci_summary_image(im_summary_request *request, im_summary_response *response - response->image_summary = image_summary; - image_summary = NULL; - -- WARN("Event: {Object: %s, Type: statused image summary}", resolved_name); -+ INFO("Event: {Object: %s, Type: statused image summary}", resolved_name); - - pack_response: - free(resolved_name); -@@ -493,7 +493,7 @@ int oci_status_image(im_status_request *request, im_status_response *response) - goto pack_response; - } - -- WARN("Event: {Object: %s, Type: statusing image}", resolved_name); -+ INFO("Event: {Object: %s, Type: statusing image}", resolved_name); - - image_info = storage_img_get(resolved_name); - if (image_info == NULL) { -@@ -506,7 +506,7 @@ int oci_status_image(im_status_request *request, im_status_response *response) - response->image_info->image = image_info; - image_info = NULL; - -- WARN("Event: {Object: %s, Type: statused image}", resolved_name); -+ INFO("Event: {Object: %s, Type: statused image}", resolved_name); - - pack_response: - free(resolved_name); --- -2.25.1 - diff --git a/0008-fix-isula-cpu-rt-CI.patch b/0008-fix-isula-cpu-rt-CI.patch deleted file mode 100644 index 3f2566f..0000000 --- a/0008-fix-isula-cpu-rt-CI.patch +++ /dev/null @@ -1,183 +0,0 @@ -From edef459d5052dc6d7c29e8a7a48ff4bf1b01bd78 Mon Sep 17 00:00:00 2001 -From: songbuhuang <544824346@qq.com> -Date: Tue, 14 Feb 2023 14:08:01 +0800 -Subject: [PATCH 08/53] fix isula cpu-rt CI - -Signed-off-by: songbuhuang <544824346@qq.com> ---- - CI/test_cases/container_cases/cpu_rt.sh | 102 +++++++++++++++++------- - 1 file changed, 73 insertions(+), 29 deletions(-) - -diff --git a/CI/test_cases/container_cases/cpu_rt.sh b/CI/test_cases/container_cases/cpu_rt.sh -index 3d70c840..353c2d71 100755 ---- a/CI/test_cases/container_cases/cpu_rt.sh -+++ b/CI/test_cases/container_cases/cpu_rt.sh -@@ -21,12 +21,12 @@ - declare -r curr_path=$(dirname $(readlink -f "$0")) - source ../helpers.sh - --function test_cpu_rt_isulad_spec() -+function test_cpurt_isulad_abnormal() - { - local ret=0 - local test="isulad cpu realtime test => (${FUNCNAME[@]})" - -- msg_info "${test} starting..." -+ msg_info "${test} starting..." - - isulad --cpu-rt-period xx --cpu-rt-runtime 950000 /bin/sh 2>&1 | grep 'Invalid value "xx" for flag --cpu-rt-period: Invalid argument' - [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - Invalid argument for cpu-rt-period" && ((ret++)) -@@ -38,54 +38,64 @@ function test_cpu_rt_isulad_spec() - return ${ret} - } - --function test_cpu_rt_isula_spec() -+function test_isula_update_normal() - { -- local ret=0 -- local image="busybox" -- local test="container cpu realtime test => (${FUNCNAME[@]})" -- -- msg_info "${test} starting..." -- -- #start isulad without cpu_rt -- start_isulad_without_valgrind -+ #start isulad with cpu_rt -+ isulad --cpu-rt-period 1000000 --cpu-rt-runtime 950000 -l DEBUG > /dev/null 2>&1 & -+ wait_isulad_running -+ -+ c_id=`isula run -itd --cpu-rt-period 1000000 --cpu-rt-runtime 950000 ${image} sh` -+ [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to run container with image: ${image}" && ((ret++)) - -- isula pull ${image} -- [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to pull image: ${image}" && return ${FAILURE} -+ isula update --cpu-rt-period 900000 --cpu-rt-runtime 800000 $c_id -+ [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to update container cpu-rt-runtime" && ((ret++)) - -- isula images | grep busybox -- [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - missing list image: ${image}" && ((ret++)) -+ isula exec -it $c_id sh -c "cat /sys/fs/cgroup/cpu/cpu.rt_runtime_us" | grep "800000" -+ [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to check container cpu.rt_runtime_us: 800000" && ((ret++)) - -- test_isula_run_spec -+ isula exec -it $c_id sh -c "cat /sys/fs/cgroup/cpu/cpu.rt_period_us" | grep "900000" -+ [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to check container cpu.rt_period_us: 900000" && ((ret++)) - -- #start isulad without cpu_rt:isulad cpu.rt_period_us default value is the cpu.rt_period_us of the upper-layer directory,cpu.rt_runtime_us is 0. -- isula run -itd --cpu-rt-period 1000000 --cpu-rt-runtime 10000 $image /bin/sh 2>&1 | grep "failed to write 10000" | grep "cpu.rt_runtime_us: Invalid argument" -- [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - Invalid argument for cpu-rt-runtime" && ((ret++)) -+ isula rm -f $c_id -+ [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to rm container ${c_id}" && ((ret++)) - - stop_isulad_without_valgrind -+ #set cpu-rt to the initial state -+ isulad --cpu-rt-period 1000000 --cpu-rt-runtime 0 -l DEBUG > /dev/null 2>&1 & -+ wait_isulad_running - -+ msg_info "${test} finished with return ${ret}..." -+ return ${ret} -+} -+ -+function test_isula_update_abnormal() -+{ - #start isulad with cpu_rt - isulad --cpu-rt-period 1000000 --cpu-rt-runtime 950000 -l DEBUG > /dev/null 2>&1 & - wait_isulad_running -- -- test_isula_run_spec - - c_id=`isula run -itd --cpu-rt-period 1000000 --cpu-rt-runtime 950000 ${image} sh` - [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to run container with image: ${image}" && ((ret++)) - -- isula update --cpu-rt-runtime 90000 $c_id -+ isula update --cpu-rt-period 800000 --cpu-rt-runtime 900000 $c_id | grep "Invalid --cpu-rt-runtime: rt runtime cannot be higher than rt period" - [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to update container cpu-rt-runtime" && ((ret++)) - -- isula exec -it $c_id sh -c "cat /sys/fs/cgroup/cpu/cpu.rt_runtime_us" | grep "90000" -- [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to check container cpu.rt_runtime_us: 90000" && ((ret++)) -+ isula update --cpu-rt-runtime 1000000 $c_id | grep "updating cgroup cpu.rt_runtime_us to 1000000: Invalid argument" -+ [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to update container cpu-rt-runtime" && ((ret++)) - - isula rm -f $c_id - [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to rm container ${c_id}" && ((ret++)) - -+ stop_isulad_without_valgrind -+ #set cpu-rt to the initial state -+ isulad --cpu-rt-period 1000000 --cpu-rt-runtime 0 -l DEBUG > /dev/null 2>&1 & -+ wait_isulad_running -+ - msg_info "${test} finished with return ${ret}..." - return ${ret} - } - --function test_kernel_without_cpu_rt_spec() -+function test_kernel_without_cpurt() - { - local ret=0 - local image="busybox" -@@ -109,8 +119,24 @@ function test_kernel_without_cpu_rt_spec() - return ${ret} - } - --function test_isula_run_spec() -+function test_isula_run_abnormal() - { -+ local ret=0 -+ local image="busybox" -+ local test="container cpu realtime test => (${FUNCNAME[@]})" -+ -+ msg_info "${test} starting..." -+ -+ #start isulad without cpu_rt -+ isulad --cpu-rt-period 1000000 --cpu-rt-runtime 950000 -l DEBUG > /dev/null 2>&1 & -+ wait_isulad_running -+ -+ isula pull ${image} -+ [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to pull image: ${image}" && return ${FAILURE} -+ -+ isula images | grep busybox -+ [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - missing list image: ${image}" && ((ret++)) -+ - isula run -itd --cpu-rt-period 1000000 --cpu-rt-runtime -1 $image /bin/sh 2>&1 | grep "failed to write -1" | grep "cpu.rt_runtime_us: Invalid argument" - [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - Invalid argument for cpu-rt-runtime" && ((ret++)) - -@@ -128,15 +154,33 @@ function test_isula_run_spec() - - isula run -itd --cpu-rt-period 100 --cpu-rt-runtime 10000 $image /bin/sh 2>&1 | grep "Invalid --cpu-rt-runtime: rt runtime cannot be higher than rt period" - [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - cpu-rt-runtime cannot be higher than cpu-rt-period" && ((ret++)) -+ -+ isula run -itd --cpu-rt-period 1000000 --cpu-rt-runtime 960000 $image /bin/sh 2>&1 | grep "failed to write 960000" | grep "cpu.rt_runtime_us: Invalid argument" -+ [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - Invalid argument for cpu-rt-runtime" && ((ret++)) -+ -+ stop_isulad_without_valgrind -+} -+ -+function test_isula_run_normal() -+{ -+ isula run -itd -n box --cpu-rt-period 1000000 --cpu-rt-runtime 900000 $image /bin/sh 2>&1 -+ [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to run container" && ((ret++)) -+ -+ isula rm -f box -+ [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to rm container ${c_id}" && ((ret++)) -+ - } - - declare -i ans=0 - - if [ -f "/sys/fs/cgroup/cpu/cpu.rt_runtime_us" ];then -- test_cpu_rt_isulad_spec || ((ans++)) -- test_cpu_rt_isula_spec || ((ans++)) -+ test_isula_run_abnormal || ((ans++)) -+ test_isula_run_normal || ((ans++)) -+ test_cpurt_isulad_abnormal || ((ans++)) -+ test_isula_update_normal || ((ans++)) -+ test_isula_update_abnormal || ((ans++)) - else -- test_kernel_without_cpu_rt_spec || ((ans++)) -+ test_kernel_without_cpurt || ((ans++)) - fi - - show_result ${ans} "${curr_path}/${0}" --- -2.25.1 - diff --git a/0009-fix-cpu-rt-CI.patch b/0009-fix-cpu-rt-CI.patch deleted file mode 100644 index 8e0fa06..0000000 --- a/0009-fix-cpu-rt-CI.patch +++ /dev/null @@ -1,105 +0,0 @@ -From 0504a907def3efb4c0ad7eabd5921c97090430af Mon Sep 17 00:00:00 2001 -From: songbuhuang <544824346@qq.com> -Date: Tue, 14 Feb 2023 15:55:56 +0800 -Subject: [PATCH 09/53] fix cpu-rt CI - -Signed-off-by: songbuhuang <544824346@qq.com> ---- - CI/test_cases/container_cases/cpu_rt.sh | 32 +++++++++++++++++++------ - 1 file changed, 25 insertions(+), 7 deletions(-) - -diff --git a/CI/test_cases/container_cases/cpu_rt.sh b/CI/test_cases/container_cases/cpu_rt.sh -index 353c2d71..42006bc8 100755 ---- a/CI/test_cases/container_cases/cpu_rt.sh -+++ b/CI/test_cases/container_cases/cpu_rt.sh -@@ -24,14 +24,14 @@ source ../helpers.sh - function test_cpurt_isulad_abnormal() - { - local ret=0 -- local test="isulad cpu realtime test => (${FUNCNAME[@]})" -+ local test="isulad cpu realtime abnormal test => (${FUNCNAME[@]})" - - msg_info "${test} starting..." - -- isulad --cpu-rt-period xx --cpu-rt-runtime 950000 /bin/sh 2>&1 | grep 'Invalid value "xx" for flag --cpu-rt-period: Invalid argument' -+ isulad --cpu-rt-period xx --cpu-rt-runtime 950000 2>&1 | grep 'Invalid value "xx" for flag --cpu-rt-period: Invalid argument' - [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - Invalid argument for cpu-rt-period" && ((ret++)) - -- isulad --cpu-rt-period 1000000 --cpu-rt-runtime xx /bin/sh 2>&1 | grep 'Invalid value "xx" for flag --cpu-rt-runtime: Invalid argument' -+ isulad --cpu-rt-period 1000000 --cpu-rt-runtime xx 2>&1 | grep 'Invalid value "xx" for flag --cpu-rt-runtime: Invalid argument' - [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - Invalid argument for cpu-rt-runtime" && ((ret++)) - - msg_info "${test} finished with return ${ret}..." -@@ -40,6 +40,12 @@ function test_cpurt_isulad_abnormal() - - function test_isula_update_normal() - { -+ local ret=0 -+ local image="busybox" -+ local test="isulad update cpu realtime normal test => (${FUNCNAME[@]})" -+ -+ msg_info "${test} starting..." -+ - #start isulad with cpu_rt - isulad --cpu-rt-period 1000000 --cpu-rt-runtime 950000 -l DEBUG > /dev/null 2>&1 & - wait_isulad_running -@@ -70,6 +76,10 @@ function test_isula_update_normal() - - function test_isula_update_abnormal() - { -+ local ret=0 -+ local image="busybox" -+ local test="isulad update cpu realtime abnormal test => (${FUNCNAME[@]})" -+ - #start isulad with cpu_rt - isulad --cpu-rt-period 1000000 --cpu-rt-runtime 950000 -l DEBUG > /dev/null 2>&1 & - wait_isulad_running -@@ -77,10 +87,10 @@ function test_isula_update_abnormal() - c_id=`isula run -itd --cpu-rt-period 1000000 --cpu-rt-runtime 950000 ${image} sh` - [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to run container with image: ${image}" && ((ret++)) - -- isula update --cpu-rt-period 800000 --cpu-rt-runtime 900000 $c_id | grep "Invalid --cpu-rt-runtime: rt runtime cannot be higher than rt period" -+ isula update --cpu-rt-period 800000 --cpu-rt-runtime 900000 $c_id 2>&1 | grep "Invalid --cpu-rt-runtime: rt runtime cannot be higher than rt period" - [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to update container cpu-rt-runtime" && ((ret++)) - -- isula update --cpu-rt-runtime 1000000 $c_id | grep "updating cgroup cpu.rt_runtime_us to 1000000: Invalid argument" -+ isula update --cpu-rt-runtime 1000000 $c_id 2>&1 | grep "updating cgroup cpu.rt_runtime_us to 1000000: Invalid argument" - [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to update container cpu-rt-runtime" && ((ret++)) - - isula rm -f $c_id -@@ -158,17 +168,23 @@ function test_isula_run_abnormal() - isula run -itd --cpu-rt-period 1000000 --cpu-rt-runtime 960000 $image /bin/sh 2>&1 | grep "failed to write 960000" | grep "cpu.rt_runtime_us: Invalid argument" - [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - Invalid argument for cpu-rt-runtime" && ((ret++)) - -- stop_isulad_without_valgrind -+ msg_info "${test} finished with return ${ret}..." -+ return ${ret} - } - - function test_isula_run_normal() - { -+ local ret=0 -+ local image="busybox" -+ - isula run -itd -n box --cpu-rt-period 1000000 --cpu-rt-runtime 900000 $image /bin/sh 2>&1 - [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to run container" && ((ret++)) - - isula rm -f box - [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to rm container ${c_id}" && ((ret++)) -- -+ -+ msg_info "${test} finished with return ${ret}..." -+ return ${ret} - } - - declare -i ans=0 -@@ -183,4 +199,6 @@ else - test_kernel_without_cpurt || ((ans++)) - fi - -+isula rm -f $(isula ps -aq) -+ - show_result ${ans} "${curr_path}/${0}" --- -2.25.1 - diff --git a/0010-fix-cpu-rt-CI.patch b/0010-fix-cpu-rt-CI.patch deleted file mode 100644 index 84d7604..0000000 --- a/0010-fix-cpu-rt-CI.patch +++ /dev/null @@ -1,54 +0,0 @@ -From 21dc648ef93cd0fb858a408bc843d25a5e20e320 Mon Sep 17 00:00:00 2001 -From: songbuhuang <544824346@qq.com> -Date: Wed, 15 Feb 2023 16:09:38 +0800 -Subject: [PATCH 10/53] fix cpu-rt CI - -Signed-off-by: songbuhuang <544824346@qq.com> ---- - CI/test_cases/container_cases/cpu_rt.sh | 12 ++++++------ - 1 file changed, 6 insertions(+), 6 deletions(-) - -diff --git a/CI/test_cases/container_cases/cpu_rt.sh b/CI/test_cases/container_cases/cpu_rt.sh -index 42006bc8..39c0b427 100755 ---- a/CI/test_cases/container_cases/cpu_rt.sh -+++ b/CI/test_cases/container_cases/cpu_rt.sh -@@ -50,14 +50,14 @@ function test_isula_update_normal() - isulad --cpu-rt-period 1000000 --cpu-rt-runtime 950000 -l DEBUG > /dev/null 2>&1 & - wait_isulad_running - -- c_id=`isula run -itd --cpu-rt-period 1000000 --cpu-rt-runtime 950000 ${image} sh` -+ c_id=`isula run -itd --cpu-rt-period 1000000 --cpu-rt-runtime 1000 ${image} sh` - [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to run container with image: ${image}" && ((ret++)) - -- isula update --cpu-rt-period 900000 --cpu-rt-runtime 800000 $c_id -+ isula update --cpu-rt-period 900000 --cpu-rt-runtime 2000 $c_id - [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to update container cpu-rt-runtime" && ((ret++)) - -- isula exec -it $c_id sh -c "cat /sys/fs/cgroup/cpu/cpu.rt_runtime_us" | grep "800000" -- [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to check container cpu.rt_runtime_us: 800000" && ((ret++)) -+ isula exec -it $c_id sh -c "cat /sys/fs/cgroup/cpu/cpu.rt_runtime_us" | grep "2000" -+ [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to check container cpu.rt_runtime_us: 2000" && ((ret++)) - - isula exec -it $c_id sh -c "cat /sys/fs/cgroup/cpu/cpu.rt_period_us" | grep "900000" - [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to check container cpu.rt_period_us: 900000" && ((ret++)) -@@ -84,7 +84,7 @@ function test_isula_update_abnormal() - isulad --cpu-rt-period 1000000 --cpu-rt-runtime 950000 -l DEBUG > /dev/null 2>&1 & - wait_isulad_running - -- c_id=`isula run -itd --cpu-rt-period 1000000 --cpu-rt-runtime 950000 ${image} sh` -+ c_id=`isula run -itd --cpu-rt-period 1000000 --cpu-rt-runtime 1000 ${image} sh` - [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to run container with image: ${image}" && ((ret++)) - - isula update --cpu-rt-period 800000 --cpu-rt-runtime 900000 $c_id 2>&1 | grep "Invalid --cpu-rt-runtime: rt runtime cannot be higher than rt period" -@@ -177,7 +177,7 @@ function test_isula_run_normal() - local ret=0 - local image="busybox" - -- isula run -itd -n box --cpu-rt-period 1000000 --cpu-rt-runtime 900000 $image /bin/sh 2>&1 -+ isula run -itd -n box --cpu-rt-period 1000000 --cpu-rt-runtime 1000 $image /bin/sh 2>&1 - [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to run container" && ((ret++)) - - isula rm -f box --- -2.25.1 - diff --git a/0011-Bugfix-in-config-and-executor.patch b/0011-Bugfix-in-config-and-executor.patch deleted file mode 100644 index e038afd..0000000 --- a/0011-Bugfix-in-config-and-executor.patch +++ /dev/null @@ -1,52 +0,0 @@ -From 933eceb4545a28dba44c72f183dc7104d0fea714 Mon Sep 17 00:00:00 2001 -From: Xuepeng Xu -Date: Wed, 15 Feb 2023 12:19:40 +0800 -Subject: [PATCH 11/53] Bugfix in config and executor - -Signed-off-by: Xuepeng Xu ---- - src/daemon/config/isulad_config.c | 2 +- - src/daemon/executor/container_cb/execution_create.c | 6 +++--- - 2 files changed, 4 insertions(+), 4 deletions(-) - -diff --git a/src/daemon/config/isulad_config.c b/src/daemon/config/isulad_config.c -index 917e3eaa..38bf4bf9 100644 ---- a/src/daemon/config/isulad_config.c -+++ b/src/daemon/config/isulad_config.c -@@ -314,7 +314,7 @@ char *conf_get_routine_rootdir(const char *runtime) - } - - /* path = conf->rootpath + / + engines + / + runtime + /0 */ -- if (strlen(conf->json_confs->graph) > (SIZE_MAX - strlen(ENGINE_ROOTPATH_NAME)) - 3) { -+ if (strlen(conf->json_confs->graph) > (SIZE_MAX - strlen(ENGINE_ROOTPATH_NAME) - strlen(runtime)) - 3) { - ERROR("Graph path is too long"); - goto out; - } -diff --git a/src/daemon/executor/container_cb/execution_create.c b/src/daemon/executor/container_cb/execution_create.c -index cc9ae716..4cc333fd 100644 ---- a/src/daemon/executor/container_cb/execution_create.c -+++ b/src/daemon/executor/container_cb/execution_create.c -@@ -533,7 +533,7 @@ static char *try_generate_id() - int i = 0; - int max_time = 10; - char *id = NULL; -- char *value = NULL; -+ container_t *value = NULL; - - id = util_smart_calloc_s(sizeof(char), (CONTAINER_ID_MAX_LEN + 1)); - if (id == NULL) { -@@ -547,9 +547,9 @@ static char *try_generate_id() - goto err_out; - } - -- value = container_name_index_get(id); -+ value = containers_store_get(id); - if (value != NULL) { -- free(value); -+ container_unref(value); - value = NULL; - continue; - } else { --- -2.25.1 - diff --git a/0012-fix-cpu-rt-disable-after-reboot-machine.patch b/0012-fix-cpu-rt-disable-after-reboot-machine.patch deleted file mode 100644 index 5ae07d1..0000000 --- a/0012-fix-cpu-rt-disable-after-reboot-machine.patch +++ /dev/null @@ -1,823 +0,0 @@ -From 166edf2093b2c35fe4e479ca4b6568be8c98f907 Mon Sep 17 00:00:00 2001 -From: haozi007 -Date: Wed, 15 Feb 2023 17:47:12 +0800 -Subject: [PATCH 12/53] fix cpu-rt disable after reboot machine - -1. ensure parent cgroup cpu-rt of container, should do in start container; -2. current do in create container, will cause failed of start container with cpu-rt after reboot machine - -Signed-off-by: haozi007 ---- - src/daemon/common/sysinfo.c | 46 +++- - src/daemon/common/sysinfo.h | 2 + - src/daemon/executor/container_cb/execution.c | 158 ++++++++++++- - .../executor/container_cb/execution_create.c | 222 +----------------- - src/daemon/modules/api/specs_api.h | 2 +- - src/daemon/modules/spec/specs.c | 84 ++++--- - test/specs/specs/specs_ut.cc | 40 ++-- - 7 files changed, 280 insertions(+), 274 deletions(-) - -diff --git a/src/daemon/common/sysinfo.c b/src/daemon/common/sysinfo.c -index 38416db4..7559d653 100644 ---- a/src/daemon/common/sysinfo.c -+++ b/src/daemon/common/sysinfo.c -@@ -24,8 +24,10 @@ - #include - #include - -+#include -+#include -+ - #include "err_msg.h" --#include "isula_libutils/log.h" - #include "utils.h" - #include "utils_array.h" - #include "utils_file.h" -@@ -1627,3 +1629,45 @@ free_out: - } - return minfos; - } -+ -+char *sysinfo_cgroup_controller_cpurt_mnt_path() -+{ -+ int nret = 0; -+ __isula_auto_free char *mnt = NULL; -+ __isula_auto_free char *root = NULL; -+ char fpath[PATH_MAX] = { 0 }; -+ sysinfo_t *sysinfo = NULL; -+ -+ sysinfo = get_sys_info(true); -+ if (sysinfo == NULL) { -+ ERROR("Can not get system info"); -+ return NULL; -+ } -+ -+ if (!(sysinfo->cgcpuinfo.cpu_rt_period)) { -+ ERROR("Daemon-scoped cpu-rt-period and cpu-rt-runtime are not supported by kernel"); -+ isulad_set_error_message("Daemon-scoped cpu-rt-period and cpu-rt-runtime are not supported by kernel"); -+ return NULL; -+ } -+ -+ nret = find_cgroup_mountpoint_and_root("cpu", &mnt, &root); -+ if (nret != 0 || mnt == NULL || root == NULL) { -+ ERROR("Can not find cgroup mnt and root path for subsystem 'cpu'"); -+ isulad_set_error_message("Can not find cgroup mnt and root path for subsystem 'cpu'"); -+ return NULL; -+ } -+ -+ // When iSulad is run inside docker, the root is based of the host cgroup. -+ // Replace root to "/" -+ if (strncmp(root, "/docker/", strlen("/docker/")) == 0) { -+ root[1] = '\0'; -+ } -+ -+ nret = snprintf(fpath, sizeof(fpath), "%s/%s", mnt, root); -+ if (nret < 0 || (size_t)nret >= sizeof(fpath)) { -+ ERROR("Failed to print string"); -+ return NULL; -+ } -+ -+ return util_strdup_s(fpath); -+} -\ No newline at end of file -diff --git a/src/daemon/common/sysinfo.h b/src/daemon/common/sysinfo.h -index 8468e00a..bbb3c6b5 100644 ---- a/src/daemon/common/sysinfo.h -+++ b/src/daemon/common/sysinfo.h -@@ -139,6 +139,8 @@ mountinfo_t *find_mount_info(mountinfo_t **minfos, const char *dir); - - void free_mounts_info(mountinfo_t **minfos); - -+char *sysinfo_cgroup_controller_cpurt_mnt_path(); -+ - #ifdef __cplusplus - } - #endif -diff --git a/src/daemon/executor/container_cb/execution.c b/src/daemon/executor/container_cb/execution.c -index 7b18a8e1..ed70fc14 100644 ---- a/src/daemon/executor/container_cb/execution.c -+++ b/src/daemon/executor/container_cb/execution.c -@@ -18,6 +18,12 @@ - #include - #include - #include -+#include -+#include -+#include -+#include -+#include -+ - #include - #include - #include -@@ -34,13 +40,13 @@ - #include - #include - #include --#include --#include --#include --#include -+#include -+#include - --#include "isula_libutils/log.h" -+#include "isulad_config.h" -+#include "sysinfo.h" - #include "container_api.h" -+#include "specs_api.h" - #include "execution_extend.h" - #include "execution_information.h" - #include "execution_stream.h" -@@ -302,6 +308,135 @@ static void pack_start_response(container_start_response *response, uint32_t cc, - } - } - -+static int do_init_cpurt_cgroups_path(const char *path, int recursive_depth, const char *mnt_root, -+ int64_t cpu_rt_period, int64_t cpu_rt_runtime); -+ -+/* maybe create cpu realtime file */ -+static int maybe_create_cpu_realtime_file(int64_t value, const char *file, const char *path) -+{ -+ int ret; -+ __isula_auto_close int fd = -1; -+ ssize_t nwrite; -+ char fpath[PATH_MAX] = { 0 }; -+ char buf[ISULAD_NUMSTRLEN64] = { 0 }; -+ -+ if (value == 0) { -+ return 0; -+ } -+ -+ ret = util_mkdir_p(path, CONFIG_DIRECTORY_MODE); -+ if (ret != 0) { -+ ERROR("Failed to mkdir: %s", path); -+ return -1; -+ } -+ -+ ret = snprintf(fpath, sizeof(fpath), "%s/%s", path, file); -+ if (ret < 0 || ret >= sizeof(fpath)) { -+ ERROR("Failed to print string"); -+ return -1; -+ } -+ ret = snprintf(buf, sizeof(buf), "%lld", (long long int)value); -+ if (ret < 0 || (size_t)ret >= sizeof(buf)) { -+ ERROR("Failed to print string"); -+ return -1; -+ } -+ -+ fd = util_open(fpath, O_WRONLY | O_TRUNC | O_CREAT | O_CLOEXEC, 0700); -+ if (fd < 0) { -+ ERROR("Failed to open file: %s: %s", fpath, strerror(errno)); -+ isulad_set_error_message("Failed to open file: %s: %s", fpath, strerror(errno)); -+ return -1; -+ } -+ nwrite = util_write_nointr(fd, buf, strlen(buf)); -+ if (nwrite < 0 || nwrite != strlen(buf)) { -+ ERROR("Failed to write %s to %s: %s", buf, fpath, strerror(errno)); -+ isulad_set_error_message("Failed to write '%s' to '%s': %s", buf, fpath, strerror(errno)); -+ return -1; -+ } -+ -+ return 0; -+} -+ -+static int recursively_create_cgroup(const char *path, const char *mnt_root, int recursive_depth, int64_t cpu_rt_period, -+ int64_t cpu_rt_runtime) -+{ -+ int ret = 0; -+ __isula_auto_free char *dup = NULL; -+ char *dirpath = NULL; -+ char fpath[PATH_MAX] = { 0 }; -+ -+ dup = util_strdup_s(path); -+ dirpath = dirname(dup); -+ ret = do_init_cpurt_cgroups_path(dirpath, (recursive_depth + 1), mnt_root, cpu_rt_period, cpu_rt_runtime); -+ if (ret != 0) { -+ return ret; -+ } -+ -+ int nret = snprintf(fpath, sizeof(fpath), "%s/%s", mnt_root, path); -+ if (nret < 0 || (size_t)nret >= sizeof(fpath)) { -+ ERROR("Failed to print string"); -+ return ret; -+ } -+ -+ ret = maybe_create_cpu_realtime_file(cpu_rt_period, "cpu.rt_period_us", fpath); -+ if (ret != 0) { -+ return ret; -+ } -+ -+ return maybe_create_cpu_realtime_file(cpu_rt_runtime, "cpu.rt_runtime_us", fpath); -+} -+ -+/* init cgroups path */ -+static int do_init_cpurt_cgroups_path(const char *path, int recursive_depth, const char *mnt_root, -+ int64_t cpu_rt_period, int64_t cpu_rt_runtime) -+{ -+ if ((recursive_depth + 1) > MAX_PATH_DEPTH) { -+ ERROR("Reach the max cgroup depth:%s", path); -+ return -1; -+ } -+ -+ if (path == NULL || strcmp(path, "/") == 0 || strcmp(path, ".") == 0) { -+ return 0; -+ } -+ -+ // Recursively create cgroup to ensure that the system and all parent cgroups have values set -+ // for the period and runtime as this limits what the children can be set to. -+ return recursively_create_cgroup(path, mnt_root, recursive_depth, cpu_rt_period, cpu_rt_runtime); -+} -+ -+// TODO: maybe we should adapt to cgroup v2 -+static int cpurt_controller_init(const char *id, const host_config *host_spec) -+{ -+ __isula_auto_free char *mnt_root = NULL; -+ __isula_auto_free char *cgroups_path = NULL; -+ char *dirpath = NULL; -+ int64_t cpu_rt_period = 0; -+ int64_t cpu_rt_runtime = 0; -+ -+ cgroups_path = merge_container_cgroups_path(id, host_spec); -+ if (cgroups_path == NULL || strcmp(cgroups_path, "/") == 0 || strcmp(cgroups_path, ".") == 0) { -+ return 0; -+ } -+ -+ if (conf_get_cgroup_cpu_rt(&cpu_rt_period, &cpu_rt_runtime)) { -+ return -1; -+ } -+ -+ if (cpu_rt_period == 0 && cpu_rt_runtime == 0) { -+ return 0; -+ } -+ -+ mnt_root = sysinfo_cgroup_controller_cpurt_mnt_path(); -+ if (mnt_root == NULL) { -+ ERROR("Failed to get cpu rt controller mnt root path"); -+ return -1; -+ } -+ -+ dirpath = dirname(cgroups_path); -+ -+ return do_init_cpurt_cgroups_path(dirpath, 0, mnt_root, cpu_rt_period, cpu_rt_runtime); -+} -+ - static int container_start_prepare(container_t *cont, const container_start_request *request, int stdinfd, - struct io_write_wrapper *stdout_handler, struct io_write_wrapper *stderr_handler, - char **fifopath, char *fifos[], int *sync_fd, pthread_t *thread_id) -@@ -314,6 +449,19 @@ static int container_start_prepare(container_t *cont, const container_start_requ - return -1; - } - -+ // init cgroup path for cpu_rt_runtime and cpu_rt_period -+ // we should do this in start container, not create container -+ // because, in scenarios: -+ // 1. enable cpu-rt of isulad; -+ // 2. then run container with --cpu-rt-runtime -+ // 3. then reboot machine; -+ // 4. finally, start before container, it will failed... -+ // cause of no one to set value into cgroup/isulad/cpu-rt-runtime and cpu-rt-period. -+ if (cpurt_controller_init(id, cont->hostconfig) != 0) { -+ isulad_set_error_message("Failed to init controller of cpu-rt for container \"%s\".", id); -+ return -1; -+ } -+ - if (prepare_start_io(cont, request, fifopath, fifos, stdinfd, stdout_handler, stderr_handler, sync_fd, thread_id) != - 0) { - return -1; -diff --git a/src/daemon/executor/container_cb/execution_create.c b/src/daemon/executor/container_cb/execution_create.c -index 4cc333fd..4abc89c7 100644 ---- a/src/daemon/executor/container_cb/execution_create.c -+++ b/src/daemon/executor/container_cb/execution_create.c -@@ -19,6 +19,14 @@ - #include - #include - #include -+#include -+#include -+#include -+#include -+#include -+ -+#include -+#include - #include - #include - #include -@@ -26,14 +34,7 @@ - #include - #include - #include --#include --#include --#include --#include --#include --#include - --#include "isula_libutils/log.h" - #include "isulad_config.h" - #include "specs_api.h" - #include "verify.h" -@@ -58,9 +59,6 @@ - #include "opt_log.h" - #include "runtime_api.h" - --static int do_init_cpurt_cgroups_path(const char *path, int recursive_depth, const char *mnt_root, -- int64_t cpu_rt_period, int64_t cpu_rt_runtime); -- - static int create_request_check(const container_create_request *request) - { - int ret = 0; -@@ -1323,203 +1321,6 @@ static int save_container_config_before_create(const char *id, const char *runti - return 0; - } - --/* maybe create cpu realtime file */ --static int maybe_create_cpu_realtime_file(int64_t value, const char *file, const char *path) --{ -- int ret; -- int fd = -1; -- ssize_t nwrite; -- char fpath[PATH_MAX] = { 0 }; -- char buf[ISULAD_NUMSTRLEN64] = { 0 }; -- -- if (value == 0) { -- return 0; -- } -- -- ret = util_mkdir_p(path, CONFIG_DIRECTORY_MODE); -- if (ret != 0) { -- ERROR("Failed to mkdir: %s", path); -- return -1; -- } -- -- ret = snprintf(fpath, sizeof(fpath), "%s/%s", path, file); -- if (ret < 0 || ret >= sizeof(fpath)) { -- ERROR("Failed to print string"); -- return -1; -- } -- ret = snprintf(buf, sizeof(buf), "%lld", (long long int)value); -- if (ret < 0 || (size_t)ret >= sizeof(buf)) { -- ERROR("Failed to print string"); -- return -1; -- } -- -- fd = util_open(fpath, O_WRONLY | O_TRUNC | O_CREAT | O_CLOEXEC, 0700); -- if (fd < 0) { -- ERROR("Failed to open file: %s: %s", fpath, strerror(errno)); -- isulad_set_error_message("Failed to open file: %s: %s", fpath, strerror(errno)); -- return -1; -- } -- nwrite = util_write_nointr(fd, buf, strlen(buf)); -- if (nwrite < 0) { -- ERROR("Failed to write %s to %s: %s", buf, fpath, strerror(errno)); -- isulad_set_error_message("Failed to write '%s' to '%s': %s", buf, fpath, strerror(errno)); -- close(fd); -- return -1; -- } -- close(fd); -- -- return 0; --} -- --static int recursively_create_cgroup(const char *path, const char *mnt_root, int recursive_depth, int64_t cpu_rt_period, -- int64_t cpu_rt_runtime) --{ -- int ret = 0; -- char *dup = NULL; -- char *dirpath = NULL; -- char fpath[PATH_MAX] = { 0 }; -- -- dup = util_strdup_s(path); -- dirpath = dirname(dup); -- ret = do_init_cpurt_cgroups_path(dirpath, (recursive_depth + 1), mnt_root, cpu_rt_period, cpu_rt_runtime); -- free(dup); -- if (ret != 0) { -- return ret; -- } -- -- int nret = snprintf(fpath, sizeof(fpath), "%s/%s", mnt_root, path); -- if (nret < 0 || (size_t)nret >= sizeof(fpath)) { -- ERROR("Failed to print string"); -- ret = -1; -- goto out; -- } -- -- ret = maybe_create_cpu_realtime_file(cpu_rt_period, "cpu.rt_period_us", fpath); -- if (ret != 0) { -- goto out; -- } -- -- ret = maybe_create_cpu_realtime_file(cpu_rt_runtime, "cpu.rt_runtime_us", fpath); -- if (ret != 0) { -- goto out; -- } -- --out: -- return ret; --} -- --/* init cgroups path */ --static int do_init_cpurt_cgroups_path(const char *path, int recursive_depth, const char *mnt_root, -- int64_t cpu_rt_period, int64_t cpu_rt_runtime) --{ -- if ((recursive_depth + 1) > MAX_PATH_DEPTH) { -- ERROR("Reach the max cgroup depth:%s", path); -- return -1; -- } -- -- if (path == NULL || strcmp(path, "/") == 0 || strcmp(path, ".") == 0) { -- return 0; -- } -- -- // Recursively create cgroup to ensure that the system and all parent cgroups have values set -- // for the period and runtime as this limits what the children can be set to. -- if (recursively_create_cgroup(path, mnt_root, recursive_depth, cpu_rt_period, cpu_rt_runtime)) { -- return -1; -- } -- -- return 0; --} -- --static char *get_cpurt_controller_mnt_path() --{ -- char *res = NULL; -- int nret = 0; -- char *mnt = NULL; -- char *root = NULL; -- char fpath[PATH_MAX] = { 0 }; -- -- nret = find_cgroup_mountpoint_and_root("cpu", &mnt, &root); -- if (nret != 0 || mnt == NULL || root == NULL) { -- ERROR("Can not find cgroup mnt and root path for subsystem 'cpu'"); -- isulad_set_error_message("Can not find cgroup mnt and root path for subsystem 'cpu'"); -- goto out; -- } -- -- // When iSulad is run inside docker, the root is based of the host cgroup. -- // Replace root to "/" -- if (strncmp(root, "/docker/", strlen("/docker/")) == 0) { -- root[1] = '\0'; -- } -- -- nret = snprintf(fpath, sizeof(fpath), "%s/%s", mnt, root); -- if (nret < 0 || (size_t)nret >= sizeof(fpath)) { -- ERROR("Failed to print string"); -- goto out; -- } -- -- res = util_strdup_s(fpath); -- --out: -- free(mnt); -- free(root); -- return res; --} -- --static int cpurt_controller_init(const char *cgroups_path) --{ -- int ret = 0; -- char *dup = NULL; -- char *dirpath = NULL; -- int64_t cpu_rt_period = 0; -- int64_t cpu_rt_runtime = 0; -- sysinfo_t *sysinfo = NULL; -- char *mnt_root = NULL; -- -- if (cgroups_path == NULL || strcmp(cgroups_path, "/") == 0 || strcmp(cgroups_path, ".") == 0) { -- return 0; -- } -- -- if (conf_get_cgroup_cpu_rt(&cpu_rt_period, &cpu_rt_runtime)) { -- return -1; -- } -- -- if (cpu_rt_period == 0 && cpu_rt_runtime == 0) { -- return 0; -- } -- -- sysinfo = get_sys_info(true); -- if (sysinfo == NULL) { -- ERROR("Can not get system info"); -- ret = -1; -- goto out; -- } -- -- if (!(sysinfo->cgcpuinfo.cpu_rt_period)) { -- ERROR("Daemon-scoped cpu-rt-period and cpu-rt-runtime are not supported by kernel"); -- isulad_set_error_message("Daemon-scoped cpu-rt-period and cpu-rt-runtime are not supported by kernel"); -- ret = -1; -- goto out; -- } -- -- mnt_root = get_cpurt_controller_mnt_path(); -- if (mnt_root == NULL) { -- ERROR("Failed to get cpu rt controller mnt root path"); -- isulad_set_error_message("Failed to get cpu rt controller mnt root path"); -- ret = -1; -- goto out; -- } -- -- dup = util_strdup_s(cgroups_path); -- dirpath = dirname(dup); -- -- ret = do_init_cpurt_cgroups_path(dirpath, 0, mnt_root, cpu_rt_period, cpu_rt_runtime); -- --out: -- free(mnt_root); -- free(dup); -- return ret; --} -- - /* - * request -> host_spec + container_spec - * container_spec + image config -@@ -1680,13 +1481,6 @@ int container_create_cb(const container_create_request *request, container_creat - goto umount_channel; - } - -- // init cgroup path for cpu_rt_runtime and cpu_rt_period -- if (cpurt_controller_init(oci_spec->linux->cgroups_path) != 0) { -- ERROR("Unable to init CPU RT controller %s", oci_spec->linux->cgroups_path); -- cc = ISULAD_ERR_EXEC; -- goto umount_channel; -- } -- - if (container_v2_spec_merge_contaner_spec(v2_spec) != 0) { - ERROR("Failed to merge container settings"); - cc = ISULAD_ERR_EXEC; -diff --git a/src/daemon/modules/api/specs_api.h b/src/daemon/modules/api/specs_api.h -index 4c132108..e0a73f55 100644 ---- a/src/daemon/modules/api/specs_api.h -+++ b/src/daemon/modules/api/specs_api.h -@@ -28,7 +28,7 @@ extern "C" { - - int merge_all_specs(host_config *host_spec, const char *real_rootfs, container_config_v2_common_config *v2_spec, - oci_runtime_spec *oci_spec); --int merge_oci_cgroups_path(const char *id, oci_runtime_spec *oci_spec, const host_config *host_spec); -+char *merge_container_cgroups_path(const char *id, const host_config *host_spec); - int merge_global_config(oci_runtime_spec *oci_spec); - oci_runtime_spec *load_oci_config(const char *rootpath, const char *name); - oci_runtime_spec *default_spec(bool system_container); -diff --git a/src/daemon/modules/spec/specs.c b/src/daemon/modules/spec/specs.c -index 12d9b96d..857fc3dc 100644 ---- a/src/daemon/modules/spec/specs.c -+++ b/src/daemon/modules/spec/specs.c -@@ -26,6 +26,7 @@ - #include - #include - #include -+#include - #include - #include - -@@ -165,36 +166,43 @@ out: - return ret; - } - --static int make_annotations_cgroup_dir(const container_config *container_spec, const host_config *host_spec) -+static char *do_get_container_cgroup_path(const host_config *host_spec) - { -- int ret = 0; -- char cleaned[PATH_MAX] = { 0 }; -- char *default_cgroup_parent = NULL; - char *path = NULL; - -- default_cgroup_parent = conf_get_isulad_cgroup_parent(); - if (host_spec->cgroup_parent != NULL) { -- path = host_spec->cgroup_parent; -- } else if (default_cgroup_parent != NULL) { -- path = default_cgroup_parent; -+ // first, use user setting -+ path = util_strdup_s(host_spec->cgroup_parent); -+ } else { -+ // second, if user donot set, use setting from daemon config -+ path = conf_get_isulad_cgroup_parent(); - } -+ - if (path == NULL) { -- path = "/isulad"; -+ // third, all faild, just use default '/isulad' -+ path = util_strdup_s("/isulad"); - } -+ -+ return path; -+} -+ -+static int make_annotations_cgroup_dir(const container_config *container_spec, const host_config *host_spec) -+{ -+ char cleaned[PATH_MAX] = { 0 }; -+ __isula_auto_free char *path = NULL; -+ -+ path = do_get_container_cgroup_path(host_spec); - if (util_clean_path(path, cleaned, sizeof(cleaned)) == NULL) { - ERROR("Failed to clean path: %s", path); -- ret = -1; -- goto out; -+ return -1; - } -+ - if (append_json_map_string_string(container_spec->annotations, "cgroup.dir", cleaned)) { - ERROR("Realloc annotations failed"); -- ret = -1; -- goto out; -+ return -1; - } - --out: -- free(default_cgroup_parent); -- return ret; -+ return 0; - } - - static int make_annotations_oom_score_adj(const container_config *container_spec, const host_config *host_spec) -@@ -2058,42 +2066,40 @@ out: - return ret; - } - --int merge_oci_cgroups_path(const char *id, oci_runtime_spec *oci_spec, const host_config *host_spec) -+char *merge_container_cgroups_path(const char *id, const host_config *host_spec) - { -- int ret = 0; -- char *default_cgroup_parent = NULL; -- char *path = NULL; -+ __isula_auto_free char *path = NULL; - -+ if (id == NULL || host_spec == NULL) { -+ ERROR("Invalid arguments"); -+ return NULL; -+ } -+ -+ path = do_get_container_cgroup_path(host_spec); -+ -+ return util_path_join(path, id); -+} -+ -+static int merge_oci_cgroups_path(const char *id, oci_runtime_spec *oci_spec, const host_config *host_spec) -+{ - if (id == NULL || oci_spec == NULL || host_spec == NULL) { - ERROR("Invalid arguments"); -- ret = -1; -- goto out; -+ return -1; - } - - if (make_sure_oci_spec_linux(oci_spec) != 0) { - ERROR("Failed to make oci spec linux"); -- ret = -1; -- goto out; -+ return -1; - } - -- default_cgroup_parent = conf_get_isulad_cgroup_parent(); -- path = default_cgroup_parent; -- if (host_spec->cgroup_parent != NULL) { -- path = host_spec->cgroup_parent; -- } -+ free(oci_spec->linux->cgroups_path); -+ oci_spec->linux->cgroups_path = merge_container_cgroups_path(id, host_spec); - -- if (path == NULL) { -- free(oci_spec->linux->cgroups_path); -- oci_spec->linux->cgroups_path = util_path_join("/isulad", id); -- return 0; -+ if (oci_spec->linux->cgroups_path == NULL) { -+ WARN("OCI spec cgroups path is NULL"); - } - -- free(oci_spec->linux->cgroups_path); -- oci_spec->linux->cgroups_path = util_path_join(path, id); -- --out: -- free(default_cgroup_parent); -- return ret; -+ return 0; - } - - int merge_all_specs(host_config *host_spec, const char *real_rootfs, container_config_v2_common_config *v2_spec, -diff --git a/test/specs/specs/specs_ut.cc b/test/specs/specs/specs_ut.cc -index c4014e2e..96aa1c63 100644 ---- a/test/specs/specs/specs_ut.cc -+++ b/test/specs/specs/specs_ut.cc -@@ -232,15 +232,16 @@ char *invoke_conf_get_isulad_cgroup_parent() - return util_strdup_s("/var/lib/isulad/engines/lcr"); - } - --TEST_F(SpecsUnitTest, test_merge_oci_cgroups_path_1) -+TEST_F(SpecsUnitTest, test_merge_container_cgroups_path_1) - { -- ASSERT_EQ(merge_oci_cgroups_path(nullptr, nullptr, nullptr), -1); -+ ASSERT_EQ(merge_container_cgroups_path(nullptr, nullptr), nullptr); - } - --TEST_F(SpecsUnitTest, test_merge_oci_cgroups_path_2) -+TEST_F(SpecsUnitTest, test_merge_container_cgroups_path_2) - { - oci_runtime_spec *oci_spec = nullptr; - host_config *host_spec = nullptr; -+ char *merged_cp = nullptr; - - oci_spec = (oci_runtime_spec *)util_common_calloc_s(sizeof(oci_runtime_spec)); - ASSERT_TRUE(oci_spec != nullptr); -@@ -250,20 +251,23 @@ TEST_F(SpecsUnitTest, test_merge_oci_cgroups_path_2) - - EXPECT_CALL(m_isulad_conf, GetCgroupParent()).WillRepeatedly(Invoke(invoke_conf_get_isulad_cgroup_parent_null)); - -- ASSERT_EQ(merge_oci_cgroups_path("123", oci_spec, host_spec), 0); -+ merged_cp = merge_container_cgroups_path("123", host_spec); -+ ASSERT_NE(merged_cp, nullptr); - -- ASSERT_STREQ(oci_spec->linux->cgroups_path, "/isulad/123"); -+ ASSERT_STREQ(merged_cp, "/isulad/123"); - - free_oci_runtime_spec(oci_spec); - free_host_config(host_spec); -+ free(merged_cp); - - testing::Mock::VerifyAndClearExpectations(&m_isulad_conf); - } - --TEST_F(SpecsUnitTest, test_merge_oci_cgroups_path_3) -+TEST_F(SpecsUnitTest, test_merge_container_cgroups_path_3) - { - oci_runtime_spec *oci_spec = nullptr; - host_config *host_spec = nullptr; -+ char *merged_cp = nullptr; - - oci_spec = (oci_runtime_spec *)util_common_calloc_s(sizeof(oci_runtime_spec)); - ASSERT_TRUE(oci_spec != nullptr); -@@ -275,20 +279,23 @@ TEST_F(SpecsUnitTest, test_merge_oci_cgroups_path_3) - - EXPECT_CALL(m_isulad_conf, GetCgroupParent()).WillRepeatedly(Invoke(invoke_conf_get_isulad_cgroup_parent_null)); - -- ASSERT_EQ(merge_oci_cgroups_path("123", oci_spec, host_spec), 0); -+ merged_cp = merge_container_cgroups_path("123", host_spec); -+ ASSERT_NE(merged_cp, nullptr); - -- ASSERT_STREQ(oci_spec->linux->cgroups_path, "/test/123"); -+ ASSERT_STREQ(merged_cp, "/test/123"); - - free_oci_runtime_spec(oci_spec); - free_host_config(host_spec); -+ free(merged_cp); - - testing::Mock::VerifyAndClearExpectations(&m_isulad_conf); - } - --TEST_F(SpecsUnitTest, test_merge_oci_cgroups_path_4) -+TEST_F(SpecsUnitTest, test_merge_container_cgroups_path_4) - { - oci_runtime_spec *oci_spec = nullptr; - host_config *host_spec = nullptr; -+ char *merged_cp = nullptr; - - oci_spec = (oci_runtime_spec *)util_common_calloc_s(sizeof(oci_runtime_spec)); - ASSERT_TRUE(oci_spec != nullptr); -@@ -298,20 +305,23 @@ TEST_F(SpecsUnitTest, test_merge_oci_cgroups_path_4) - - EXPECT_CALL(m_isulad_conf, GetCgroupParent()).WillRepeatedly(Invoke(invoke_conf_get_isulad_cgroup_parent)); - -- ASSERT_EQ(merge_oci_cgroups_path("123", oci_spec, host_spec), 0); -+ merged_cp = merge_container_cgroups_path("123", host_spec); -+ ASSERT_NE(merged_cp, nullptr); - -- ASSERT_STREQ(oci_spec->linux->cgroups_path, "/var/lib/isulad/engines/lcr/123"); -+ ASSERT_STREQ(merged_cp, "/var/lib/isulad/engines/lcr/123"); - - free_oci_runtime_spec(oci_spec); - free_host_config(host_spec); -+ free(merged_cp); - - testing::Mock::VerifyAndClearExpectations(&m_isulad_conf); - } - --TEST_F(SpecsUnitTest, test_merge_oci_cgroups_path_5) -+TEST_F(SpecsUnitTest, test_merge_container_cgroups_path_5) - { - oci_runtime_spec *oci_spec = nullptr; - host_config *host_spec = nullptr; -+ char *merged_cp = nullptr; - - oci_spec = (oci_runtime_spec *)util_common_calloc_s(sizeof(oci_runtime_spec)); - ASSERT_TRUE(oci_spec != nullptr); -@@ -323,12 +333,14 @@ TEST_F(SpecsUnitTest, test_merge_oci_cgroups_path_5) - - EXPECT_CALL(m_isulad_conf, GetCgroupParent()).WillRepeatedly(Invoke(invoke_conf_get_isulad_cgroup_parent)); - -- ASSERT_EQ(merge_oci_cgroups_path("123", oci_spec, host_spec), 0); -+ merged_cp = merge_container_cgroups_path("123", host_spec); -+ ASSERT_NE(merged_cp, nullptr); - -- ASSERT_STREQ(oci_spec->linux->cgroups_path, "/test/123"); -+ ASSERT_STREQ(merged_cp, "/test/123"); - - free_oci_runtime_spec(oci_spec); - free_host_config(host_spec); -+ free(merged_cp); - - testing::Mock::VerifyAndClearExpectations(&m_isulad_conf); - } --- -2.25.1 - diff --git a/0013-fix-selinux_label_ut-timeout-and-add-timeout-for-all.patch b/0013-fix-selinux_label_ut-timeout-and-add-timeout-for-all.patch deleted file mode 100644 index 38efc68..0000000 --- a/0013-fix-selinux_label_ut-timeout-and-add-timeout-for-all.patch +++ /dev/null @@ -1,465 +0,0 @@ -From af8fb9fcf604775f527b58e1b02f220dffd8ff35 Mon Sep 17 00:00:00 2001 -From: zhangxiaoyu -Date: Thu, 16 Feb 2023 15:26:10 +0800 -Subject: [PATCH 13/53] fix selinux_label_ut timeout and add timeout for all ut - -Signed-off-by: zhangxiaoyu ---- - test/cgroup/cpu/CMakeLists.txt | 1 + - test/cmd/isula/extend/pause/CMakeLists.txt | 1 + - test/cmd/isula/extend/resume/CMakeLists.txt | 2 +- - test/cmd/isula/information/info/CMakeLists.txt | 1 + - test/cmd/isula/information/ps/CMakeLists.txt | 1 + - test/cmd/isula/utils/client_show_format/CMakeLists.txt | 1 + - test/cmd/isula/utils/template_string_parse/CMakeLists.txt | 1 + - test/cmd/isulad-shim/CMakeLists.txt | 1 + - test/cutils/mainloop/CMakeLists.txt | 1 + - test/cutils/map/CMakeLists.txt | 1 + - test/cutils/path/CMakeLists.txt | 1 + - test/cutils/util_atomic/CMakeLists.txt | 1 + - test/cutils/utils_aes/CMakeLists.txt | 1 + - test/cutils/utils_array/CMakeLists.txt | 1 + - test/cutils/utils_base64/CMakeLists.txt | 1 + - test/cutils/utils_convert/CMakeLists.txt | 1 + - test/cutils/utils_error/CMakeLists.txt | 1 + - test/cutils/utils_file/CMakeLists.txt | 1 + - test/cutils/utils_filters/CMakeLists.txt | 1 + - test/cutils/utils_fs/CMakeLists.txt | 1 + - test/cutils/utils_mount_spec/CMakeLists.txt | 1 + - test/cutils/utils_namespace/CMakeLists.txt | 1 + - test/cutils/utils_network/CMakeLists.txt | 1 + - test/cutils/utils_pwgr/CMakeLists.txt | 1 + - test/cutils/utils_regex/CMakeLists.txt | 1 + - test/cutils/utils_string/CMakeLists.txt | 1 + - test/cutils/utils_timestamp/CMakeLists.txt | 1 + - test/cutils/utils_utils/CMakeLists.txt | 1 + - test/cutils/utils_verify/CMakeLists.txt | 1 + - test/image/oci/oci_config_merge/CMakeLists.txt | 1 + - test/image/oci/registry/CMakeLists.txt | 1 + - test/image/oci/storage/images/CMakeLists.txt | 1 + - test/image/oci/storage/layers/CMakeLists.txt | 2 ++ - test/image/oci/storage/rootfs/CMakeLists.txt | 1 + - test/network/CMakeLists.txt | 1 + - test/runtime/isula/CMakeLists.txt | 1 + - test/runtime/lcr/CMakeLists.txt | 1 + - .../services/execution/execute/execution_extend/CMakeLists.txt | 1 + - test/services/execution/spec/CMakeLists.txt | 2 ++ - test/services/execution/spec/selinux_label_ut.cc | 2 ++ - test/specs/specs/CMakeLists.txt | 1 + - test/specs/specs_extend/CMakeLists.txt | 1 + - test/volume/CMakeLists.txt | 3 ++- - 43 files changed, 47 insertions(+), 2 deletions(-) - -diff --git a/test/cgroup/cpu/CMakeLists.txt b/test/cgroup/cpu/CMakeLists.txt -index 159b0d85..6a8af719 100644 ---- a/test/cgroup/cpu/CMakeLists.txt -+++ b/test/cgroup/cpu/CMakeLists.txt -@@ -26,3 +26,4 @@ target_include_directories(${EXE} PUBLIC - - target_link_libraries(${EXE} ${GTEST_BOTH_LIBRARIES} ${GMOCK_LIBRARY} ${GMOCK_MAIN_LIBRARY} ${CMAKE_THREAD_LIBS_INIT} ${ISULA_LIBUTILS_LIBRARY} libutils_ut -lgrpc++ -lprotobuf -lcrypto -lyajl -lz) - add_test(NAME ${EXE} COMMAND ${EXE} --gtest_output=xml:${EXE}-Results.xml) -+set_tests_properties(${EXE} PROPERTIES TIMEOUT 120) -diff --git a/test/cmd/isula/extend/pause/CMakeLists.txt b/test/cmd/isula/extend/pause/CMakeLists.txt -index af48c23f..6eab5172 100644 ---- a/test/cmd/isula/extend/pause/CMakeLists.txt -+++ b/test/cmd/isula/extend/pause/CMakeLists.txt -@@ -47,3 +47,4 @@ target_include_directories(${EXE} PUBLIC - ) - target_link_libraries(${EXE} ${GTEST_BOTH_LIBRARIES} ${GMOCK_LIBRARY} ${GMOCK_MAIN_LIBRARY} ${CMAKE_THREAD_LIBS_INIT} ${ISULA_LIBUTILS_LIBRARY} -lgrpc++ -lprotobuf -lcrypto -lyajl -lz) - add_test(NAME ${EXE} COMMAND ${EXE} --gtest_output=xml:${EXE}-Results.xml) -+set_tests_properties(${EXE} PROPERTIES TIMEOUT 120) -diff --git a/test/cmd/isula/extend/resume/CMakeLists.txt b/test/cmd/isula/extend/resume/CMakeLists.txt -index 729c4d3b..0812a66e 100644 ---- a/test/cmd/isula/extend/resume/CMakeLists.txt -+++ b/test/cmd/isula/extend/resume/CMakeLists.txt -@@ -48,4 +48,4 @@ target_include_directories(${EXE} PUBLIC - ) - target_link_libraries(${EXE} ${GTEST_BOTH_LIBRARIES} ${GMOCK_LIBRARY} ${GMOCK_MAIN_LIBRARY} ${CMAKE_THREAD_LIBS_INIT} ${ISULA_LIBUTILS_LIBRARY} -lgrpc++ -lprotobuf -lcrypto -lyajl -lz) - add_test(NAME ${EXE} COMMAND ${EXE} --gtest_output=xml:${EXE}-Results.xml) -- -+set_tests_properties(${EXE} PROPERTIES TIMEOUT 120) -diff --git a/test/cmd/isula/information/info/CMakeLists.txt b/test/cmd/isula/information/info/CMakeLists.txt -index 2f134986..d8d8ddb7 100644 ---- a/test/cmd/isula/information/info/CMakeLists.txt -+++ b/test/cmd/isula/information/info/CMakeLists.txt -@@ -49,3 +49,4 @@ target_include_directories(${EXE} PUBLIC - ) - target_link_libraries(${EXE} ${GTEST_BOTH_LIBRARIES} ${GMOCK_LIBRARY} ${GMOCK_MAIN_LIBRARY} ${CMAKE_THREAD_LIBS_INIT} ${ISULA_LIBUTILS_LIBRARY} -lgrpc++ -lprotobuf -lcrypto -lyajl -lz) - add_test(NAME ${EXE} COMMAND ${EXE} --gtest_output=xml:${EXE}-Results.xml) -+set_tests_properties(${EXE} PROPERTIES TIMEOUT 120) -diff --git a/test/cmd/isula/information/ps/CMakeLists.txt b/test/cmd/isula/information/ps/CMakeLists.txt -index 81d4202c..436e611b 100644 ---- a/test/cmd/isula/information/ps/CMakeLists.txt -+++ b/test/cmd/isula/information/ps/CMakeLists.txt -@@ -51,3 +51,4 @@ target_include_directories(${EXE} PUBLIC - ) - target_link_libraries(${EXE} ${GTEST_BOTH_LIBRARIES} ${GMOCK_LIBRARY} ${GMOCK_MAIN_LIBRARY} ${CMAKE_THREAD_LIBS_INIT} ${ISULA_LIBUTILS_LIBRARY} -lgrpc++ -lprotobuf -lcrypto -lyajl -lz) - add_test(NAME ${EXE} COMMAND ${EXE} --gtest_output=xml:${EXE}-Results.xml) -+set_tests_properties(${EXE} PROPERTIES TIMEOUT 120) -diff --git a/test/cmd/isula/utils/client_show_format/CMakeLists.txt b/test/cmd/isula/utils/client_show_format/CMakeLists.txt -index 60d538ad..e19332cf 100644 ---- a/test/cmd/isula/utils/client_show_format/CMakeLists.txt -+++ b/test/cmd/isula/utils/client_show_format/CMakeLists.txt -@@ -19,3 +19,4 @@ target_include_directories(${EXE} PUBLIC - - target_link_libraries(${EXE} ${GTEST_BOTH_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} ${ISULA_LIBUTILS_LIBRARY} libutils_ut -lcrypto -lyajl -lz) - add_test(NAME ${EXE} COMMAND ${EXE} --gtest_output=xml:${EXE}-Results.xml) -+set_tests_properties(${EXE} PROPERTIES TIMEOUT 120) -diff --git a/test/cmd/isula/utils/template_string_parse/CMakeLists.txt b/test/cmd/isula/utils/template_string_parse/CMakeLists.txt -index 32256b6b..25efd25c 100644 ---- a/test/cmd/isula/utils/template_string_parse/CMakeLists.txt -+++ b/test/cmd/isula/utils/template_string_parse/CMakeLists.txt -@@ -19,3 +19,4 @@ target_include_directories(${EXE} PUBLIC - - target_link_libraries(${EXE} ${GTEST_BOTH_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} ${ISULA_LIBUTILS_LIBRARY} libutils_ut -lcrypto -lyajl -lz) - add_test(NAME ${EXE} COMMAND ${EXE} --gtest_output=xml:${EXE}-Results.xml) -+set_tests_properties(${EXE} PROPERTIES TIMEOUT 120) -diff --git a/test/cmd/isulad-shim/CMakeLists.txt b/test/cmd/isulad-shim/CMakeLists.txt -index 1c2de232..dc293f6d 100644 ---- a/test/cmd/isulad-shim/CMakeLists.txt -+++ b/test/cmd/isulad-shim/CMakeLists.txt -@@ -30,3 +30,4 @@ target_include_directories(${EXE} PUBLIC - ) - target_link_libraries(${EXE} ${GTEST_BOTH_LIBRARIES} ${GMOCK_LIBRARY} ${GMOCK_MAIN_LIBRARY} ${CMAKE_THREAD_LIBS_INIT} ${ISULA_LIBUTILS_LIBRARY} -lcrypto -lyajl -lz) - add_test(NAME ${EXE} COMMAND ${EXE} --gtest_output=xml:${EXE}-Results.xml) -+set_tests_properties(${EXE} PROPERTIES TIMEOUT 120) -diff --git a/test/cutils/mainloop/CMakeLists.txt b/test/cutils/mainloop/CMakeLists.txt -index 78e3f18d..61ea7ffc 100644 ---- a/test/cutils/mainloop/CMakeLists.txt -+++ b/test/cutils/mainloop/CMakeLists.txt -@@ -25,3 +25,4 @@ target_link_libraries(${EXE} - libutils_ut -lcrypto -lyajl -lz) - - add_test(NAME ${EXE} COMMAND ${EXE} --gtest_output=xml:${EXE}-Results.xml) -+set_tests_properties(${EXE} PROPERTIES TIMEOUT 120) -diff --git a/test/cutils/map/CMakeLists.txt b/test/cutils/map/CMakeLists.txt -index 4059559f..bd21ee3f 100644 ---- a/test/cutils/map/CMakeLists.txt -+++ b/test/cutils/map/CMakeLists.txt -@@ -14,3 +14,4 @@ target_include_directories(${EXE} PUBLIC - - target_link_libraries(${EXE} ${GTEST_BOTH_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} libutils_ut -lcrypto -lyajl -lz) - add_test(NAME ${EXE} COMMAND ${EXE} --gtest_output=xml:${EXE}-Results.xml) -+set_tests_properties(${EXE} PROPERTIES TIMEOUT 120) -diff --git a/test/cutils/path/CMakeLists.txt b/test/cutils/path/CMakeLists.txt -index 745258a1..aa0c6c6e 100644 ---- a/test/cutils/path/CMakeLists.txt -+++ b/test/cutils/path/CMakeLists.txt -@@ -15,3 +15,4 @@ target_include_directories(${EXE} PUBLIC - set_target_properties(${EXE} PROPERTIES LINK_FLAGS "-Wl,--wrap,getcwd -Wl,--wrap,readlink") - target_link_libraries(${EXE} ${GTEST_BOTH_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} ${ISULA_LIBUTILS_LIBRARY} libutils_ut -lcrypto -lyajl -lz) - add_test(NAME ${EXE} COMMAND ${EXE} --gtest_output=xml:${EXE}-Results.xml) -+set_tests_properties(${EXE} PROPERTIES TIMEOUT 120) -diff --git a/test/cutils/util_atomic/CMakeLists.txt b/test/cutils/util_atomic/CMakeLists.txt -index 071b2a04..21b05c46 100644 ---- a/test/cutils/util_atomic/CMakeLists.txt -+++ b/test/cutils/util_atomic/CMakeLists.txt -@@ -16,3 +16,4 @@ target_include_directories(${EXE} PUBLIC - - target_link_libraries(${EXE} ${GTEST_BOTH_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} ${ISULA_LIBUTILS_LIBRARY} libutils_ut -lcrypto -lyajl -lz) - add_test(NAME ${EXE} COMMAND ${EXE} --gtest_output=xml:${EXE}-Results.xml) -+set_tests_properties(${EXE} PROPERTIES TIMEOUT 120) -diff --git a/test/cutils/utils_aes/CMakeLists.txt b/test/cutils/utils_aes/CMakeLists.txt -index f7535bb3..c4d175c8 100644 ---- a/test/cutils/utils_aes/CMakeLists.txt -+++ b/test/cutils/utils_aes/CMakeLists.txt -@@ -14,3 +14,4 @@ target_include_directories(${EXE} PUBLIC - ) - target_link_libraries(${EXE} ${GTEST_BOTH_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} ${ISULA_LIBUTILS_LIBRARY} libutils_ut -lcrypto -lyajl -lz) - add_test(NAME ${EXE} COMMAND ${EXE} --gtest_output=xml:${EXE}-Results.xml) -+set_tests_properties(${EXE} PROPERTIES TIMEOUT 120) -diff --git a/test/cutils/utils_array/CMakeLists.txt b/test/cutils/utils_array/CMakeLists.txt -index 71733e31..afe564bf 100644 ---- a/test/cutils/utils_array/CMakeLists.txt -+++ b/test/cutils/utils_array/CMakeLists.txt -@@ -16,3 +16,4 @@ target_include_directories(${EXE} PUBLIC - set_target_properties(${EXE} PROPERTIES LINK_FLAGS "-Wl,--wrap,calloc") - target_link_libraries(${EXE} ${GTEST_BOTH_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} ${ISULA_LIBUTILS_LIBRARY} libutils_ut -lcrypto -lyajl -lz) - add_test(NAME ${EXE} COMMAND ${EXE} --gtest_output=xml:${EXE}-Results.xml) -+set_tests_properties(${EXE} PROPERTIES TIMEOUT 120) -diff --git a/test/cutils/utils_base64/CMakeLists.txt b/test/cutils/utils_base64/CMakeLists.txt -index d5b99361..35e6ba04 100644 ---- a/test/cutils/utils_base64/CMakeLists.txt -+++ b/test/cutils/utils_base64/CMakeLists.txt -@@ -15,3 +15,4 @@ target_include_directories(${EXE} PUBLIC - ) - target_link_libraries(${EXE} ${GTEST_BOTH_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} ${ISULA_LIBUTILS_LIBRARY} libutils_ut -lcrypto -lyajl -lz) - add_test(NAME ${EXE} COMMAND ${EXE} --gtest_output=xml:${EXE}-Results.xml) -+set_tests_properties(${EXE} PROPERTIES TIMEOUT 120) -diff --git a/test/cutils/utils_convert/CMakeLists.txt b/test/cutils/utils_convert/CMakeLists.txt -index 30068208..fcf70a7c 100644 ---- a/test/cutils/utils_convert/CMakeLists.txt -+++ b/test/cutils/utils_convert/CMakeLists.txt -@@ -15,3 +15,4 @@ target_include_directories(${EXE} PUBLIC - ) - target_link_libraries(${EXE} ${GTEST_BOTH_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} ${ISULA_LIBUTILS_LIBRARY} libutils_ut -lcrypto -lyajl -lz) - add_test(NAME ${EXE} COMMAND ${EXE} --gtest_output=xml:${EXE}-Results.xml) -+set_tests_properties(${EXE} PROPERTIES TIMEOUT 120) -diff --git a/test/cutils/utils_error/CMakeLists.txt b/test/cutils/utils_error/CMakeLists.txt -index 28016605..9607aeeb 100644 ---- a/test/cutils/utils_error/CMakeLists.txt -+++ b/test/cutils/utils_error/CMakeLists.txt -@@ -14,3 +14,4 @@ target_include_directories(${EXE} PUBLIC - ) - target_link_libraries(${EXE} ${GTEST_BOTH_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} ${ISULA_LIBUTILS_LIBRARY} libutils_ut -lcrypto -lyajl -lz) - add_test(NAME ${EXE} COMMAND ${EXE} --gtest_output=xml:${EXE}-Results.xml) -+set_tests_properties(${EXE} PROPERTIES TIMEOUT 120) -diff --git a/test/cutils/utils_file/CMakeLists.txt b/test/cutils/utils_file/CMakeLists.txt -index 20317e15..01b2ff47 100644 ---- a/test/cutils/utils_file/CMakeLists.txt -+++ b/test/cutils/utils_file/CMakeLists.txt -@@ -16,3 +16,4 @@ target_include_directories(${EXE} PUBLIC - - target_link_libraries(${EXE} ${GTEST_BOTH_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} ${ISULA_LIBUTILS_LIBRARY} libutils_ut -lcrypto -lyajl -lz) - add_test(NAME ${EXE} COMMAND ${EXE} --gtest_output=xml:${EXE}-Results.xml) -+set_tests_properties(${EXE} PROPERTIES TIMEOUT 120) -diff --git a/test/cutils/utils_filters/CMakeLists.txt b/test/cutils/utils_filters/CMakeLists.txt -index 31d3ac25..561ff4ef 100644 ---- a/test/cutils/utils_filters/CMakeLists.txt -+++ b/test/cutils/utils_filters/CMakeLists.txt -@@ -16,3 +16,4 @@ target_include_directories(${EXE} PUBLIC - - target_link_libraries(${EXE} ${GTEST_BOTH_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} ${ISULA_LIBUTILS_LIBRARY} libutils_ut -lcrypto -lyajl -lz) - add_test(NAME ${EXE} COMMAND ${EXE} --gtest_output=xml:${EXE}-Results.xml) -+set_tests_properties(${EXE} PROPERTIES TIMEOUT 120) -diff --git a/test/cutils/utils_fs/CMakeLists.txt b/test/cutils/utils_fs/CMakeLists.txt -index 7ff3176a..e909aee6 100644 ---- a/test/cutils/utils_fs/CMakeLists.txt -+++ b/test/cutils/utils_fs/CMakeLists.txt -@@ -14,3 +14,4 @@ target_include_directories(${EXE} PUBLIC - ) - target_link_libraries(${EXE} ${GTEST_BOTH_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} ${ISULA_LIBUTILS_LIBRARY} libutils_ut -lcrypto -lyajl -lz) - add_test(NAME ${EXE} COMMAND ${EXE} --gtest_output=xml:${EXE}-Results.xml) -+set_tests_properties(${EXE} PROPERTIES TIMEOUT 120) -diff --git a/test/cutils/utils_mount_spec/CMakeLists.txt b/test/cutils/utils_mount_spec/CMakeLists.txt -index 24fb5add..099805d2 100644 ---- a/test/cutils/utils_mount_spec/CMakeLists.txt -+++ b/test/cutils/utils_mount_spec/CMakeLists.txt -@@ -14,3 +14,4 @@ target_include_directories(${EXE} PUBLIC - ) - target_link_libraries(${EXE} ${GTEST_BOTH_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} ${ISULA_LIBUTILS_LIBRARY} libutils_ut -lcrypto -lyajl -lz) - add_test(NAME ${EXE} COMMAND ${EXE} --gtest_output=xml:${EXE}-Results.xml) -+set_tests_properties(${EXE} PROPERTIES TIMEOUT 120) -diff --git a/test/cutils/utils_namespace/CMakeLists.txt b/test/cutils/utils_namespace/CMakeLists.txt -index 8add4a71..fb535e71 100644 ---- a/test/cutils/utils_namespace/CMakeLists.txt -+++ b/test/cutils/utils_namespace/CMakeLists.txt -@@ -14,3 +14,4 @@ target_include_directories(${EXE} PUBLIC - ) - target_link_libraries(${EXE} ${GTEST_BOTH_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} ${ISULA_LIBUTILS_LIBRARY} libutils_ut -lcrypto -lyajl -lz) - add_test(NAME ${EXE} COMMAND ${EXE} --gtest_output=xml:${EXE}-Results.xml) -+set_tests_properties(${EXE} PROPERTIES TIMEOUT 120) -diff --git a/test/cutils/utils_network/CMakeLists.txt b/test/cutils/utils_network/CMakeLists.txt -index cf0fc481..22e421ab 100644 ---- a/test/cutils/utils_network/CMakeLists.txt -+++ b/test/cutils/utils_network/CMakeLists.txt -@@ -20,3 +20,4 @@ target_link_libraries(${EXE} - libutils_ut -lcrypto -lyajl -lz) - - add_test(NAME ${EXE} COMMAND ${EXE} --gtest_output=xml:${EXE}-Results.xml) -+set_tests_properties(${EXE} PROPERTIES TIMEOUT 120) -diff --git a/test/cutils/utils_pwgr/CMakeLists.txt b/test/cutils/utils_pwgr/CMakeLists.txt -index 5938991e..34acb92a 100644 ---- a/test/cutils/utils_pwgr/CMakeLists.txt -+++ b/test/cutils/utils_pwgr/CMakeLists.txt -@@ -15,3 +15,4 @@ target_include_directories(${EXE} PUBLIC - ) - target_link_libraries(${EXE} ${GTEST_BOTH_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} ${ISULA_LIBUTILS_LIBRARY} libutils_ut -lcrypto -lyajl -lz) - add_test(NAME ${EXE} COMMAND ${EXE} --gtest_output=xml:${EXE}-Results.xml) -+set_tests_properties(${EXE} PROPERTIES TIMEOUT 120) -diff --git a/test/cutils/utils_regex/CMakeLists.txt b/test/cutils/utils_regex/CMakeLists.txt -index 3f6410b2..45ba2604 100644 ---- a/test/cutils/utils_regex/CMakeLists.txt -+++ b/test/cutils/utils_regex/CMakeLists.txt -@@ -14,3 +14,4 @@ target_include_directories(${EXE} PUBLIC - ) - target_link_libraries(${EXE} ${GTEST_BOTH_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} ${ISULA_LIBUTILS_LIBRARY} libutils_ut -lcrypto -lyajl -lz) - add_test(NAME ${EXE} COMMAND ${EXE} --gtest_output=xml:${EXE}-Results.xml) -+set_tests_properties(${EXE} PROPERTIES TIMEOUT 120) -diff --git a/test/cutils/utils_string/CMakeLists.txt b/test/cutils/utils_string/CMakeLists.txt -index 1343f4e6..b9968c43 100644 ---- a/test/cutils/utils_string/CMakeLists.txt -+++ b/test/cutils/utils_string/CMakeLists.txt -@@ -16,3 +16,4 @@ target_include_directories(${EXE} PUBLIC - set_target_properties(${EXE} PROPERTIES LINK_FLAGS "-Wl,--wrap,util_strdup_s -Wl,--wrap,calloc -Wl,--wrap,strcat_s") - target_link_libraries(${EXE} ${GTEST_BOTH_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} ${ISULA_LIBUTILS_LIBRARY} libutils_ut -lcrypto -lyajl -lz) - add_test(NAME ${EXE} COMMAND ${EXE} --gtest_output=xml:${EXE}-Results.xml) -+set_tests_properties(${EXE} PROPERTIES TIMEOUT 120) -diff --git a/test/cutils/utils_timestamp/CMakeLists.txt b/test/cutils/utils_timestamp/CMakeLists.txt -index 38aec640..6da3fcc9 100644 ---- a/test/cutils/utils_timestamp/CMakeLists.txt -+++ b/test/cutils/utils_timestamp/CMakeLists.txt -@@ -14,3 +14,4 @@ target_include_directories(${EXE} PUBLIC - ) - target_link_libraries(${EXE} ${GTEST_BOTH_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} ${ISULA_LIBUTILS_LIBRARY} libutils_ut -lcrypto -lyajl -lz) - add_test(NAME ${EXE} COMMAND ${EXE} --gtest_output=xml:${EXE}-Results.xml) -+set_tests_properties(${EXE} PROPERTIES TIMEOUT 120) -diff --git a/test/cutils/utils_utils/CMakeLists.txt b/test/cutils/utils_utils/CMakeLists.txt -index 7b3bd546..99a83e7a 100644 ---- a/test/cutils/utils_utils/CMakeLists.txt -+++ b/test/cutils/utils_utils/CMakeLists.txt -@@ -14,3 +14,4 @@ target_include_directories(${EXE} PUBLIC - ) - target_link_libraries(${EXE} ${GTEST_BOTH_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} ${ISULA_LIBUTILS_LIBRARY} libutils_ut -lcrypto -lyajl -lz) - add_test(NAME ${EXE} COMMAND ${EXE} --gtest_output=xml:${EXE}-Results.xml) -+set_tests_properties(${EXE} PROPERTIES TIMEOUT 120) -diff --git a/test/cutils/utils_verify/CMakeLists.txt b/test/cutils/utils_verify/CMakeLists.txt -index abf9596f..dd9ef78b 100644 ---- a/test/cutils/utils_verify/CMakeLists.txt -+++ b/test/cutils/utils_verify/CMakeLists.txt -@@ -14,3 +14,4 @@ target_include_directories(${EXE} PUBLIC - ) - target_link_libraries(${EXE} ${GTEST_BOTH_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} ${ISULA_LIBUTILS_LIBRARY} libutils_ut -lcrypto -lyajl -lz) - add_test(NAME ${EXE} COMMAND ${EXE} --gtest_output=xml:${EXE}-Results.xml) -+set_tests_properties(${EXE} PROPERTIES TIMEOUT 120) -diff --git a/test/image/oci/oci_config_merge/CMakeLists.txt b/test/image/oci/oci_config_merge/CMakeLists.txt -index 88047fde..42cd2e78 100644 ---- a/test/image/oci/oci_config_merge/CMakeLists.txt -+++ b/test/image/oci/oci_config_merge/CMakeLists.txt -@@ -73,3 +73,4 @@ target_include_directories(${EXE} PUBLIC - set_target_properties(${EXE} PROPERTIES LINK_FLAGS "-Wl,--wrap,util_common_calloc_s -Wl,--wrap,util_smart_calloc_s -Wl,--wrap,merge_env") - target_link_libraries(${EXE} ${GTEST_BOTH_LIBRARIES} ${GMOCK_LIBRARY} ${GMOCK_MAIN_LIBRARY} ${CMAKE_THREAD_LIBS_INIT} ${ISULA_LIBUTILS_LIBRARY} -lgrpc++ -lprotobuf -lcrypto -lyajl -lz) - add_test(NAME ${EXE} COMMAND ${EXE} --gtest_output=xml:${EXE}-Results.xml) -+set_tests_properties(${EXE} PROPERTIES TIMEOUT 120) -diff --git a/test/image/oci/registry/CMakeLists.txt b/test/image/oci/registry/CMakeLists.txt -index 727a615a..13ed95b2 100644 ---- a/test/image/oci/registry/CMakeLists.txt -+++ b/test/image/oci/registry/CMakeLists.txt -@@ -63,3 +63,4 @@ target_include_directories(${EXE} PUBLIC - - target_link_libraries(${EXE} ${GTEST_BOTH_LIBRARIES} ${GMOCK_LIBRARY} ${GMOCK_MAIN_LIBRARY} ${CMAKE_THREAD_LIBS_INIT} ${ISULA_LIBUTILS_LIBRARY} -lcrypto -lyajl -lz libhttpclient) - add_test(NAME ${EXE} COMMAND ${EXE} --gtest_output=xml:${EXE}-Results.xml) -+set_tests_properties(${EXE} PROPERTIES TIMEOUT 120) -diff --git a/test/image/oci/storage/images/CMakeLists.txt b/test/image/oci/storage/images/CMakeLists.txt -index b00c5a0e..3e6b69a4 100644 ---- a/test/image/oci/storage/images/CMakeLists.txt -+++ b/test/image/oci/storage/images/CMakeLists.txt -@@ -45,3 +45,4 @@ target_include_directories(${EXE} PUBLIC - - target_link_libraries(${EXE} ${GTEST_BOTH_LIBRARIES} ${GMOCK_LIBRARY} ${GMOCK_MAIN_LIBRARY} ${CMAKE_THREAD_LIBS_INIT} ${ISULA_LIBUTILS_LIBRARY} -lcrypto -lyajl -lz) - add_test(NAME ${EXE} COMMAND ${EXE} --gtest_output=xml:${EXE}-Results.xml) -+set_tests_properties(${EXE} PROPERTIES TIMEOUT 120) -diff --git a/test/image/oci/storage/layers/CMakeLists.txt b/test/image/oci/storage/layers/CMakeLists.txt -index 3fe8ab7c..952e9483 100644 ---- a/test/image/oci/storage/layers/CMakeLists.txt -+++ b/test/image/oci/storage/layers/CMakeLists.txt -@@ -66,6 +66,7 @@ target_link_libraries(${DRIVER_EXE} - -lwebsockets -lcrypto -lyajl -larchive ${SELINUX_LIBRARY} -ldevmapper -lz) - - add_test(NAME ${DRIVER_EXE} COMMAND ${DRIVER_EXE} --gtest_output=xml:${DRIVER_EXE}-Results.xml) -+set_tests_properties(${DRIVER_EXE} PROPERTIES TIMEOUT 120) - - # storage_layers_ut - SET(LAYER_EXE storage_layers_ut) -@@ -141,3 +142,4 @@ target_link_libraries(${LAYER_EXE} - -lwebsockets -lcrypto -lyajl -larchive ${SELINUX_LIBRARY} -ldevmapper -lz) - - add_test(NAME ${LAYER_EXE} COMMAND ${LAYER_EXE} --gtest_output=xml:${LAYER_EXE}-Results.xml) -+set_tests_properties(${LAYER_EXE} PROPERTIES TIMEOUT 120) -diff --git a/test/image/oci/storage/rootfs/CMakeLists.txt b/test/image/oci/storage/rootfs/CMakeLists.txt -index 5bf568f9..4d7d3533 100644 ---- a/test/image/oci/storage/rootfs/CMakeLists.txt -+++ b/test/image/oci/storage/rootfs/CMakeLists.txt -@@ -45,3 +45,4 @@ target_include_directories(${EXE} PUBLIC - - target_link_libraries(${EXE} ${GTEST_BOTH_LIBRARIES} ${GMOCK_LIBRARY} ${GMOCK_MAIN_LIBRARY} ${CMAKE_THREAD_LIBS_INIT} ${ISULA_LIBUTILS_LIBRARY} -lcrypto -lyajl -lz) - add_test(NAME ${EXE} COMMAND ${EXE} --gtest_output=xml:${EXE}-Results.xml) -+set_tests_properties(${EXE} PROPERTIES TIMEOUT 120) -diff --git a/test/network/CMakeLists.txt b/test/network/CMakeLists.txt -index e354bebc..be31fd0e 100644 ---- a/test/network/CMakeLists.txt -+++ b/test/network/CMakeLists.txt -@@ -86,3 +86,4 @@ target_include_directories(${EXE} PUBLIC - - target_link_libraries(${EXE} ${GTEST_BOTH_LIBRARIES} ${GMOCK_LIBRARY} ${GMOCK_MAIN_LIBRARY} ${CMAKE_THREAD_LIBS_INIT} ${ISULA_LIBUTILS_LIBRARY} -lgrpc++ -lprotobuf -lcrypto -lyajl -lz) - add_test(NAME ${EXE} COMMAND ${EXE} --gtest_output=xml:${EXE}-Results.xml) -+set_tests_properties(${EXE} PROPERTIES TIMEOUT 120) -diff --git a/test/runtime/isula/CMakeLists.txt b/test/runtime/isula/CMakeLists.txt -index 38a454b0..f5821953 100644 ---- a/test/runtime/isula/CMakeLists.txt -+++ b/test/runtime/isula/CMakeLists.txt -@@ -58,3 +58,4 @@ target_include_directories(${EXE} PUBLIC - - target_link_libraries(${EXE} ${GTEST_BOTH_LIBRARIES} ${GMOCK_LIBRARY} ${GMOCK_MAIN_LIBRARY} ${CMAKE_THREAD_LIBS_INIT} ${ISULA_LIBUTILS_LIBRARY} -lpthread -lgrpc++ -lprotobuf -lcrypto -lyajl -lz) - add_test(NAME ${EXE} COMMAND ${EXE} --gtest_output=xml:${EXE}-Results.xml) -+set_tests_properties(${EXE} PROPERTIES TIMEOUT 120) -diff --git a/test/runtime/lcr/CMakeLists.txt b/test/runtime/lcr/CMakeLists.txt -index 6f8f784c..979cbe5a 100644 ---- a/test/runtime/lcr/CMakeLists.txt -+++ b/test/runtime/lcr/CMakeLists.txt -@@ -58,3 +58,4 @@ target_include_directories(${EXE} PUBLIC - - target_link_libraries(${EXE} ${GTEST_BOTH_LIBRARIES} ${GMOCK_LIBRARY} ${GMOCK_MAIN_LIBRARY} ${CMAKE_THREAD_LIBS_INIT} ${ISULA_LIBUTILS_LIBRARY} -lgrpc++ -lprotobuf -lcrypto -lyajl -lz) - add_test(NAME ${EXE} COMMAND ${EXE} --gtest_output=xml:${EXE}-Results.xml) -+set_tests_properties(${EXE} PROPERTIES TIMEOUT 120) -diff --git a/test/services/execution/execute/execution_extend/CMakeLists.txt b/test/services/execution/execute/execution_extend/CMakeLists.txt -index aaff39ef..8588fac3 100644 ---- a/test/services/execution/execute/execution_extend/CMakeLists.txt -+++ b/test/services/execution/execute/execution_extend/CMakeLists.txt -@@ -76,3 +76,4 @@ target_include_directories(${EXE} PUBLIC - ) - target_link_libraries(${EXE} ${GTEST_BOTH_LIBRARIES} ${GMOCK_LIBRARY} ${GMOCK_MAIN_LIBRARY} ${CMAKE_THREAD_LIBS_INIT} ${ISULA_LIBUTILS_LIBRARY} -lgrpc++ -lprotobuf -lcrypto -lyajl -lz) - add_test(NAME ${EXE} COMMAND ${EXE} --gtest_output=xml:${EXE}-Results.xml) -+set_tests_properties(${EXE} PROPERTIES TIMEOUT 120) -diff --git a/test/services/execution/spec/CMakeLists.txt b/test/services/execution/spec/CMakeLists.txt -index e1aa680e..d4a9d9b0 100644 ---- a/test/services/execution/spec/CMakeLists.txt -+++ b/test/services/execution/spec/CMakeLists.txt -@@ -74,4 +74,6 @@ target_include_directories(${MOCK_EXE} PUBLIC - target_link_libraries(${EXE} ${GTEST_BOTH_LIBRARIES} ${GMOCK_LIBRARY} ${GMOCK_MAIN_LIBRARY} ${CMAKE_THREAD_LIBS_INIT} ${SELINUX_LIBRARY} ${ISULA_LIBUTILS_LIBRARY} -lcrypto -lyajl -lz) - target_link_libraries(${MOCK_EXE} ${GTEST_BOTH_LIBRARIES} ${GMOCK_LIBRARY} ${GMOCK_MAIN_LIBRARY} ${CMAKE_THREAD_LIBS_INIT} ${SELINUX_LIBRARY} ${ISULA_LIBUTILS_LIBRARY} -lcrypto -lyajl -lz) - add_test(NAME ${EXE} COMMAND ${EXE} --gtest_output=xml:${EXE}-Results.xml) -+set_tests_properties(${EXE} PROPERTIES TIMEOUT 120) - add_test(NAME ${MOCK_EXE} COMMAND ${MOCK_EXE} --gtest_output=xml:${MOCK_EXE}-Results.xml) -+set_tests_properties(${MOCK_EXE} PROPERTIES TIMEOUT 120) -diff --git a/test/services/execution/spec/selinux_label_ut.cc b/test/services/execution/spec/selinux_label_ut.cc -index c0e9ab1c..f9a73cca 100644 ---- a/test/services/execution/spec/selinux_label_ut.cc -+++ b/test/services/execution/spec/selinux_label_ut.cc -@@ -179,11 +179,13 @@ protected: - void SetUp() override - { - CreateTestedObjects(); -+ selinux_state_init(); - } - - void TearDown() override - { - ClearTestedObjects(); -+ selinux_state_free(); - } - - private: -diff --git a/test/specs/specs/CMakeLists.txt b/test/specs/specs/CMakeLists.txt -index b730959c..c4b36c5f 100644 ---- a/test/specs/specs/CMakeLists.txt -+++ b/test/specs/specs/CMakeLists.txt -@@ -83,3 +83,4 @@ target_include_directories(${EXE} PUBLIC - - target_link_libraries(${EXE} ${GTEST_BOTH_LIBRARIES} ${GMOCK_LIBRARY} ${GMOCK_MAIN_LIBRARY} ${CMAKE_THREAD_LIBS_INIT} ${ISULA_LIBUTILS_LIBRARY} -lgrpc++ -lprotobuf -lcrypto -lyajl -lz) - add_test(NAME ${EXE} COMMAND ${EXE} --gtest_output=xml:${EXE}-Results.xml) -+set_tests_properties(${EXE} PROPERTIES TIMEOUT 120) -diff --git a/test/specs/specs_extend/CMakeLists.txt b/test/specs/specs_extend/CMakeLists.txt -index 7d05deb4..06f46a37 100644 ---- a/test/specs/specs_extend/CMakeLists.txt -+++ b/test/specs/specs_extend/CMakeLists.txt -@@ -79,3 +79,4 @@ target_include_directories(${EXE} PUBLIC - - target_link_libraries(${EXE} ${GTEST_BOTH_LIBRARIES} ${GMOCK_LIBRARY} ${GMOCK_MAIN_LIBRARY} ${CMAKE_THREAD_LIBS_INIT} ${ISULA_LIBUTILS_LIBRARY} -lgrpc++ -lprotobuf -lcrypto -lyajl -lz) - add_test(NAME ${EXE} COMMAND ${EXE} --gtest_output=xml:${EXE}-Results.xml) -+set_tests_properties(${EXE} PROPERTIES TIMEOUT 120) -diff --git a/test/volume/CMakeLists.txt b/test/volume/CMakeLists.txt -index 6eea3f76..e2045b19 100644 ---- a/test/volume/CMakeLists.txt -+++ b/test/volume/CMakeLists.txt -@@ -39,4 +39,5 @@ target_include_directories(${EXE} PUBLIC - ) - - target_link_libraries(${EXE} ${GTEST_BOTH_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} ${ISULA_LIBUTILS_LIBRARY} -lcrypto -lyajl -lz) --add_test(NAME ${EXE} COMMAND ${EXE} --gtest_output=xml:${EXE}-Results.xml) -\ No newline at end of file -+add_test(NAME ${EXE} COMMAND ${EXE} --gtest_output=xml:${EXE}-Results.xml) -+set_tests_properties(${EXE} PROPERTIES TIMEOUT 120) --- -2.25.1 - diff --git a/0014-add-retry-for-read-write.patch b/0014-add-retry-for-read-write.patch deleted file mode 100644 index c51a570..0000000 --- a/0014-add-retry-for-read-write.patch +++ /dev/null @@ -1,360 +0,0 @@ -From 734fca150e1c5da2814a55e0315bde8e828e6e8a Mon Sep 17 00:00:00 2001 -From: zhangxiaoyu -Date: Fri, 17 Feb 2023 16:07:53 +0800 -Subject: [PATCH 14/53] add retry for read/write - -Signed-off-by: zhangxiaoyu ---- - src/cmd/isulad-shim/common.c | 6 +++--- - src/cmd/isulad-shim/process.c | 2 +- - src/cmd/isulad/main.c | 4 ++-- - src/daemon/common/selinux_label.c | 2 +- - src/daemon/entry/connect/grpc/grpc_containers_service.cc | 9 ++++++--- - src/daemon/entry/cri/sysctl_tools.c | 2 +- - src/daemon/executor/container_cb/execution.c | 4 ++-- - .../modules/container/container_gc/containers_gc.c | 3 ++- - src/daemon/modules/events_sender/event_sender.c | 2 +- - src/daemon/modules/image/oci/storage/storage.c | 4 +++- - src/daemon/modules/log/log_gather.c | 6 +++--- - src/daemon/modules/plugin/plugin.c | 2 +- - src/daemon/modules/runtime/isula/isula_rt_ops.c | 4 ++-- - src/daemon/modules/service/io_handler.c | 2 +- - src/daemon/modules/service/service_container.c | 2 +- - src/utils/cutils/utils.c | 2 +- - src/utils/cutils/utils_aes.c | 2 +- - src/utils/cutils/utils_file.c | 2 +- - src/utils/tar/util_archive.c | 4 ++-- - src/utils/tar/util_gzip.c | 2 +- - 20 files changed, 36 insertions(+), 30 deletions(-) - -diff --git a/src/cmd/isulad-shim/common.c b/src/cmd/isulad-shim/common.c -index bb8464bb..0c345187 100644 ---- a/src/cmd/isulad-shim/common.c -+++ b/src/cmd/isulad-shim/common.c -@@ -196,7 +196,7 @@ int generate_random_str(char *id, size_t len) - } - for (i = 0; i < len; i++) { - int nret; -- if (read(fd, &num, sizeof(int)) < 0) { -+ if (read_nointr(fd, &num, sizeof(int)) < 0) { - close(fd); - return SHIM_ERR; - } -@@ -232,8 +232,8 @@ void write_message(int fd, const char *level, const char *fmt, ...) - va_end(arg_list); - - snprintf(msg, MAX_MESSAGE_LEN - 1, "{\"level\": \"%s\", \"msg\": \"%s\"}\n", level, buf); -- nwrite = write(fd, msg, strlen(msg)); -- if (nwrite != strlen(msg)) { -+ nwrite = write_nointr_in_total(fd, msg, strlen(msg)); -+ if (nwrite < 0 || (size_t)nwrite != strlen(msg)) { - return; - } - } -diff --git a/src/cmd/isulad-shim/process.c b/src/cmd/isulad-shim/process.c -index 8a0aa142..02ce3c85 100644 ---- a/src/cmd/isulad-shim/process.c -+++ b/src/cmd/isulad-shim/process.c -@@ -283,7 +283,7 @@ static void *do_io_copy(void *data) - break; - } - -- int r_count = read(ioc->fd_from, buf, DEFAULT_IO_COPY_BUF); -+ int r_count = util_read_nointr(ioc->fd_from, buf, DEFAULT_IO_COPY_BUF); - if (r_count == -1) { - if (errno == EAGAIN || errno == EINTR) { - continue; -diff --git a/src/cmd/isulad/main.c b/src/cmd/isulad/main.c -index b17657c5..a75fb189 100644 ---- a/src/cmd/isulad/main.c -+++ b/src/cmd/isulad/main.c -@@ -482,8 +482,8 @@ int check_and_save_pid(const char *fn) - goto out; - } - -- len = (int)write(fd, pidbuf, strlen(pidbuf)); -- if (len < 0) { -+ len = util_write_nointr(fd, pidbuf, strlen(pidbuf)); -+ if (len < 0 || len != strlen(pidbuf)) { - ERROR("Failed to write pid to file:%s: %s", fn, strerror(errno)); - ret = -1; - } -diff --git a/src/daemon/common/selinux_label.c b/src/daemon/common/selinux_label.c -index 24294780..173f3acb 100644 ---- a/src/daemon/common/selinux_label.c -+++ b/src/daemon/common/selinux_label.c -@@ -310,7 +310,7 @@ static int get_random_value(unsigned int range, unsigned int *val) - return -1; - } - -- if (read(fd, &num, sizeof(int)) < 0) { -+ if (util_read_nointr(fd, &num, sizeof(int)) < 0) { - ERROR("Failed to read urandom value\n"); - ret = -1; - goto out; -diff --git a/src/daemon/entry/connect/grpc/grpc_containers_service.cc b/src/daemon/entry/connect/grpc/grpc_containers_service.cc -index c0210ed9..eb79223b 100644 ---- a/src/daemon/entry/connect/grpc/grpc_containers_service.cc -+++ b/src/daemon/entry/connect/grpc/grpc_containers_service.cc -@@ -292,7 +292,8 @@ Status ContainerServiceImpl::RemoteStart(ServerContext *context, - break; - } - const std::string &command = request.stdin(); -- if (write(read_pipe_fd[1], (void *)(command.c_str()), command.length()) < 0) { -+ int nret = util_write_nointr_in_total(read_pipe_fd[1], command.c_str(), command.length()); -+ if (nret < 0 || (size_t)nret != command.length()) { - ERROR("sub write over!"); - break; - } -@@ -407,7 +408,8 @@ public: - } - for (int i = 0; i < request.cmd_size(); i++) { - std::string command = request.cmd(i); -- if (write(m_read_pipe_fd, (void *)(command.c_str()), command.length()) < 0) { -+ int nret = util_write_nointr_in_total(m_read_pipe_fd, command.c_str(), command.length()); -+ if (nret < 0 || (size_t)nret != command.length()) { - ERROR("sub write over!"); - return; - } -@@ -629,7 +631,8 @@ Status ContainerServiceImpl::Attach(ServerContext *context, ServerReaderWriter= PATH_MAX - 1) { - ERROR("Invalid layer id: %s", lid); -@@ -1438,7 +1439,8 @@ static int do_add_checked_layer(const char *lid, int fd, map_t *checked_layers) - (void)memcpy(buf, lid, strlen(lid)); - buf[strlen(lid)] = '\n'; - // save checked layer ids into file -- if (util_write_nointr(fd, buf, strlen(lid) + 1) < 0) { -+ nret = util_write_nointr(fd, buf, strlen(lid) + 1); -+ if (nret < 0 || (size_t)nret != strlen(lid) + 1) { - ERROR("Write checked layer data failed: %s", strerror(errno)); - ret = -1; - goto out; -diff --git a/src/daemon/modules/log/log_gather.c b/src/daemon/modules/log/log_gather.c -index 49facaa2..414c9ad1 100644 ---- a/src/daemon/modules/log/log_gather.c -+++ b/src/daemon/modules/log/log_gather.c -@@ -183,9 +183,9 @@ static int write_into_file(const void *buf, size_t g_log_size) - return -1; - } - } -- ret = (int)write(g_log_fd, buf, g_log_size); -- if (ret <= 0) { -- return ret; -+ ret = util_write_nointr_in_total(g_log_fd, buf, g_log_size); -+ if (ret < 0 || (size_t)ret != g_log_size) { -+ return -1; - } - - write_size += ret; -diff --git a/src/daemon/modules/plugin/plugin.c b/src/daemon/modules/plugin/plugin.c -index 53afeeaf..1c0af368 100644 ---- a/src/daemon/modules/plugin/plugin.c -+++ b/src/daemon/modules/plugin/plugin.c -@@ -618,7 +618,7 @@ static int process_plugin_events(int inotify_fd, const char *plugin_dir) - struct inotify_event *plugin_event = NULL; - char buffer[8192 + 1] = { 0 }; - int action = 0; -- events_length = read(inotify_fd, buffer, 8192); -+ events_length = util_read_nointr(inotify_fd, buffer, 8192); - - if (events_length <= 0) { - ERROR("Failed to wait events"); -diff --git a/src/daemon/modules/runtime/isula/isula_rt_ops.c b/src/daemon/modules/runtime/isula/isula_rt_ops.c -index 76e3bcb7..5463bb1b 100644 ---- a/src/daemon/modules/runtime/isula/isula_rt_ops.c -+++ b/src/daemon/modules/runtime/isula/isula_rt_ops.c -@@ -1363,8 +1363,8 @@ int rt_isula_exec_resize(const char *id, const char *runtime, const rt_exec_resi - goto out; - } - -- count = write(fd, data, RESIZE_DATA_SIZE); -- if (count <= 0) { -+ count = util_write_nointr(fd, data, strlen(data)); -+ if (count < 0 || (size_t)count != strlen(data)) { - ERROR("write exec resize data error"); - ret = -1; - goto out; -diff --git a/src/daemon/modules/service/io_handler.c b/src/daemon/modules/service/io_handler.c -index 893733bc..98c763a4 100644 ---- a/src/daemon/modules/service/io_handler.c -+++ b/src/daemon/modules/service/io_handler.c -@@ -340,7 +340,7 @@ static ssize_t write_to_fd(void *context, const void *data, size_t len) - { - ssize_t ret; - ret = util_write_nointr(*(int *)context, data, len); -- if ((ret <= 0) || (ret != (ssize_t)len)) { -+ if (ret < 0 || (size_t)ret != len) { - ERROR("Failed to write: %s", strerror(errno)); - return -1; - } -diff --git a/src/daemon/modules/service/service_container.c b/src/daemon/modules/service/service_container.c -index eeb035a0..cc777411 100644 ---- a/src/daemon/modules/service/service_container.c -+++ b/src/daemon/modules/service/service_container.c -@@ -345,7 +345,7 @@ static int write_env_content(const char *env_path, const char **env, size_t env_ - goto out; - } - nret = util_write_nointr(fd, env_content, strlen(env_content)); -- if (nret < 0 || nret != len - 1) { -+ if (nret < 0 || (size_t)nret != strlen(env_content)) { - SYSERROR("Write env file failed"); - free(env_content); - ret = -1; -diff --git a/src/utils/cutils/utils.c b/src/utils/cutils/utils.c -index de636bcb..f99b28e4 100644 ---- a/src/utils/cutils/utils.c -+++ b/src/utils/cutils/utils.c -@@ -1251,7 +1251,7 @@ int util_generate_random_str(char *id, size_t len) - } - for (i = 0; i < len; i++) { - int nret; -- if (read(fd, &num, sizeof(int)) < 0) { -+ if (util_read_nointr(fd, &num, sizeof(int)) < 0) { - ERROR("Failed to read urandom value"); - close(fd); - return -1; -diff --git a/src/utils/cutils/utils_aes.c b/src/utils/cutils/utils_aes.c -index 1e25ecd3..055a9538 100644 ---- a/src/utils/cutils/utils_aes.c -+++ b/src/utils/cutils/utils_aes.c -@@ -77,7 +77,7 @@ int util_aes_key(const char *key_file, bool create, unsigned char *aeskey) - goto out; - } - -- if (read(fd, aeskey, AES_256_CFB_KEY_LEN) != AES_256_CFB_KEY_LEN) { -+ if (util_read_nointr(fd, aeskey, AES_256_CFB_KEY_LEN) != AES_256_CFB_KEY_LEN) { - ERROR("read key file %s failed: %s", key_file, strerror(errno)); - ret = -1; - goto out; -diff --git a/src/utils/cutils/utils_file.c b/src/utils/cutils/utils_file.c -index cdd712a7..34c5b060 100644 ---- a/src/utils/cutils/utils_file.c -+++ b/src/utils/cutils/utils_file.c -@@ -998,7 +998,7 @@ int util_file2str(const char *filename, char *buf, size_t len) - if (fd == -1) { - return -1; - } -- num_read = (int)read(fd, buf, len - 1); -+ num_read = (int)util_read_nointr(fd, buf, len - 1); - if (num_read <= 0) { - num_read = -1; - } else { -diff --git a/src/utils/tar/util_archive.c b/src/utils/tar/util_archive.c -index 2d56d8a7..7ace2924 100644 ---- a/src/utils/tar/util_archive.c -+++ b/src/utils/tar/util_archive.c -@@ -662,7 +662,7 @@ child_out: - if (ret != 0) { - ERROR("Wait archive_untar_handler failed with error:%s", strerror(errno)); - fcntl(pipe_stderr[0], F_SETFL, O_NONBLOCK); -- if (read(pipe_stderr[0], errbuf, BUFSIZ) < 0) { -+ if (util_read_nointr(pipe_stderr[0], errbuf, BUFSIZ) < 0) { - ERROR("read error message from child failed"); - } - } -@@ -1057,7 +1057,7 @@ child_out: - if (ret != 0) { - ERROR("tar failed"); - fcntl(pipe_for_read[0], F_SETFL, O_NONBLOCK); -- if (read(pipe_for_read[0], errbuf, BUFSIZ) < 0) { -+ if (util_read_nointr(pipe_for_read[0], errbuf, BUFSIZ) < 0) { - ERROR("read error message from child failed"); - } - } -diff --git a/src/utils/tar/util_gzip.c b/src/utils/tar/util_gzip.c -index 5c34d719..2f4750be 100644 ---- a/src/utils/tar/util_gzip.c -+++ b/src/utils/tar/util_gzip.c -@@ -212,7 +212,7 @@ int gzip(const char *filename, size_t len) - return -1; - } - -- size_read = read(pipefd[0], buffer, BUFSIZ); -+ size_read = util_read_nointr(pipefd[0], buffer, BUFSIZ); - close(pipefd[0]); - - if (size_read) { --- -2.25.1 - diff --git a/0015-support-pull-image-with-digest.patch b/0015-support-pull-image-with-digest.patch deleted file mode 100644 index 5650701..0000000 --- a/0015-support-pull-image-with-digest.patch +++ /dev/null @@ -1,302 +0,0 @@ -From aaf8dec80eff5390404d7da66dbb229e44c76b12 Mon Sep 17 00:00:00 2001 -From: haozi007 -Date: Thu, 16 Feb 2023 18:22:02 +0800 -Subject: [PATCH 15/53] support pull image with digest - -usage: isula pull busybox@sha256:907ca53d7e2947e849b839b1cd258c98fd3916c60f2e6e70c30edbf741ab6754 - -Signed-off-by: haozi007 ---- - src/daemon/executor/image_cb/image_cb.c | 8 ++++ - src/daemon/modules/image/oci/oci_pull.c | 23 ++++++---- - .../modules/image/oci/registry/registry.c | 2 +- - .../oci/storage/image_store/image_store.c | 7 +++ - src/daemon/modules/image/oci/utils_images.c | 45 +++++++++++++++---- - src/daemon/modules/image/oci/utils_images.h | 2 + - src/utils/cutils/utils_verify.c | 25 ++++++++--- - src/utils/cutils/utils_verify.h | 3 ++ - 8 files changed, 91 insertions(+), 24 deletions(-) - -diff --git a/src/daemon/executor/image_cb/image_cb.c b/src/daemon/executor/image_cb/image_cb.c -index 06de7543..124feb21 100644 ---- a/src/daemon/executor/image_cb/image_cb.c -+++ b/src/daemon/executor/image_cb/image_cb.c -@@ -561,6 +561,14 @@ static int trans_one_image(image_list_images_response *response, size_t image_in - out_image->name = util_strdup_s(im_image->repo_tags[repo_index]); - } - -+ if (out_image->name == NULL && im_image->repo_digests != NULL && im_image->repo_digests_len > 0) { -+ // repo digest must valid, so just get lastest @ -+ char *pod = strrchr(im_image->repo_digests[0], '@'); -+ if (pod != NULL) { -+ out_image->name = util_sub_string(im_image->repo_digests[0], 0, (size_t)(pod - im_image->repo_digests[0])); -+ } -+ } -+ - out_image->target = util_common_calloc_s(sizeof(image_descriptor)); - if (out_image->target == NULL) { - ERROR("Out of memory"); -diff --git a/src/daemon/modules/image/oci/oci_pull.c b/src/daemon/modules/image/oci/oci_pull.c -index 5e774c9e..5b35ca2b 100644 ---- a/src/daemon/modules/image/oci/oci_pull.c -+++ b/src/daemon/modules/image/oci/oci_pull.c -@@ -117,10 +117,19 @@ static int pull_image(const im_pull_request *request, char **name) - options->skip_tls_verify = oci_image_data->insecure_skip_verify_enforce; - insecure_registries = oci_image_data->insecure_registries; - -+ // key of image which save in image-store -+ options->dest_image_name = oci_normalize_image_name(request->image); -+ -+ // add default tag if required -+ with_tag = oci_default_tag(request->image); -+ - host = oci_get_host(request->image); - if (host != NULL) { -- options->image_name = oci_default_tag(request->image); -- options->dest_image_name = oci_normalize_image_name(request->image); -+ // 1. image_name use for split host/tag/name -+ // 2. user for tag of log -+ options->image_name = with_tag; -+ with_tag = NULL; -+ - update_option_insecure_registry(options, insecure_registries, host); - ret = registry_pull(options); - if (ret != 0) { -@@ -141,13 +150,12 @@ static int pull_image(const im_pull_request *request, char **name) - } - host = oci_host_from_mirror(*mirror); - update_option_insecure_registry(options, insecure_registries, host); -- with_tag = oci_default_tag(request->image); -+ // add current mirror to image name -+ free(options->image_name); - options->image_name = oci_add_host(host, with_tag); -- free(with_tag); -- with_tag = NULL; - free(host); - host = NULL; -- options->dest_image_name = oci_normalize_image_name(request->image); -+ - ret = registry_pull(options); - if (ret != 0) { - continue; -@@ -159,10 +167,9 @@ static int pull_image(const im_pull_request *request, char **name) - *name = util_strdup_s(options->dest_image_name); - - out: -+ free(with_tag); - free(host); -- host = NULL; - free_registry_pull_options(options); -- options = NULL; - - return ret; - } -diff --git a/src/daemon/modules/image/oci/registry/registry.c b/src/daemon/modules/image/oci/registry/registry.c -index 143de6e4..62d0c35e 100644 ---- a/src/daemon/modules/image/oci/registry/registry.c -+++ b/src/daemon/modules/image/oci/registry/registry.c -@@ -1861,7 +1861,7 @@ static int prepare_pull_desc(pull_descriptor *desc, registry_pull_options *optio - } - - if (!util_valid_image_name(options->dest_image_name)) { -- ERROR("Invalid dest image name %s", options->image_name); -+ ERROR("Invalid dest image name %s", options->dest_image_name); - isulad_try_set_error_message("Invalid image name"); - return -1; - } -diff --git a/src/daemon/modules/image/oci/storage/image_store/image_store.c b/src/daemon/modules/image/oci/storage/image_store/image_store.c -index 39bda87d..cf1e88ff 100644 ---- a/src/daemon/modules/image/oci/storage/image_store/image_store.c -+++ b/src/daemon/modules/image/oci/storage/image_store/image_store.c -@@ -1979,6 +1979,7 @@ static int resort_image_names(const char **names, size_t names_len, char **first - MAX_IMAGE_NAME_LENGTH - MAX_IMAGE_DIGEST_LENGTH); - } - -+ // TODO: maybe should support other digest - if (prefix != NULL && strcmp(prefix, DIGEST_PREFIX) == 0) { - if (util_array_append(image_digests, names[i]) != 0) { - ERROR("Failed to append image to digest: %s", names[i]); -@@ -2172,6 +2173,7 @@ static int get_image_repo_digests(char ***old_repo_digests, char **image_tags, i - goto out; - } - -+ // get repo digest from images which with tag - if (pack_repo_digest(old_repo_digests, (const char **)image_tags, digest, repo_digests) != 0) { - ERROR("Failed to pack repo digest"); - ret = -1; -@@ -2194,12 +2196,17 @@ static int pack_image_tags_and_repo_digest(image_t *img, imagetool_image *info) - char *image_digest = NULL; - char **repo_digests = NULL; - -+ // get names from image-store names: -+ // 1. image names with tag; -+ // 2. image names with digests; -+ // 3. get first image name, current unused; - if (resort_image_names((const char **)img->simage->names, img->simage->names_len, &name, &tags, &digests) != 0) { - ERROR("Failed to resort image names"); - ret = -1; - goto out; - } - -+ // update repo digests from tags - if (get_image_repo_digests(&digests, tags, img, &image_digest, &repo_digests) != 0) { - ERROR("Failed to get image repo digests"); - ret = -1; -diff --git a/src/daemon/modules/image/oci/utils_images.c b/src/daemon/modules/image/oci/utils_images.c -index 9e7bb16f..ad7fe0f4 100644 ---- a/src/daemon/modules/image/oci/utils_images.c -+++ b/src/daemon/modules/image/oci/utils_images.c -@@ -42,6 +42,26 @@ - // nanos of 2038-01-19T03:14:07, the max valid linux time - #define MAX_NANOS 2147483647000000000 - -+char *oci_image_digest_pos(const char *name) -+{ -+ char *pos = NULL; -+ -+ if (name == NULL) { -+ return NULL; -+ } -+ -+ pos = strrchr(name, '@'); -+ if (pos == NULL) { -+ return NULL; -+ } -+ -+ if (util_reg_match(__DIGESTPattern, pos) != 0) { -+ return NULL; -+ } -+ -+ return pos; -+} -+ - char *get_last_part(char **parts) - { - char *last_part = NULL; -@@ -98,6 +118,7 @@ char *oci_default_tag(const char *name) - } - - last_part = get_last_part(parts); -+ // will pass image name with digest and with tag - if (last_part != NULL && strrchr(last_part, ':') == NULL) { - add_default_tag = DEFAULT_TAG; - } -@@ -181,9 +202,9 @@ char *oci_normalize_image_name(const char *name) - return result; - } - --int oci_split_image_name(const char *image_name, char **host, char **name, char **tag) -+int oci_split_image_name(const char *image_name, char **host, char **name, char **tag_digest) - { -- char *tag_pos = NULL; -+ char *tag_digest_pos = NULL; - char *name_pos = NULL; - char *tmp_image_name = NULL; - -@@ -193,18 +214,24 @@ int oci_split_image_name(const char *image_name, char **host, char **name, char - } - - tmp_image_name = util_strdup_s(image_name); -- tag_pos = util_tag_pos(tmp_image_name); -- if (tag_pos != NULL) { -- *tag_pos = 0; -- tag_pos++; -- if (tag != NULL) { -- *tag = util_strdup_s(tag_pos); -+ -+ // check digest first -+ tag_digest_pos = oci_image_digest_pos(tmp_image_name); -+ if (tag_digest_pos == NULL) { -+ tag_digest_pos = util_tag_pos(tmp_image_name); -+ } -+ -+ if (tag_digest_pos != NULL) { -+ *tag_digest_pos = '\0'; -+ tag_digest_pos++; -+ if (tag_digest != NULL) { -+ *tag_digest = util_strdup_s(tag_digest_pos); - } - } - - name_pos = strchr(tmp_image_name, '/'); - if (name_pos != NULL) { -- *name_pos = 0; -+ *name_pos = '\0'; - name_pos++; - if (name != NULL) { - *name = util_strdup_s(name_pos); -diff --git a/src/daemon/modules/image/oci/utils_images.h b/src/daemon/modules/image/oci/utils_images.h -index daa8c040..97879e41 100644 ---- a/src/daemon/modules/image/oci/utils_images.h -+++ b/src/daemon/modules/image/oci/utils_images.h -@@ -59,6 +59,8 @@ char *oci_get_isulad_tmpdir(const char *root_dir); - int makesure_isulad_tmpdir_perm_right(const char *root_dir); - char *get_hostname_to_strip(); - -+char *oci_image_digest_pos(const char *name); -+ - #ifdef __cplusplus - } - #endif -diff --git a/src/utils/cutils/utils_verify.c b/src/utils/cutils/utils_verify.c -index d39d8da5..5868e890 100644 ---- a/src/utils/cutils/utils_verify.c -+++ b/src/utils/cutils/utils_verify.c -@@ -359,7 +359,7 @@ cleanup: - bool util_valid_image_name(const char *name) - { - char *copy = NULL; -- char *tag_pos = NULL; -+ char *check_pos = NULL; - bool bret = false; - - if (name == NULL) { -@@ -372,13 +372,26 @@ bool util_valid_image_name(const char *name) - } - - copy = util_strdup_s(name); -- tag_pos = util_tag_pos(copy); -- if (tag_pos != NULL) { -- if (util_reg_match(__TagPattern, tag_pos)) { -+ -+ // 1. first, check digest or not -+ check_pos = strrchr(copy, '@'); -+ if (check_pos != NULL) { -+ // image name with digest -+ if (util_reg_match(__DIGESTPattern, check_pos)) { - goto cleanup; - } -- -- *tag_pos = '\0'; -+ *check_pos = '\0'; -+ } else { -+ // image name without digest -+ // 2. check tag or not -+ check_pos = util_tag_pos(copy); -+ if (check_pos != NULL) { -+ if (util_reg_match(__TagPattern, check_pos)) { -+ goto cleanup; -+ } -+ -+ *check_pos = '\0'; -+ } - } - - if (util_reg_match(__NamePattern, copy)) { -diff --git a/src/utils/cutils/utils_verify.h b/src/utils/cutils/utils_verify.h -index a885250f..ad4466ef 100644 ---- a/src/utils/cutils/utils_verify.h -+++ b/src/utils/cutils/utils_verify.h -@@ -33,6 +33,9 @@ extern "C" { - "^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9-]*[a-zA-Z0-9])" \ - "((\\.([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9-]*[a-zA-Z0-9]))+)?(:[0-9]+)?/)?[a-z0-9]" \ - "+((([._]|__|[-]*)[a-z0-9]+)+)?((/[a-z0-9]+((([._]|__|[-]*)[a-z0-9]+)+)?)+)?$" -+ -+#define __DIGESTPattern "@[a-z0-9]+:[a-z0-9]{32,}" -+ - #define VALID_VOLUME_NAME "[a-zA-Z0-9][a-zA-Z0-9_.-]{1,63}" - - extern const char *g_all_caps[]; --- -2.25.1 - diff --git a/0016-isulad-shim-support-execSync-with-timeout.patch b/0016-isulad-shim-support-execSync-with-timeout.patch deleted file mode 100644 index a4e8c98..0000000 --- a/0016-isulad-shim-support-execSync-with-timeout.patch +++ /dev/null @@ -1,186 +0,0 @@ -From 32dbf764fd5b7f6941c49750b49dbba253bd3234 Mon Sep 17 00:00:00 2001 -From: zhongtao -Date: Mon, 13 Feb 2023 15:36:58 +0800 -Subject: [PATCH 16/53] isulad-shim support execSync with timeout - -Signed-off-by: zhongtao ---- - .../executor/container_cb/execution_stream.c | 2 +- - .../modules/runtime/isula/isula_rt_ops.c | 37 +++++++++++++++--- - src/utils/cutils/utils.c | 39 +++++++++++++++++++ - src/utils/cutils/utils.h | 5 +++ - 4 files changed, 77 insertions(+), 6 deletions(-) - -diff --git a/src/daemon/executor/container_cb/execution_stream.c b/src/daemon/executor/container_cb/execution_stream.c -index fde0335e..1a7353b5 100644 ---- a/src/daemon/executor/container_cb/execution_stream.c -+++ b/src/daemon/executor/container_cb/execution_stream.c -@@ -161,7 +161,7 @@ static int container_exec_cb(const container_exec_request *request, container_ex - - if (exec_container(cont, request, *response, stdinfd, stdout_handler, stderr_handler) != 0) { - ret = -1; -- goto out; -+ goto pack_err_response; - } - - goto out; -diff --git a/src/daemon/modules/runtime/isula/isula_rt_ops.c b/src/daemon/modules/runtime/isula/isula_rt_ops.c -index 5463bb1b..6f2b4f7d 100644 ---- a/src/daemon/modules/runtime/isula/isula_rt_ops.c -+++ b/src/daemon/modules/runtime/isula/isula_rt_ops.c -@@ -205,6 +205,10 @@ static void show_shim_runtime_errlog(const char *workdir) - char buf1[SHIM_LOG_SIZE] = { 0 }; - char buf2[SHIM_LOG_SIZE] = { 0 }; - -+ if (g_isulad_errmsg != NULL) { -+ return; -+ } -+ - get_err_message(buf1, sizeof(buf1), workdir, "shim-log.json"); - get_err_message(buf2, sizeof(buf2), workdir, "log.json"); - ERROR("shim-log: %s", buf1); -@@ -686,8 +690,29 @@ static int status_to_exit_code(int status) - return exit_code; - } - -+static int try_wait_pid(pid_t pid) -+{ -+ if (waitpid(pid, NULL, WNOHANG) == pid) { -+ return 0; -+ } -+ -+ return 1; -+} -+ -+static void kill_and_show_err(pid_t pid) -+{ -+ int nret = 0; -+ kill(pid, SIGKILL); -+ // wait atmost 0.5 seconds -+ DO_RETRY_CALL(5, 100000, nret, try_wait_pid, pid); -+ if (nret != 0) { -+ WARN("Fail to wait isulad-shim"); -+ } -+ isulad_set_error_message("Exec container error;exec timeout"); -+} -+ - static int shim_create(bool fg, const char *id, const char *workdir, const char *bundle, const char *runtime_cmd, -- int *exit_code) -+ int *exit_code, const int64_t timeout) - { - pid_t pid = 0; - int exec_fd[2] = { -1, -1 }; -@@ -778,7 +803,7 @@ realexec: - goto out; - } - -- status = util_wait_for_pid_status(pid); -+ status = util_waitpid_with_timeout(pid, timeout, kill_and_show_err); - if (status < 0) { - ERROR("failed wait shim-parent %d exit %s", pid, strerror(errno)); - ret = -1; -@@ -792,7 +817,9 @@ realexec: - out: - if (ret != 0) { - show_shim_runtime_errlog(workdir); -- kill(pid, SIGKILL); /* can kill other process? */ -+ if (timeout <= 0) { -+ kill(pid, SIGKILL); /* can kill other process? */ -+ } - } - - return ret; -@@ -901,7 +928,7 @@ int rt_isula_create(const char *id, const char *runtime, const rt_create_params_ - } - - get_runtime_cmd(runtime, &cmd); -- ret = shim_create(false, id, workdir, params->bundle, cmd, NULL); -+ ret = shim_create(false, id, workdir, params->bundle, cmd, NULL, -1); - if (ret != 0) { - runtime_call_delete_force(workdir, runtime, id); - ERROR("%s: failed create shim process", id); -@@ -1173,7 +1200,7 @@ int rt_isula_exec(const char *id, const char *runtime, const rt_exec_params_t *p - } - - get_runtime_cmd(runtime, &cmd); -- ret = shim_create(fg_exec(params), id, workdir, bundle, cmd, exit_code); -+ ret = shim_create(fg_exec(params), id, workdir, bundle, cmd, exit_code, params->timeout); - if (ret != 0) { - ERROR("%s: failed create shim process for exec %s", id, exec_id); - goto errlog_out; -diff --git a/src/utils/cutils/utils.c b/src/utils/cutils/utils.c -index f99b28e4..2c4c01e4 100644 ---- a/src/utils/cutils/utils.c -+++ b/src/utils/cutils/utils.c -@@ -311,6 +311,45 @@ rep: - return 0; - } - -+/* -+ * If timeout <= 0, blocking wait pid. -+ * If timeout > 0, non-blocking wait pid with timeout. -+ * When waitpid timeout, calling handle_timeout_callback_t. -+ */ -+int util_waitpid_with_timeout(pid_t pid, const int64_t timeout, handle_timeout_callback_t cb) -+{ -+ int nret = 0; -+ time_t start_time = time(NULL); -+ time_t end_time; -+ double interval; -+ -+ if (timeout <= 0) { -+ return util_wait_for_pid_status(pid); -+ } -+ -+ for (;;) { -+ nret = waitpid(pid, NULL, WNOHANG); -+ if (nret == pid) { -+ break; -+ } -+ if (nret == -1 && errno != EINTR) { -+ return -1; -+ } -+ end_time = time(NULL); -+ interval = difftime(end_time, start_time); -+ if (nret == 0 && interval >= timeout) { -+ INFO("Wait %d timeout", pid); -+ if (cb != NULL) { -+ cb(pid); -+ } -+ return -1; -+ } -+ // sleep some time instead to avoid cpu full running and then retry. -+ sleep(0.1); -+ } -+ return 0; -+} -+ - int util_wait_for_pid_status(pid_t pid) - { - int st; -diff --git a/src/utils/cutils/utils.h b/src/utils/cutils/utils.h -index 6261dc05..01107605 100644 ---- a/src/utils/cutils/utils.h -+++ b/src/utils/cutils/utils.h -@@ -302,6 +302,9 @@ typedef struct _proc_t { - processor; /* current (or most recent?) CPU */ - } proc_t; - -+// handle waitpid timeout. -+typedef void(*handle_timeout_callback_t)(pid_t pid); -+ - struct signame { - int num; - const char *name; -@@ -329,6 +332,8 @@ char *util_strdup_s(const char *src); - - int util_wait_for_pid(pid_t pid); - -+int util_waitpid_with_timeout(pid_t pid, const int64_t timeout, handle_timeout_callback_t cb); -+ - void util_contain_errmsg(const char *errmsg, int *exit_code); - - char *util_short_digest(const char *digest); --- -2.25.1 - diff --git a/0017-Refine-the-commit-info.patch b/0017-Refine-the-commit-info.patch deleted file mode 100644 index 2b46810..0000000 --- a/0017-Refine-the-commit-info.patch +++ /dev/null @@ -1,30 +0,0 @@ -From a1c06194fea99d1011551fd84b1fb1f28b974170 Mon Sep 17 00:00:00 2001 -From: sailorvii -Date: Tue, 21 Feb 2023 02:40:50 +0000 -Subject: [PATCH 17/53] Refine the commit info. - ---- - docs/design/detailed/Network/native_network_design_zh.md | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/docs/design/detailed/Network/native_network_design_zh.md b/docs/design/detailed/Network/native_network_design_zh.md -index 0ca0f850..27c10c3e 100644 ---- a/docs/design/detailed/Network/native_network_design_zh.md -+++ b/docs/design/detailed/Network/native_network_design_zh.md -@@ -299,10 +299,10 @@ cache:::unFinish - - ## 4.2 adaptor模块 - --1. 查看 CRI adapter 模块的设计文档: [CRI_adapter_design](./cni_operator_design_zh.md) 。 -+1. 查看 CRI adapter 模块的设计文档: [CRI_adapter_design](./CRI_adapter_design_zh.md) 。 - - 2. 查看 native network adapter 模块的设计文档: [native_network_adapter_design](./native_network_adapter_design_zh.md) 。 - - ## 4.3 cni-operator模块 - --- 查看 cni operator 模块的设计文档: [cni_operator_design](./cni_operator_design_zh.md) 。 -\ No newline at end of file -+- 查看 cni operator 模块的设计文档: [cni_operator_design](./cni_operator_design_zh.md) 。 --- -2.25.1 - diff --git a/0018-Refine-typo-of-word-container.patch b/0018-Refine-typo-of-word-container.patch deleted file mode 100644 index 34f8397..0000000 --- a/0018-Refine-typo-of-word-container.patch +++ /dev/null @@ -1,85 +0,0 @@ -From 53ec87b8c5224b1069bef50d09403c53fb48640f Mon Sep 17 00:00:00 2001 -From: sailorvii -Date: Tue, 21 Feb 2023 06:50:21 +0000 -Subject: [PATCH 18/53] Refine typo of word "container". - ---- - src/daemon/executor/container_cb/execution_create.c | 2 +- - src/daemon/modules/api/container_api.h | 2 +- - src/daemon/modules/container/container_unix.c | 2 +- - src/daemon/modules/service/service_network.c | 6 +++--- - 4 files changed, 6 insertions(+), 6 deletions(-) - -diff --git a/src/daemon/executor/container_cb/execution_create.c b/src/daemon/executor/container_cb/execution_create.c -index 4abc89c7..e8f74f1b 100644 ---- a/src/daemon/executor/container_cb/execution_create.c -+++ b/src/daemon/executor/container_cb/execution_create.c -@@ -1481,7 +1481,7 @@ int container_create_cb(const container_create_request *request, container_creat - goto umount_channel; - } - -- if (container_v2_spec_merge_contaner_spec(v2_spec) != 0) { -+ if (container_v2_spec_merge_container_spec(v2_spec) != 0) { - ERROR("Failed to merge container settings"); - cc = ISULAD_ERR_EXEC; - goto umount_channel; -diff --git a/src/daemon/modules/api/container_api.h b/src/daemon/modules/api/container_api.h -index 270d6da6..1511db78 100644 ---- a/src/daemon/modules/api/container_api.h -+++ b/src/daemon/modules/api/container_api.h -@@ -175,7 +175,7 @@ void container_unlock(container_t *cont); - - char *container_get_env_nolock(const container_t *cont, const char *key); - --int container_v2_spec_merge_contaner_spec(container_config_v2_common_config *v2_spec); -+int container_v2_spec_merge_container_spec(container_config_v2_common_config *v2_spec); - - char *container_get_command(const container_t *cont); - -diff --git a/src/daemon/modules/container/container_unix.c b/src/daemon/modules/container/container_unix.c -index adc11be7..1a252b92 100644 ---- a/src/daemon/modules/container/container_unix.c -+++ b/src/daemon/modules/container/container_unix.c -@@ -470,7 +470,7 @@ out: - } - - /* container merge basic v2 spec info */ --int container_v2_spec_merge_contaner_spec(container_config_v2_common_config *v2_spec) -+int container_v2_spec_merge_container_spec(container_config_v2_common_config *v2_spec) - { - int ret = 0; - int i = 0; -diff --git a/src/daemon/modules/service/service_network.c b/src/daemon/modules/service/service_network.c -index 2e7fa28c..2d5f2f6e 100644 ---- a/src/daemon/modules/service/service_network.c -+++ b/src/daemon/modules/service/service_network.c -@@ -569,7 +569,7 @@ err_out: - return NULL; - } - --static container_network_settings *dup_contaner_network_settings(const container_network_settings *settings) -+static container_network_settings *dup_container_network_settings(const container_network_settings *settings) - { - char *jstr = NULL; - container_network_settings *res = NULL; -@@ -1278,7 +1278,7 @@ static int update_container_network_settings(container_t *cont, const cni_anno_p - bool to_disk = false; - container_network_settings *backup = NULL; - -- backup = dup_contaner_network_settings(cont->network_settings); -+ backup = dup_container_network_settings(cont->network_settings); - if (backup == NULL) { - ERROR("Failed to dup container network settings"); - return -1; -@@ -1509,7 +1509,7 @@ static int drop_container_network_settings(container_t *cont) - return -1; - } - -- backup = dup_contaner_network_settings(cont->network_settings); -+ backup = dup_container_network_settings(cont->network_settings); - if (backup == NULL) { - ERROR("Failed to dup container network settings"); - return -1; --- -2.25.1 - diff --git a/0019-cleancode-for-read-write.patch b/0019-cleancode-for-read-write.patch deleted file mode 100644 index 3fb9e1a..0000000 --- a/0019-cleancode-for-read-write.patch +++ /dev/null @@ -1,54 +0,0 @@ -From f9224d47ddc4193678f7ffe501be144fedff0102 Mon Sep 17 00:00:00 2001 -From: zhangxiaoyu -Date: Mon, 20 Feb 2023 17:28:33 +0800 -Subject: [PATCH 19/53] cleancode for read/write - -Signed-off-by: zhangxiaoyu ---- - src/cmd/isulad-shim/process.c | 2 +- - src/cmd/isulad/main.c | 2 +- - src/daemon/entry/connect/grpc/grpc_containers_service.cc | 2 +- - 3 files changed, 3 insertions(+), 3 deletions(-) - -diff --git a/src/cmd/isulad-shim/process.c b/src/cmd/isulad-shim/process.c -index 02ce3c85..8a0aa142 100644 ---- a/src/cmd/isulad-shim/process.c -+++ b/src/cmd/isulad-shim/process.c -@@ -283,7 +283,7 @@ static void *do_io_copy(void *data) - break; - } - -- int r_count = util_read_nointr(ioc->fd_from, buf, DEFAULT_IO_COPY_BUF); -+ int r_count = read(ioc->fd_from, buf, DEFAULT_IO_COPY_BUF); - if (r_count == -1) { - if (errno == EAGAIN || errno == EINTR) { - continue; -diff --git a/src/cmd/isulad/main.c b/src/cmd/isulad/main.c -index a75fb189..0cdbfb53 100644 ---- a/src/cmd/isulad/main.c -+++ b/src/cmd/isulad/main.c -@@ -483,7 +483,7 @@ int check_and_save_pid(const char *fn) - } - - len = util_write_nointr(fd, pidbuf, strlen(pidbuf)); -- if (len < 0 || len != strlen(pidbuf)) { -+ if (len < 0 || (size_t)len != strlen(pidbuf)) { - ERROR("Failed to write pid to file:%s: %s", fn, strerror(errno)); - ret = -1; - } -diff --git a/src/daemon/entry/connect/grpc/grpc_containers_service.cc b/src/daemon/entry/connect/grpc/grpc_containers_service.cc -index eb79223b..7340c3ed 100644 ---- a/src/daemon/entry/connect/grpc/grpc_containers_service.cc -+++ b/src/daemon/entry/connect/grpc/grpc_containers_service.cc -@@ -409,7 +409,7 @@ public: - for (int i = 0; i < request.cmd_size(); i++) { - std::string command = request.cmd(i); - int nret = util_write_nointr_in_total(m_read_pipe_fd, command.c_str(), command.length()); -- if (nret < 0 || (size_t)nret != command.length()) { -+ if (nret < 0 || (size_t)nret != command.length()) { - ERROR("sub write over!"); - return; - } --- -2.25.1 - diff --git a/0020-add-crictl-timeout-and-sync-for-CI.patch b/0020-add-crictl-timeout-and-sync-for-CI.patch deleted file mode 100644 index dbab1fd..0000000 --- a/0020-add-crictl-timeout-and-sync-for-CI.patch +++ /dev/null @@ -1,127 +0,0 @@ -From 7941e0fcd8d7b8edb303a1661233fd9688c46819 Mon Sep 17 00:00:00 2001 -From: zhangxiaoyu -Date: Mon, 20 Feb 2023 15:42:40 +0800 -Subject: [PATCH 20/53] add crictl timeout and sync for CI - -Signed-off-by: zhangxiaoyu ---- - CI/test_cases/container_cases/bigdata_stream.sh | 7 +++++++ - CI/test_cases/container_cases/bigdata_stream_runc.sh | 4 ++++ - CI/test_cases/helpers.sh | 5 ++++- - 3 files changed, 15 insertions(+), 1 deletion(-) - -diff --git a/CI/test_cases/container_cases/bigdata_stream.sh b/CI/test_cases/container_cases/bigdata_stream.sh -index 7e74d700..3bfc2d50 100755 ---- a/CI/test_cases/container_cases/bigdata_stream.sh -+++ b/CI/test_cases/container_cases/bigdata_stream.sh -@@ -124,6 +124,7 @@ function test_concurrent_bigdata_stream() - pids[${#pids[@]}]=$! - done - wait ${pids[*]// /|} -+ sync && sync - - for index in $(seq 1 5); do - ls -l /home/iocopy_stream_data_500M_$index -@@ -151,6 +152,7 @@ function test_concurrent_bigdata_stream_without_pty() - pids[${#pids[@]}]=$! - done - wait ${pids[*]// /|} -+ sync && sync - - for index in $(seq 1 5); do - ls -l /home/iocopy_stream_data_500M_$index -@@ -209,6 +211,7 @@ function test_stream_with_stop_client() - kill -18 $pid - - wait $pid -+ sync && sync - - ls -l /home/iocopy_stream_data_500M - total_size=$(stat -c"%s" /home/iocopy_stream_data_500M) -@@ -254,6 +257,7 @@ function test_stream_with_stop_attach() - kill -18 $pid - - wait $exec_pid -+ sync && sync - - ls -l /home/iocopy_stream_data_500M - total_size=$(stat -c"%s" /home/iocopy_stream_data_500M) -@@ -299,6 +303,7 @@ function test_stream_with_stop_lxc_monitor() - kill -18 $pid - - wait $exec_pid -+ sync && sync - - ls -l /home/iocopy_stream_data_500M - total_size=$(stat -c"%s" /home/iocopy_stream_data_500M) -@@ -347,6 +352,7 @@ function test_stream_with_stop_isulad() - kill -18 $(cat /var/run/isulad.pid) - - wait $pid -+ sync && sync - - ls -l /home/iocopy_stream_data_500M - total_size=$(stat -c"%s" /home/iocopy_stream_data_500M) -@@ -397,6 +403,7 @@ function test_stream_with_runc() - isula exec -it $RUNCID cat test_500M > /home/iocopy_stream_data_500M - [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to cat bigdata" && ((ret++)) - -+ sync && sync - total_size=$(stat -c"%s" /home/iocopy_stream_data_500M) - [[ $total_size -ne 524288000 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - stream iocopy loss data" && ((ret++)) - -diff --git a/CI/test_cases/container_cases/bigdata_stream_runc.sh b/CI/test_cases/container_cases/bigdata_stream_runc.sh -index 6933bef0..3a384cd8 100755 ---- a/CI/test_cases/container_cases/bigdata_stream_runc.sh -+++ b/CI/test_cases/container_cases/bigdata_stream_runc.sh -@@ -117,6 +117,7 @@ function test_cat_bigdata() - pids[${#pids[@]}]=$! - done - wait ${pids[*]// /|} -+ sync && sync - - for index in $(seq 1 5); do - ls -l /home/iocopy_stream_data_500M_$index -@@ -144,6 +145,7 @@ function test_cat_bigdata_without_pty() - pids[${#pids[@]}]=$! - done - wait ${pids[*]// /|} -+ sync && sync - - for index in $(seq 1 5); do - ls -l /home/iocopy_stream_data_500M_$index -@@ -173,6 +175,7 @@ function test_stream_with_stop_client() - kill -18 $pid - - wait $pid -+ sync && sync - - ls -l /home/iocopy_stream_data_500M - total_size=$(stat -c"%s" /home/iocopy_stream_data_500M) -@@ -217,6 +220,7 @@ function test_stream_with_stop_isulad() - kill -18 $(cat /var/run/isulad.pid) - - wait $pid -+ sync && sync - - ls -l /home/iocopy_stream_data_500M - total_size=$(stat -c"%s" /home/iocopy_stream_data_500M) -diff --git a/CI/test_cases/helpers.sh b/CI/test_cases/helpers.sh -index bba4e7e3..5ea4ff94 100755 ---- a/CI/test_cases/helpers.sh -+++ b/CI/test_cases/helpers.sh -@@ -69,7 +69,10 @@ function testcontainer() { - - function crictl() { - CRICTL=$(which crictl) -- "$CRICTL" -i unix:///var/run/isulad.sock -r unix:///var/run/isulad.sock "$@" -+ # Default timeout is 2s. -+ # In some high IO testcase, isulad handle CRI request time maybe more than 2s. -+ # And the crictl will print error message "context deadline exceeded" -+ "$CRICTL" -i unix:///var/run/isulad.sock -r unix:///var/run/isulad.sock --timeout 5s "$@" - } - - function msg_ok() --- -2.25.1 - diff --git a/0021-unlock-m_podsLock-if-new-failed.patch b/0021-unlock-m_podsLock-if-new-failed.patch deleted file mode 100644 index c0dc084..0000000 --- a/0021-unlock-m_podsLock-if-new-failed.patch +++ /dev/null @@ -1,27 +0,0 @@ -From f6243bb672bca8fd2e32752480aa92dc8f97adc9 Mon Sep 17 00:00:00 2001 -From: zhangxiaoyu -Date: Wed, 22 Feb 2023 10:43:52 +0800 -Subject: [PATCH 21/53] unlock m_podsLock if new failed - -Signed-off-by: zhangxiaoyu ---- - src/daemon/entry/cri/network_plugin.cc | 3 +++ - 1 file changed, 3 insertions(+) - -diff --git a/src/daemon/entry/cri/network_plugin.cc b/src/daemon/entry/cri/network_plugin.cc -index f6a155c3..4a119d6b 100644 ---- a/src/daemon/entry/cri/network_plugin.cc -+++ b/src/daemon/entry/cri/network_plugin.cc -@@ -345,6 +345,9 @@ void PluginManager::Lock(const std::string &fullPodName, Errors &error) - auto tmpLock = std::unique_ptr(new (std::nothrow) PodLock()); - if (tmpLock == nullptr) { - error.SetError("Out of memory"); -+ if (pthread_mutex_unlock(&m_podsLock) != 0) { -+ error.SetError("plugin manager unlock failed"); -+ } - return; - } - lock = tmpLock.get(); --- -2.25.1 - diff --git a/0022-Update-CRI.patch b/0022-Update-CRI.patch deleted file mode 100644 index 713338e..0000000 --- a/0022-Update-CRI.patch +++ /dev/null @@ -1,73 +0,0 @@ -From 65c3b3c803128f92113f9f21bf41da1ad56017c8 Mon Sep 17 00:00:00 2001 -From: shijiaqi1 -Date: Wed, 8 Feb 2023 13:31:36 +0800 -Subject: [PATCH 22/53] Update-CRI - ---- - .../cri/cri_container_manager_service.cc | 19 +++++++++++++++++++ - src/daemon/entry/cri/cri_helpers.cc | 19 +++++++++++++++++++ - 2 files changed, 38 insertions(+) - -diff --git a/src/daemon/entry/cri/cri_container_manager_service.cc b/src/daemon/entry/cri/cri_container_manager_service.cc -index 710556a3..b02367c8 100644 ---- a/src/daemon/entry/cri/cri_container_manager_service.cc -+++ b/src/daemon/entry/cri/cri_container_manager_service.cc -@@ -1179,6 +1179,25 @@ void ContainerManagerService::UpdateContainerResources(const std::string &contai - if (!resources.cpuset_mems().empty()) { - hostconfig->cpuset_mems = util_strdup_s(resources.cpuset_mems().c_str()); - } -+ if (resources.hugepage_limits_size() != 0) { -+ hostconfig->hugetlbs = (host_config_hugetlbs_element **)util_smart_calloc_s( -+ sizeof(host_config_hugetlbs_element *), resources.hugepage_limits_size()); -+ if (hostconfig->hugetlbs == nullptr) { -+ error.SetError("Out of memory"); -+ return; -+ } -+ for (int i = 0; i < resources.hugepage_limits_size(); i++) { -+ hostconfig->hugetlbs[i] = -+ (host_config_hugetlbs_element *)util_common_calloc_s(sizeof(host_config_hugetlbs_element)); -+ if (hostconfig->hugetlbs[i] == nullptr) { -+ error.SetError("Out of memory"); -+ goto cleanup; -+ } -+ hostconfig->hugetlbs[i]->page_size = util_strdup_s(resources.hugepage_limits(i).page_size().c_str()); -+ hostconfig->hugetlbs[i]->limit = resources.hugepage_limits(i).limit(); -+ hostconfig->hugetlbs_len++; -+ } -+ } - - request->host_config = host_config_generate_json(hostconfig, &ctx, &perror); - if (request->host_config == nullptr) { -diff --git a/src/daemon/entry/cri/cri_helpers.cc b/src/daemon/entry/cri/cri_helpers.cc -index 2f6dcf78..6d59ec11 100644 ---- a/src/daemon/entry/cri/cri_helpers.cc -+++ b/src/daemon/entry/cri/cri_helpers.cc -@@ -461,6 +461,25 @@ void UpdateCreateConfig(container_config *createConfig, host_config *hc, - } - } - hc->unified = unified; -+ if (rOpts.hugepage_limits_size() != 0) { -+ hc->hugetlbs = (host_config_hugetlbs_element **)util_smart_calloc_s(sizeof(host_config_hugetlbs_element *), -+ rOpts.hugepage_limits_size()); -+ if (hc->hugetlbs == nullptr) { -+ error.SetError("Out of memory"); -+ return; -+ } -+ for (int i = 0; i < rOpts.hugepage_limits_size(); i++) { -+ hc->hugetlbs[i] = -+ (host_config_hugetlbs_element *)util_common_calloc_s(sizeof(host_config_hugetlbs_element)); -+ if (hc->hugetlbs[i] == nullptr) { -+ error.SetError("Out of memory"); -+ return; -+ } -+ hc->hugetlbs[i]->page_size = util_strdup_s(rOpts.hugepage_limits(i).page_size().c_str()); -+ hc->hugetlbs[i]->limit = rOpts.hugepage_limits(i).limit(); -+ hc->hugetlbs_len++; -+ } -+ } - } - createConfig->open_stdin = config.stdin(); - createConfig->tty = config.tty(); --- -2.25.1 - diff --git a/0023-add-cgroup-cpu-ut.patch b/0023-add-cgroup-cpu-ut.patch deleted file mode 100644 index 9cafd62..0000000 --- a/0023-add-cgroup-cpu-ut.patch +++ /dev/null @@ -1,70 +0,0 @@ -From dd238f80fd754b135c7b0e6a6535d45cf57c0b82 Mon Sep 17 00:00:00 2001 -From: songbuhuang <544824346@qq.com> -Date: Wed, 22 Feb 2023 16:46:45 +0800 -Subject: [PATCH 23/53] add cgroup cpu ut - -Signed-off-by: songbuhuang <544824346@qq.com> ---- - test/cgroup/cpu/CMakeLists.txt | 2 ++ - test/cgroup/cpu/cgroup_cpu_ut.cc | 21 +++++++++++++++++++++ - 2 files changed, 23 insertions(+) - -diff --git a/test/cgroup/cpu/CMakeLists.txt b/test/cgroup/cpu/CMakeLists.txt -index 6a8af719..b619fb59 100644 ---- a/test/cgroup/cpu/CMakeLists.txt -+++ b/test/cgroup/cpu/CMakeLists.txt -@@ -22,8 +22,10 @@ target_include_directories(${EXE} PUBLIC - ${CMAKE_CURRENT_SOURCE_DIR}/../../../src/config - ${CMAKE_CURRENT_SOURCE_DIR}/../../../src/cmd - ${CMAKE_CURRENT_SOURCE_DIR}/../../../src/cmd/isulad -+ ${CMAKE_CURRENT_SOURCE_DIR}/../../mocks - ) - -+set_target_properties(${EXE} PROPERTIES LINK_FLAGS "-Wl,--wrap,util_common_calloc_s") - target_link_libraries(${EXE} ${GTEST_BOTH_LIBRARIES} ${GMOCK_LIBRARY} ${GMOCK_MAIN_LIBRARY} ${CMAKE_THREAD_LIBS_INIT} ${ISULA_LIBUTILS_LIBRARY} libutils_ut -lgrpc++ -lprotobuf -lcrypto -lyajl -lz) - add_test(NAME ${EXE} COMMAND ${EXE} --gtest_output=xml:${EXE}-Results.xml) - set_tests_properties(${EXE} PROPERTIES TIMEOUT 120) -diff --git a/test/cgroup/cpu/cgroup_cpu_ut.cc b/test/cgroup/cpu/cgroup_cpu_ut.cc -index 032ad656..7d23d014 100644 ---- a/test/cgroup/cpu/cgroup_cpu_ut.cc -+++ b/test/cgroup/cpu/cgroup_cpu_ut.cc -@@ -16,10 +16,18 @@ - #include - #include - #include -+#include - #include "daemon_arguments.h" - #include "isulad_config.h" -+#include "mock.h" -+#include "sysinfo.h" - #include "utils.h" - -+extern "C" { -+ DECLARE_WRAPPER(util_common_calloc_s, void *, (size_t size)); -+ DEFINE_WRAPPER(util_common_calloc_s, void *, (size_t size), (size)); -+} -+ - struct service_arguments *new_args(int64_t cpu_rt_period, int64_t cpu_rt_runtime) - { - struct service_arguments *args = (struct service_arguments *)util_common_calloc_s(sizeof(struct service_arguments)); -@@ -57,4 +65,17 @@ TEST(CgroupCpuUnitTest, test_conf_get_cgroup_cpu_rt) - ASSERT_EQ(cpu_rt_runtime, 0); - } - -+TEST(CgroupCpuUnitTest, test_find_cgroup_mountpoint_and_root) -+{ -+ char *mnt = NULL; -+ char *root = NULL; -+ ASSERT_EQ(find_cgroup_mountpoint_and_root(nullptr, &mnt, &root), -1); -+} - -+TEST(CgroupCpuUnitTest, test_sysinfo_cgroup_controller_cpurt_mnt_path) -+{ -+ MOCK_SET(util_common_calloc_s, nullptr); -+ ASSERT_EQ(get_sys_info(true), nullptr); -+ ASSERT_EQ(sysinfo_cgroup_controller_cpurt_mnt_path(), nullptr); -+ MOCK_CLEAR(util_common_calloc_s); -+} --- -2.25.1 - diff --git a/0024-remove-temp-variables.patch b/0024-remove-temp-variables.patch deleted file mode 100644 index 3faeba9..0000000 --- a/0024-remove-temp-variables.patch +++ /dev/null @@ -1,179 +0,0 @@ -From e20767fc709bb945eb8e076a57f07d5b70b5f3ab Mon Sep 17 00:00:00 2001 -From: "ilya.kuksenok" -Date: Wed, 22 Feb 2023 16:17:34 +0300 -Subject: [PATCH 24/53] remove temp variables - ---- - src/api/services/containers/container.proto | 5 +++++ - .../connect/grpc/grpc_containers_client.cc | 5 +++++ - src/client/connect/protocol_type.h | 5 +++++ - .../connect/rest/rest_containers_client.c | 5 +++++ - .../connect/grpc/container/stats_service.cc | 6 ++++++ - .../entry/cri/cri_container_manager_service.cc | 18 ++++++++++++++++-- - .../executor/container_cb/execution_extend.c | 5 +++++ - src/daemon/modules/api/runtime_api.h | 5 +++++ - .../modules/runtime/engines/lcr/lcr_engine.c | 6 ++++++ - 9 files changed, 58 insertions(+), 2 deletions(-) - -diff --git a/src/api/services/containers/container.proto b/src/api/services/containers/container.proto -index 13d1367b..230d18b3 100644 ---- a/src/api/services/containers/container.proto -+++ b/src/api/services/containers/container.proto -@@ -86,6 +86,11 @@ message Container_info { - uint64 cache = 16; - uint64 cache_total = 17; - uint64 inactive_file_total = 18; -+ uint64 avaliable_bytes = 19; -+ uint64 usage_bytes = 20; -+ uint64 rss_bytes = 21; -+ uint64 page_faults = 22; -+ uint64 major_page_faults = 23; - } - - message Event { -diff --git a/src/client/connect/grpc/grpc_containers_client.cc b/src/client/connect/grpc/grpc_containers_client.cc -index 1528b2ee..20766049 100644 ---- a/src/client/connect/grpc/grpc_containers_client.cc -+++ b/src/client/connect/grpc/grpc_containers_client.cc -@@ -1690,6 +1690,11 @@ public: - response->container_stats[i].blkio_read = gresponse->containers(i).blkio_read(); - response->container_stats[i].blkio_write = gresponse->containers(i).blkio_write(); - response->container_stats[i].mem_used = gresponse->containers(i).mem_used(); -+ response->container_stats[i].avaliable_bytes = gresponse->containers(i).avaliable_bytes(); -+ response->container_stats[i].usage_bytes = gresponse->containers(i).usage_bytes(); -+ response->container_stats[i].rss_bytes = gresponse->containers(i).rss_bytes(); -+ response->container_stats[i].page_faults = gresponse->containers(i).page_faults(); -+ response->container_stats[i].major_page_faults = gresponse->containers(i).major_page_faults(); - response->container_stats[i].mem_limit = gresponse->containers(i).mem_limit(); - response->container_stats[i].kmem_used = gresponse->containers(i).kmem_used(); - response->container_stats[i].kmem_limit = gresponse->containers(i).kmem_limit(); -diff --git a/src/client/connect/protocol_type.h b/src/client/connect/protocol_type.h -index 3831c7c0..a2d474a6 100644 ---- a/src/client/connect/protocol_type.h -+++ b/src/client/connect/protocol_type.h -@@ -165,6 +165,11 @@ struct isula_container_info { - // Memory usage - uint64_t mem_used; - uint64_t mem_limit; -+ uint64_t avaliable_bytes; -+ uint64_t usage_bytes; -+ uint64_t rss_bytes; -+ uint64_t page_faults; -+ uint64_t major_page_faults; - // Kernel Memory usage - uint64_t kmem_used; - uint64_t kmem_limit; -diff --git a/src/client/connect/rest/rest_containers_client.c b/src/client/connect/rest/rest_containers_client.c -index 0a735a64..9eee9d40 100644 ---- a/src/client/connect/rest/rest_containers_client.c -+++ b/src/client/connect/rest/rest_containers_client.c -@@ -2195,6 +2195,11 @@ static int unpack_container_info_for_stats_response(const container_stats_respon - // memory usage - infos[i].mem_used = con_info->mem_used; - infos[i].mem_limit = con_info->mem_limit; -+ infos[i].avaliable_bytes = con_info->avaliable_bytes(); -+ infos[i].usage_bytes = con_info->usage_bytes(); -+ infos[i].rss_bytes = con_info->rss_bytes(); -+ infos[i].page_faults = con_info->page_faults(); -+ infos[i].major_page_faults = con_info->major_page_faults(); - // kernel memory usage - infos[i].kmem_used = con_info->kmem_used; - infos[i].kmem_limit = con_info->kmem_limit; -diff --git a/src/daemon/entry/connect/grpc/container/stats_service.cc b/src/daemon/entry/connect/grpc/container/stats_service.cc -index 6e116b4c..7315fe75 100644 ---- a/src/daemon/entry/connect/grpc/container/stats_service.cc -+++ b/src/daemon/entry/connect/grpc/container/stats_service.cc -@@ -87,6 +87,12 @@ void ContainerStatsService::FillResponseTogRPC(void *containerRes, StatsResponse - stats->set_mem_limit(response->container_stats[i]->mem_limit); - stats->set_kmem_used(response->container_stats[i]->kmem_used); - stats->set_kmem_limit(response->container_stats[i]->kmem_limit); -+ stats->set_avaliable_bytes(response->container_stats[i]->avaliable_bytes); -+ stats->set_usage_bytes(response->container_stats[i]->usage_bytes); -+ stats->set_mem_used(response->container_stats[i]->mem_used); -+ stats->set_rss_bytes(response->container_stats[i]->rss_bytes); -+ stats->set_page_faults(response->container_stats[i]->page_faults); -+ stats->set_major_page_faults(response->container_stats[i]->major_page_faults); - if (response->container_stats[i]->name != nullptr) { - stats->set_name(response->container_stats[i]->name); - } -diff --git a/src/daemon/entry/cri/cri_container_manager_service.cc b/src/daemon/entry/cri/cri_container_manager_service.cc -index b02367c8..57284593 100644 ---- a/src/daemon/entry/cri/cri_container_manager_service.cc -+++ b/src/daemon/entry/cri/cri_container_manager_service.cc -@@ -842,8 +842,22 @@ void ContainerManagerService::ContainerStatsToGRPC( - response->container_stats[i]->cpu_use_nanos); - container->mutable_cpu()->set_timestamp(timestamp); - } -- -- containerstats->push_back(move(container)); -+ if (response->container_stats[i]->avaliable_bytes != 0u) { -+ container->mutable_memory()->mutable_available_bytes()->set_value(response->container_stats[i]->avaliable_bytes); -+ } -+ if (response->container_stats[i]->usage_bytes != 0u) { -+ container->mutable_memory()->mutable_usage_bytes()->set_value(response->container_stats[i]->usage_bytes); -+ } -+ if (response->container_stats[i]->rss_bytes != 0u) { -+ container->mutable_memory()->mutable_rss_bytes()->set_value(response->container_stats[i]->rss_bytes); -+ } -+ if (response->container_stats[i]->page_faults != 0u) { -+ container->mutable_memory()->mutable_page_faults()->set_value(response->container_stats[i]->page_faults); -+ } -+ if (response->container_stats[i]->major_page_faults != 0u) { -+ container->mutable_memory()->mutable_major_page_faults()->set_value(response->container_stats[i]->major_page_faults); -+ } -+ containerstats->push_back(std::move(container)); - } - } - -diff --git a/src/daemon/executor/container_cb/execution_extend.c b/src/daemon/executor/container_cb/execution_extend.c -index b0da705e..67d0845a 100644 ---- a/src/daemon/executor/container_cb/execution_extend.c -+++ b/src/daemon/executor/container_cb/execution_extend.c -@@ -243,6 +243,11 @@ static container_info *get_container_stats(const container_t *cont, - info->blkio_write = einfo->blkio_write; - info->mem_used = einfo->mem_used; - info->mem_limit = einfo->mem_limit; -+ info->avaliable_bytes = einfo->avaliable_bytes; -+ info->usage_bytes = einfo->usage_bytes; -+ info->rss_bytes = einfo->rss_bytes; -+ info->page_faults = einfo->page_faults; -+ info->major_page_faults = einfo->major_page_faults; - info->kmem_used = einfo->kmem_used; - info->kmem_limit = einfo->kmem_limit; - -diff --git a/src/daemon/modules/api/runtime_api.h b/src/daemon/modules/api/runtime_api.h -index de4136a3..b245ebf9 100644 ---- a/src/daemon/modules/api/runtime_api.h -+++ b/src/daemon/modules/api/runtime_api.h -@@ -55,6 +55,11 @@ struct runtime_container_resources_stats_info { - /* Memory usage */ - uint64_t mem_used; - uint64_t mem_limit; -+ uint64_t avaliable_bytes; -+ uint64_t usage_bytes; -+ uint64_t rss_bytes; -+ uint64_t page_faults; -+ uint64_t major_page_faults; - /* Kernel Memory usage */ - uint64_t kmem_used; - uint64_t kmem_limit; -diff --git a/src/daemon/modules/runtime/engines/lcr/lcr_engine.c b/src/daemon/modules/runtime/engines/lcr/lcr_engine.c -index 2ca12545..2f7f73f8 100644 ---- a/src/daemon/modules/runtime/engines/lcr/lcr_engine.c -+++ b/src/daemon/modules/runtime/engines/lcr/lcr_engine.c -@@ -162,6 +162,12 @@ static void copy_container_resources_stats(const struct lcr_container_state *lcs - rs_stats->mem_limit = lcs->mem_limit; - rs_stats->kmem_used = lcs->kmem_used; - rs_stats->kmem_limit = lcs->kmem_limit; -+ rs_stats->avaliable_bytes = lcs->avaliable_bytes; -+ rs_stats->usage_bytes = lcs->usage_bytes; -+ rs_stats->mem_used = lcs->mem_used; -+ rs_stats->rss_bytes = lcs->rss_bytes; -+ rs_stats->page_faults = lcs->page_faults; -+ rs_stats->major_page_faults = lcs->major_page_faults; - rs_stats->cache = lcs->cache; - rs_stats->cache_total = lcs->cache_total; - rs_stats->inactive_file_total = lcs->inactive_file_total; --- -2.25.1 - diff --git a/0025-fix-read-member-error-from-struct.patch b/0025-fix-read-member-error-from-struct.patch deleted file mode 100644 index 041cd12..0000000 --- a/0025-fix-read-member-error-from-struct.patch +++ /dev/null @@ -1,34 +0,0 @@ -From 3e71fe5910a1b0c9dbb899e06614103a2cebf0fc Mon Sep 17 00:00:00 2001 -From: haozi007 -Date: Fri, 24 Feb 2023 10:25:46 +0800 -Subject: [PATCH 25/53] fix read member error from struct - -Signed-off-by: haozi007 ---- - src/client/connect/rest/rest_containers_client.c | 10 +++++----- - 1 file changed, 5 insertions(+), 5 deletions(-) - -diff --git a/src/client/connect/rest/rest_containers_client.c b/src/client/connect/rest/rest_containers_client.c -index 9eee9d40..0ae9a4f6 100644 ---- a/src/client/connect/rest/rest_containers_client.c -+++ b/src/client/connect/rest/rest_containers_client.c -@@ -2195,11 +2195,11 @@ static int unpack_container_info_for_stats_response(const container_stats_respon - // memory usage - infos[i].mem_used = con_info->mem_used; - infos[i].mem_limit = con_info->mem_limit; -- infos[i].avaliable_bytes = con_info->avaliable_bytes(); -- infos[i].usage_bytes = con_info->usage_bytes(); -- infos[i].rss_bytes = con_info->rss_bytes(); -- infos[i].page_faults = con_info->page_faults(); -- infos[i].major_page_faults = con_info->major_page_faults(); -+ infos[i].avaliable_bytes = con_info->avaliable_bytes; -+ infos[i].usage_bytes = con_info->usage_bytes; -+ infos[i].rss_bytes = con_info->rss_bytes; -+ infos[i].page_faults = con_info->page_faults; -+ infos[i].major_page_faults = con_info->major_page_faults; - // kernel memory usage - infos[i].kmem_used = con_info->kmem_used; - infos[i].kmem_limit = con_info->kmem_limit; --- -2.25.1 - diff --git a/0026-Fix-PR-runc.patch b/0026-Fix-PR-runc.patch deleted file mode 100644 index 0467a7c..0000000 --- a/0026-Fix-PR-runc.patch +++ /dev/null @@ -1,108 +0,0 @@ -From 39d7fd140e8b590a925e5cdf8ace20b0161328c8 Mon Sep 17 00:00:00 2001 -From: sailorvii -Date: Mon, 27 Feb 2023 02:33:46 +0000 -Subject: [PATCH 26/53] =?UTF-8?q?Fix=20PR=20runc=E8=BF=90=E8=A1=8C?= - =?UTF-8?q?=E5=A4=B1=E8=B4=A5.?= -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -The environment NOTIFY_SOCKET is used when runc start but not runc create. -As the source code: https://github.com/opencontainers/runc/blob/main/start.go#L35. - -So move the related code to the right location. ---- - .../modules/runtime/isula/isula_rt_ops.c | 27 +++++++++---------- - 1 file changed, 13 insertions(+), 14 deletions(-) - -diff --git a/src/daemon/modules/runtime/isula/isula_rt_ops.c b/src/daemon/modules/runtime/isula/isula_rt_ops.c -index 6f2b4f7d..60742d42 100644 ---- a/src/daemon/modules/runtime/isula/isula_rt_ops.c -+++ b/src/daemon/modules/runtime/isula/isula_rt_ops.c -@@ -760,12 +760,6 @@ static int shim_create(bool fg, const char *id, const char *workdir, const char - goto realexec; - } - -- // clear NOTIFY_SOCKET from the env to adapt runc create -- if (unsetenv("NOTIFY_SOCKET") != 0) { -- (void)dprintf(exec_fd[1], "%s: unset env NOTIFY_SOCKET failed %s", id, strerror(errno)); -- exit(EXIT_FAILURE); -- } -- - pid = fork(); - if (pid < 0) { - (void)dprintf(exec_fd[1], "%s: fork shim-process failed %s", id, strerror(errno)); -@@ -945,7 +939,7 @@ int rt_isula_start(const char *id, const char *runtime, const rt_start_params_t - char shim_pid_file_name[PATH_MAX] = { 0 }; - pid_t pid = 0; - pid_t shim_pid = -1; -- int ret = 0; -+ int ret = -1; - int splice_ret = 0; - proc_t *proc = NULL; - proc_t *p_proc = NULL; -@@ -967,28 +961,24 @@ int rt_isula_start(const char *id, const char *runtime, const rt_start_params_t - - pid = get_container_process_pid(workdir); - if (pid < 0) { -- ret = -1; - ERROR("%s: failed wait init pid", id); - goto out; - } - - file_read_int(shim_pid_file_name, &shim_pid); - if (shim_pid < 0) { -- ret = -1; - ERROR("%s: failed to read isulad shim pid", id); - goto out; - } - - proc = util_get_process_proc_info(pid); - if (proc == NULL) { -- ret = -1; - ERROR("%s: failed to read pidinfo", id); - goto out; - } - - p_proc = util_get_process_proc_info(shim_pid); - if (p_proc == NULL) { -- ret = -1; - ERROR("%s: failed to read isulad shim pidinfo", id); - goto out; - } -@@ -998,20 +988,29 @@ int rt_isula_start(const char *id, const char *runtime, const rt_start_params_t - pid_info->ppid = shim_pid; - pid_info->pstart_time = p_proc->start_time; - -+ // clear NOTIFY_SOCKET from the env to adapt runc start -+ if (unsetenv("NOTIFY_SOCKET") != 0) { -+ ERROR("%s: unset env NOTIFY_SOCKET failed %s", id); -+ } -+ - if (runtime_call_simple(workdir, runtime, "start", NULL, 0, id, NULL) != 0) { - ERROR("call runtime start id failed"); -- ret = -1; - goto out; - } - -+ ret = 0; - out: - if (ret != 0) { - show_shim_runtime_errlog(workdir); - shim_kill_force(workdir); - } - -- free(proc); -- free(p_proc); -+ if (proc != NULL) { -+ free(proc); -+ } -+ if (p_proc != NULL) { -+ free(p_proc); -+ } - - return ret; - } --- -2.25.1 - diff --git a/0027-allow-the-paused-container-to-be-stopped.patch b/0027-allow-the-paused-container-to-be-stopped.patch deleted file mode 100644 index 8fe9aa1..0000000 --- a/0027-allow-the-paused-container-to-be-stopped.patch +++ /dev/null @@ -1,68 +0,0 @@ -From 70173556a3825870b44cc344e83cdf0fd6d577c5 Mon Sep 17 00:00:00 2001 -From: zhongtao -Date: Thu, 23 Feb 2023 16:08:48 +0800 -Subject: [PATCH 27/53] allow the paused container to be stopped - -Signed-off-by: zhongtao ---- - src/daemon/entry/cri/cri_container_manager_service.cc | 6 +++--- - src/daemon/entry/cri/cri_helpers.cc | 2 +- - src/daemon/modules/service/service_container.c | 7 +++---- - 3 files changed, 7 insertions(+), 8 deletions(-) - -diff --git a/src/daemon/entry/cri/cri_container_manager_service.cc b/src/daemon/entry/cri/cri_container_manager_service.cc -index 57284593..1592c0a6 100644 ---- a/src/daemon/entry/cri/cri_container_manager_service.cc -+++ b/src/daemon/entry/cri/cri_container_manager_service.cc -@@ -1195,14 +1195,14 @@ void ContainerManagerService::UpdateContainerResources(const std::string &contai - } - if (resources.hugepage_limits_size() != 0) { - hostconfig->hugetlbs = (host_config_hugetlbs_element **)util_smart_calloc_s( -- sizeof(host_config_hugetlbs_element *), resources.hugepage_limits_size()); -+ sizeof(host_config_hugetlbs_element *), resources.hugepage_limits_size()); - if (hostconfig->hugetlbs == nullptr) { - error.SetError("Out of memory"); - return; - } -- for (int i = 0; i < resources.hugepage_limits_size(); i++) { -+ for (int i = 0; i < resources.hugepage_limits_size(); i++) { - hostconfig->hugetlbs[i] = -- (host_config_hugetlbs_element *)util_common_calloc_s(sizeof(host_config_hugetlbs_element)); -+ (host_config_hugetlbs_element *)util_common_calloc_s(sizeof(host_config_hugetlbs_element)); - if (hostconfig->hugetlbs[i] == nullptr) { - error.SetError("Out of memory"); - goto cleanup; -diff --git a/src/daemon/entry/cri/cri_helpers.cc b/src/daemon/entry/cri/cri_helpers.cc -index 6d59ec11..c24c8b73 100644 ---- a/src/daemon/entry/cri/cri_helpers.cc -+++ b/src/daemon/entry/cri/cri_helpers.cc -@@ -470,7 +470,7 @@ void UpdateCreateConfig(container_config *createConfig, host_config *hc, - } - for (int i = 0; i < rOpts.hugepage_limits_size(); i++) { - hc->hugetlbs[i] = -- (host_config_hugetlbs_element *)util_common_calloc_s(sizeof(host_config_hugetlbs_element)); -+ (host_config_hugetlbs_element *)util_common_calloc_s(sizeof(host_config_hugetlbs_element)); - if (hc->hugetlbs[i] == nullptr) { - error.SetError("Out of memory"); - return; -diff --git a/src/daemon/modules/service/service_container.c b/src/daemon/modules/service/service_container.c -index cc777411..d69ee757 100644 ---- a/src/daemon/modules/service/service_container.c -+++ b/src/daemon/modules/service/service_container.c -@@ -1495,10 +1495,9 @@ int stop_container(container_t *cont, int timeout, bool force, bool restart) - - container_lock(cont); - -- if (container_is_paused(cont->state)) { -- ERROR("Container %s is paused. Unpause the container before stopping or killing", id); -- isulad_set_error_message("Container %s is paused. Unpause the container before stopping or killing", id); -- ret = -1; -+ if (!container_is_running(cont->state)) { -+ INFO("Container %s is already stopped", id); -+ ret = 0; - goto out; - } - --- -2.25.1 - diff --git a/0028-Refine.patch b/0028-Refine.patch deleted file mode 100644 index b8fb739..0000000 --- a/0028-Refine.patch +++ /dev/null @@ -1,29 +0,0 @@ -From 376677f2f38b3c27b14b7a21aa021ea683a2f0e1 Mon Sep 17 00:00:00 2001 -From: sailorvii -Date: Tue, 28 Feb 2023 06:09:48 +0000 -Subject: [PATCH 28/53] Refine. - ---- - src/daemon/modules/runtime/isula/isula_rt_ops.c | 6 ++++++ - 1 file changed, 6 insertions(+) - -diff --git a/src/daemon/modules/runtime/isula/isula_rt_ops.c b/src/daemon/modules/runtime/isula/isula_rt_ops.c -index 60742d42..5d622515 100644 ---- a/src/daemon/modules/runtime/isula/isula_rt_ops.c -+++ b/src/daemon/modules/runtime/isula/isula_rt_ops.c -@@ -760,6 +760,12 @@ static int shim_create(bool fg, const char *id, const char *workdir, const char - goto realexec; - } - -+ // clear NOTIFY_SOCKET from the env to adapt runc create -+ if (unsetenv("NOTIFY_SOCKET") != 0) { -+ (void)dprintf(exec_fd[1], "%s: unset env NOTIFY_SOCKET failed %s", id, strerror(errno)); -+ exit(EXIT_FAILURE); -+ } -+ - pid = fork(); - if (pid < 0) { - (void)dprintf(exec_fd[1], "%s: fork shim-process failed %s", id, strerror(errno)); --- -2.25.1 - diff --git a/0029-support-isula-update-when-runtime-is-runc.patch b/0029-support-isula-update-when-runtime-is-runc.patch deleted file mode 100644 index aad54f0..0000000 --- a/0029-support-isula-update-when-runtime-is-runc.patch +++ /dev/null @@ -1,291 +0,0 @@ -From 7f00006ea65378e7b27049ff3f0eb3fa70e69b09 Mon Sep 17 00:00:00 2001 -From: zhongtao -Date: Thu, 16 Feb 2023 20:20:54 +0800 -Subject: [PATCH 29/53] support isula update when runtime is runc - -Signed-off-by: zhongtao ---- - .../executor/container_cb/execution_extend.c | 1 + - src/daemon/modules/api/runtime_api.h | 1 + - .../modules/runtime/isula/isula_rt_ops.c | 180 ++++++++++++++++-- - 3 files changed, 161 insertions(+), 21 deletions(-) - -diff --git a/src/daemon/executor/container_cb/execution_extend.c b/src/daemon/executor/container_cb/execution_extend.c -index 67d0845a..2f565d78 100644 ---- a/src/daemon/executor/container_cb/execution_extend.c -+++ b/src/daemon/executor/container_cb/execution_extend.c -@@ -1134,6 +1134,7 @@ static int do_update_resources(const container_update_request *request, containe - if (container_is_running(cont->state)) { - params.rootpath = cont->root_path; - params.hostconfig = hostconfig; -+ params.state = cont->state_path; - if (runtime_update(id, cont->runtime, ¶ms)) { - ERROR("Update container %s failed", id); - ret = -1; -diff --git a/src/daemon/modules/api/runtime_api.h b/src/daemon/modules/api/runtime_api.h -index b245ebf9..199c9f4b 100644 ---- a/src/daemon/modules/api/runtime_api.h -+++ b/src/daemon/modules/api/runtime_api.h -@@ -169,6 +169,7 @@ typedef struct _rt_attach_params_t { - typedef struct _rt_update_params_t { - const char *rootpath; - const host_config *hostconfig; -+ const char *state; - } rt_update_params_t; - - typedef struct _rt_listpids_params_t { -diff --git a/src/daemon/modules/runtime/isula/isula_rt_ops.c b/src/daemon/modules/runtime/isula/isula_rt_ops.c -index 6f2b4f7d..41791388 100644 ---- a/src/daemon/modules/runtime/isula/isula_rt_ops.c -+++ b/src/daemon/modules/runtime/isula/isula_rt_ops.c -@@ -21,6 +21,7 @@ - #include - #include - #include -+#include - #include - #include - #include -@@ -39,6 +40,7 @@ - #include "constants.h" - #include "isula_libutils/shim_client_process_state.h" - #include "isula_libutils/shim_client_runtime_stats.h" -+#include "isula_libutils/shim_client_cgroup_resources.h" - #include "isula_libutils/oci_runtime_state.h" - #include "isulad_config.h" - #include "utils_string.h" -@@ -54,6 +56,9 @@ - #define RESIZE_DATA_SIZE 100 - #define PID_WAIT_TIME 120 - -+// file name formats of cgroup resources json -+#define RESOURCE_FNAME_FORMATS "%s/resources.json" -+ - // handle string from stderr output. - typedef int(*handle_output_callback_t)(const char *output); - -@@ -229,34 +234,27 @@ bool rt_isula_detect(const char *runtime) - static int create_process_json_file(const char *workdir, const shim_client_process_state *p) - { - struct parser_context ctx = { OPT_GEN_SIMPLIFY, 0 }; -- parser_error perr = NULL; -- char *data = NULL; -+ __isula_auto_free parser_error perr = NULL; -+ __isula_auto_free char *data = NULL; - char fname[PATH_MAX] = { 0 }; -- int retcode = 0; - - if (snprintf(fname, sizeof(fname), "%s/process.json", workdir) < 0) { -- ERROR("failed make process.json full path"); -+ ERROR("Failed make process.json full path"); - return -1; - } - - data = shim_client_process_state_generate_json(p, &ctx, &perr); - if (data == NULL) { -- retcode = -1; -- ERROR("failed generate json for process.json error=%s", perr); -- goto out; -+ ERROR("Failed generate json for process.json error=%s", perr); -+ return -1; - } - - if (util_write_file(fname, data, strlen(data), DEFAULT_SECURE_FILE_MODE) != 0) { -- retcode = -1; -- ERROR("failed write process.json"); -- goto out; -+ ERROR("Failed write process.json"); -+ return -1; - } - --out: -- UTIL_FREE_AND_SET_NULL(perr); -- UTIL_FREE_AND_SET_NULL(data); -- -- return retcode; -+ return 0; - } - - static void get_runtime_cmd(const char *runtime, const char **cmd) -@@ -733,18 +731,18 @@ static int shim_create(bool fg, const char *id, const char *workdir, const char - runtime_exec_param_dump(params); - - if (snprintf(fpid, sizeof(fpid), "%s/shim-pid", workdir) < 0) { -- ERROR("failed make shim-pid full path"); -+ ERROR("Failed make shim-pid full path"); - return -1; - } - - if (pipe2(exec_fd, O_CLOEXEC) != 0) { -- ERROR("failed to create pipe for shim create"); -+ ERROR("Failed to create pipe for shim create"); - return -1; - } - - pid = fork(); - if (pid < 0) { -- ERROR("failed fork for shim parent %s", strerror(errno)); -+ ERROR("Failed fork for shim parent %s", strerror(errno)); - close(exec_fd[0]); - close(exec_fd[1]); - return -1; -@@ -1264,13 +1262,153 @@ int rt_isula_attach(const char *id, const char *runtime, const rt_attach_params_ - return -1; - } - --int rt_isula_update(const char *id, const char *runtime, const rt_update_params_t *params) -+static int to_engine_resources(const host_config *hostconfig, shim_client_cgroup_resources *cr) -+{ -+ uint64_t period = 0; -+ int64_t quota = 0; -+ -+ if (hostconfig == NULL || cr == NULL) { -+ return -1; -+ } -+ -+ cr->block_io = util_common_calloc_s(sizeof(shim_client_cgroup_resources_block_io)); -+ if (cr->block_io == NULL) { -+ ERROR("Out of memory"); -+ return -1; -+ } -+ -+ cr->cpu = util_common_calloc_s(sizeof(shim_client_cgroup_resources_cpu)); -+ if (cr->cpu == NULL) { -+ ERROR("Out of memory"); -+ return -1; -+ } -+ -+ cr->memory = util_common_calloc_s(sizeof(shim_client_cgroup_resources_memory)); -+ if (cr->memory == NULL) { -+ ERROR("Out of memory"); -+ return -1; -+ } -+ -+ cr->block_io->weight = hostconfig->blkio_weight; -+ cr->cpu->shares = (uint64_t)hostconfig->cpu_shares; -+ cr->cpu->period = (uint64_t)hostconfig->cpu_period; -+ cr->cpu->quota = hostconfig->cpu_quota; -+ cr->cpu->cpus = util_strdup_s(hostconfig->cpuset_cpus); -+ cr->cpu->mems = util_strdup_s(hostconfig->cpuset_mems); -+ cr->memory->limit = (uint64_t)hostconfig->memory; -+ cr->memory->swap = (uint64_t)hostconfig->memory_swap; -+ cr->memory->reservation = (uint64_t)hostconfig->memory_reservation; -+ cr->memory->kernel = (uint64_t)hostconfig->kernel_memory; -+ cr->cpu->realtime_period = hostconfig->cpu_realtime_period; -+ cr->cpu->realtime_runtime = hostconfig->cpu_realtime_runtime; -+ -+ // when --cpus=n is set, nano_cpus = n * 1e9. -+ if (hostconfig->nano_cpus > 0) { -+ // in the case, period will be set to the default value of 100000(0.1s). -+ period = (uint64_t)(100 * Time_Milli / Time_Micro); -+ // set quota = period * n, in order to let container process fully occupy n cpus. -+ if ((hostconfig->nano_cpus / 1e9) > (INT64_MAX / (int64_t)period)) { -+ ERROR("Overflow of quota"); -+ return -1; -+ } -+ quota = hostconfig->nano_cpus / 1e9 * (int64_t)period; -+ cr->cpu->period = period; -+ cr->cpu->quota = quota; -+ } -+ -+ return 0; -+} -+ -+static int create_resources_json_file(const char *workdir, const shim_client_cgroup_resources *cr, char *fname, -+ size_t fname_size) - { -- ERROR("isula update not support on isulad-shim"); -- isulad_set_error_message("isula update not support on isulad-shim"); -+ struct parser_context ctx = { OPT_GEN_SIMPLIFY, 0 }; -+ __isula_auto_free parser_error perr = NULL; -+ __isula_auto_free char *data = NULL; -+ -+ if (snprintf(fname, fname_size, RESOURCE_FNAME_FORMATS, workdir) < 0) { -+ ERROR("Failed make resources.json full path"); -+ return -1; -+ } -+ -+ data = shim_client_cgroup_resources_generate_json(cr, &ctx, &perr); -+ if (data == NULL) { -+ return -1; -+ } -+ -+ if (util_write_file(fname, data, strlen(data), DEFAULT_SECURE_FILE_MODE) != 0) { -+ return -1; -+ } -+ -+ return 0; -+} -+ -+// show std error msg, always return -1. -+static int show_stderr(const char *err) -+{ -+ isulad_set_error_message(err); - return -1; - } - -+int rt_isula_update(const char *id, const char *runtime, const rt_update_params_t *params) -+{ -+ int ret = 0; -+ char workdir[PATH_MAX] = { 0 }; -+ char resources_fname[PATH_MAX] = { 0 }; -+ const char *opts[2] = { 0 }; -+ shim_client_cgroup_resources *cr = NULL; -+ -+ if (id == NULL || runtime == NULL || params == NULL) { -+ ERROR("Nullptr arguments not allowed"); -+ return -1; -+ } -+ -+ ret = snprintf(workdir, sizeof(workdir), "%s/%s/update", params->state, id); -+ if (ret < 0) { -+ ERROR("Failed join update full path"); -+ return ret; -+ } -+ -+ ret = util_mkdir_p(workdir, DEFAULT_SECURE_DIRECTORY_MODE); -+ if (ret < 0) { -+ ERROR("Failed mkdir update workdir %s", workdir); -+ return ret; -+ } -+ -+ cr = util_common_calloc_s(sizeof(shim_client_cgroup_resources)); -+ if (cr == NULL) { -+ ERROR("Out of memory"); -+ goto del_out; -+ } -+ -+ ret = to_engine_resources(params->hostconfig, cr); -+ if (ret < 0) { -+ ERROR("Failed to get resources for update"); -+ goto del_out; -+ } -+ -+ ret = create_resources_json_file(workdir, cr, resources_fname, sizeof(resources_fname)); -+ if (ret != 0) { -+ ERROR("%s: failed create update json file", id); -+ goto del_out; -+ } -+ -+ opts[0] = "--resources"; -+ opts[1] = resources_fname; -+ -+ if (runtime_call_simple(workdir, runtime, "update", opts, 2, id, show_stderr) != 0) { -+ ERROR("Call runtime update id failed"); -+ ret = -1; -+ } -+ -+del_out: -+ if (util_recursive_rmdir(workdir, 0)) { -+ ERROR("Rmdir %s failed", workdir); -+ } -+ free_shim_client_cgroup_resources(cr); -+ return ret; -+} -+ - int rt_isula_pause(const char *id, const char *runtime, const rt_pause_params_t *params) - { - char workdir[PATH_MAX] = { 0 }; --- -2.25.1 - diff --git a/0030-Refine-as-others-feedback.patch b/0030-Refine-as-others-feedback.patch deleted file mode 100644 index 39691ca..0000000 --- a/0030-Refine-as-others-feedback.patch +++ /dev/null @@ -1,41 +0,0 @@ -From 4900996ca52e46795eb25b05ce50519c7c71ae38 Mon Sep 17 00:00:00 2001 -From: sailorvii -Date: Thu, 2 Mar 2023 09:04:57 +0000 -Subject: [PATCH 30/53] Refine as others' feedback. - ---- - src/daemon/modules/runtime/isula/isula_rt_ops.c | 11 ++++++----- - 1 file changed, 6 insertions(+), 5 deletions(-) - -diff --git a/src/daemon/modules/runtime/isula/isula_rt_ops.c b/src/daemon/modules/runtime/isula/isula_rt_ops.c -index 5d622515..7ec3fc49 100644 ---- a/src/daemon/modules/runtime/isula/isula_rt_ops.c -+++ b/src/daemon/modules/runtime/isula/isula_rt_ops.c -@@ -473,6 +473,12 @@ static void runtime_exec_func(void *arg) - _exit(EXIT_FAILURE); - } - -+ // clear NOTIFY_SOCKET from the env to adapt runc start -+ if (strcmp(rei->subcmd, "start") == 0 && unsetenv("NOTIFY_SOCKET") != 0) { -+ dprintf(STDERR_FILENO, "unset env NOTIFY_SOCKET failed %s", strerror(errno)); -+ _exit(EXIT_FAILURE); -+ } -+ - execvp(rei->cmd, rei->params); - dprintf(STDERR_FILENO, "exec %s %s %s failed", rei->cmd, rei->subcmd, rei->id); - _exit(EXIT_FAILURE); -@@ -994,11 +1000,6 @@ int rt_isula_start(const char *id, const char *runtime, const rt_start_params_t - pid_info->ppid = shim_pid; - pid_info->pstart_time = p_proc->start_time; - -- // clear NOTIFY_SOCKET from the env to adapt runc start -- if (unsetenv("NOTIFY_SOCKET") != 0) { -- ERROR("%s: unset env NOTIFY_SOCKET failed %s", id); -- } -- - if (runtime_call_simple(workdir, runtime, "start", NULL, 0, id, NULL) != 0) { - ERROR("call runtime start id failed"); - goto out; --- -2.25.1 - diff --git a/0031-fix-CRI-SetupPod-and-TearDownPod-deadlock.patch b/0031-fix-CRI-SetupPod-and-TearDownPod-deadlock.patch deleted file mode 100644 index c5bd888..0000000 --- a/0031-fix-CRI-SetupPod-and-TearDownPod-deadlock.patch +++ /dev/null @@ -1,134 +0,0 @@ -From a87e8aeea252e5aec9e1dea0daf99562eb86b092 Mon Sep 17 00:00:00 2001 -From: zhangxiaoyu -Date: Thu, 2 Mar 2023 20:05:49 +0800 -Subject: [PATCH 31/53] fix CRI SetupPod and TearDownPod deadlock - -Signed-off-by: zhangxiaoyu ---- - src/daemon/entry/cri/cni_network_plugin.cc | 14 +++++++---- - .../cri/cri_pod_sandbox_manager_service.cc | 2 ++ - src/daemon/entry/cri/network_plugin.cc | 25 +++++++++++++------ - 3 files changed, 29 insertions(+), 12 deletions(-) - -diff --git a/src/daemon/entry/cri/cni_network_plugin.cc b/src/daemon/entry/cri/cni_network_plugin.cc -index 1bce13f6..0fe095b6 100644 ---- a/src/daemon/entry/cri/cni_network_plugin.cc -+++ b/src/daemon/entry/cri/cni_network_plugin.cc -@@ -120,8 +120,10 @@ auto CniNetworkPlugin::Name() const -> const std::string & - - void CniNetworkPlugin::CheckInitialized(Errors &err) - { -- RLockNetworkMap(err); -- if (err.NotEmpty()) { -+ Errors tmpErr; -+ RLockNetworkMap(tmpErr); -+ if (tmpErr.NotEmpty()) { -+ err.AppendError(tmpErr.GetCMessage()); - return; - } - -@@ -129,9 +131,10 @@ void CniNetworkPlugin::CheckInitialized(Errors &err) - err.SetError("cni config uninitialized"); - } - -- UnlockNetworkMap(err); -- if (err.NotEmpty()) { -- WARN("Unable to update cni config: %s", err.GetCMessage()); -+ UnlockNetworkMap(tmpErr); -+ if (tmpErr.NotEmpty()) { -+ WARN("Unable to update cni config: %s", tmpErr.GetCMessage()); -+ err.AppendError(tmpErr.GetCMessage()); - } - } - -@@ -623,6 +626,7 @@ void CniNetworkPlugin::SetUpPod(const std::string &ns, const std::string &name, - return; - } - -+ err.Clear(); - RLockNetworkMap(err); - if (err.NotEmpty()) { - ERROR("%s", err.GetCMessage()); -diff --git a/src/daemon/entry/cri/cri_pod_sandbox_manager_service.cc b/src/daemon/entry/cri/cri_pod_sandbox_manager_service.cc -index 3d183861..ee523b9c 100644 ---- a/src/daemon/entry/cri/cri_pod_sandbox_manager_service.cc -+++ b/src/daemon/entry/cri/cri_pod_sandbox_manager_service.cc -@@ -705,6 +705,7 @@ auto PodSandboxManagerService::GetRealSandboxIDToStop(const std::string &podSand - if (status->linux().namespaces().has_options()) { - hostNetwork = (status->linux().namespaces().options().network() == runtime::v1alpha2::NamespaceMode::NODE); - } -+ // if metadata is invalid, don't return -1 and continue stopping pod - if (status->has_metadata()) { - name = status->metadata().name(); - ns = status->metadata().namespace_(); -@@ -831,6 +832,7 @@ auto PodSandboxManagerService::ClearCniNetwork(const std::string &realSandboxID, - } - - stdAnnos.insert(std::pair(CRIHelpers::Constants::POD_SANDBOX_KEY, netnsPath)); -+ pluginErr.Clear(); - m_pluginManager->TearDownPod(ns, name, Network::DEFAULT_NETWORK_INTERFACE_NAME, realSandboxID, stdAnnos, - pluginErr); - if (pluginErr.NotEmpty()) { -diff --git a/src/daemon/entry/cri/network_plugin.cc b/src/daemon/entry/cri/network_plugin.cc -index 4a119d6b..e55db4ea 100644 ---- a/src/daemon/entry/cri/network_plugin.cc -+++ b/src/daemon/entry/cri/network_plugin.cc -@@ -425,20 +425,26 @@ void PluginManager::SetUpPod(const std::string &ns, const std::string &name, con - return; - } - -+ Errors tmpErr; - std::string fullName = name + "_" + ns; -- Lock(fullName, error); -- if (error.NotEmpty()) { -+ Lock(fullName, tmpErr); -+ if (tmpErr.NotEmpty()) { -+ error.AppendError(tmpErr.GetCMessage()); - return; - } - INFO("Calling network plugin %s to set up pod %s", m_plugin->Name().c_str(), fullName.c_str()); - -- Errors tmpErr; - m_plugin->SetUpPod(ns, name, interfaceName, podSandboxID, annotations, options, network_settings_json, tmpErr); - if (tmpErr.NotEmpty()) { - error.Errorf("NetworkPlugin %s failed to set up pod %s network: %s", m_plugin->Name().c_str(), fullName.c_str(), - tmpErr.GetCMessage()); - } -- Unlock(fullName, error); -+ -+ tmpErr.Clear(); -+ Unlock(fullName, tmpErr); -+ if (tmpErr.NotEmpty()) { -+ error.AppendError(tmpErr.GetCMessage()); -+ } - } - - void PluginManager::TearDownPod(const std::string &ns, const std::string &name, const std::string &interfaceName, -@@ -447,8 +453,9 @@ void PluginManager::TearDownPod(const std::string &ns, const std::string &name, - { - Errors tmpErr; - std::string fullName = name + "_" + ns; -- Lock(fullName, error); -- if (error.NotEmpty()) { -+ Lock(fullName, tmpErr); -+ if (tmpErr.NotEmpty()) { -+ error.AppendError(tmpErr.GetCMessage()); - return; - } - if (m_plugin == nullptr) { -@@ -462,7 +469,11 @@ void PluginManager::TearDownPod(const std::string &ns, const std::string &name, - fullName.c_str(), tmpErr.GetCMessage()); - } - unlock: -- Unlock(fullName, error); -+ tmpErr.Clear(); -+ Unlock(fullName, tmpErr); -+ if (tmpErr.NotEmpty()) { -+ error.AppendError(tmpErr.GetCMessage()); -+ } - } - - void NoopNetworkPlugin::Init(const std::string &hairpinMode, const std::string &nonMasqueradeCIDR, int mtu, --- -2.25.1 - diff --git a/0032-remote-layer-store-demo.patch b/0032-remote-layer-store-demo.patch deleted file mode 100644 index a20a04d..0000000 --- a/0032-remote-layer-store-demo.patch +++ /dev/null @@ -1,2296 +0,0 @@ -From 9072007e7f61f7658baf7c4101126040dc341d0b Mon Sep 17 00:00:00 2001 -From: "Neil.wrz" -Date: Mon, 9 Jan 2023 17:12:53 -0800 -Subject: [PATCH 32/53] remote layer store demo - -Signed-off-by: Neil ---- - cmake/options.cmake | 6 + - src/daemon/config/isulad_config.c | 1 + - src/daemon/modules/image/oci/oci_image.c | 6 +- - .../modules/image/oci/storage/CMakeLists.txt | 6 + - .../storage/image_store/image_remote_impl.c | 173 +++++++++ - .../oci/storage/image_store/image_store.c | 76 +++- - .../oci/storage/image_store/image_store.h | 11 + - .../storage/layer_store/graphdriver/driver.c | 4 +- - .../storage/layer_store/graphdriver/driver.h | 3 + - .../graphdriver/overlay2/driver_overlay2.c | 158 +++++++- - .../graphdriver/overlay2/driver_overlay2.h | 8 + - .../overlay2/overlay_remote_impl.c | 282 ++++++++++++++ - .../storage/layer_store/layer_remote_impl.c | 219 +++++++++++ - .../oci/storage/layer_store/layer_store.c | 199 +++++++++- - .../oci/storage/layer_store/layer_store.h | 11 + - .../remote_layer_support/CMakeLists.txt | 12 + - .../remote_layer_support/remote_support.c | 122 ++++++ - .../remote_layer_support/remote_support.h | 58 +++ - .../ro_symlink_maintain.c | 347 ++++++++++++++++++ - .../ro_symlink_maintain.h | 52 +++ - .../modules/image/oci/storage/storage.c | 11 +- - .../modules/image/oci/storage/storage.h | 3 + - 22 files changed, 1750 insertions(+), 18 deletions(-) - create mode 100644 src/daemon/modules/image/oci/storage/image_store/image_remote_impl.c - create mode 100644 src/daemon/modules/image/oci/storage/layer_store/graphdriver/overlay2/overlay_remote_impl.c - create mode 100644 src/daemon/modules/image/oci/storage/layer_store/layer_remote_impl.c - create mode 100644 src/daemon/modules/image/oci/storage/remote_layer_support/CMakeLists.txt - create mode 100644 src/daemon/modules/image/oci/storage/remote_layer_support/remote_support.c - create mode 100644 src/daemon/modules/image/oci/storage/remote_layer_support/remote_support.h - create mode 100644 src/daemon/modules/image/oci/storage/remote_layer_support/ro_symlink_maintain.c - create mode 100644 src/daemon/modules/image/oci/storage/remote_layer_support/ro_symlink_maintain.h - -diff --git a/cmake/options.cmake b/cmake/options.cmake -index a357a504..44ccf672 100644 ---- a/cmake/options.cmake -+++ b/cmake/options.cmake -@@ -148,6 +148,12 @@ if (DISABLE_CLEANUP STREQUAL "ON") - message("${Green}-- Disable cleanup module") - endif() - -+option(ENABLE_REMOTE_LAYER_STORE "enable remote layer store" OFF) -+if (ENABLE_REMOTE_LAYER_STORE STREQUAL "ON") -+ add_definitions(-DENABLE_REMOTE_LAYER_STORE) -+ message("${Green}-- Enable remote layer store") -+endif() -+ - option(MUSL "available for musl" OFF) - if (MUSL) - add_definitions(-D__MUSL__) -diff --git a/src/daemon/config/isulad_config.c b/src/daemon/config/isulad_config.c -index 38bf4bf9..b7bfe2df 100644 ---- a/src/daemon/config/isulad_config.c -+++ b/src/daemon/config/isulad_config.c -@@ -1555,6 +1555,7 @@ static int merge_authorization_conf_into_global(struct service_arguments *args, - static int merge_storage_conf_into_global(struct service_arguments *args, isulad_daemon_configs *tmp_json_confs) - { - override_string_value(&args->json_confs->storage_driver, &tmp_json_confs->storage_driver); -+ args->json_confs->storage_enable_remote_layer = tmp_json_confs->storage_enable_remote_layer; - - if (string_array_append(tmp_json_confs->storage_opts, tmp_json_confs->storage_opts_len, - &(args->json_confs->storage_opts_len), &(args->json_confs->storage_opts)) != 0) { -diff --git a/src/daemon/modules/image/oci/oci_image.c b/src/daemon/modules/image/oci/oci_image.c -index 50d13cec..fa92a861 100644 ---- a/src/daemon/modules/image/oci/oci_image.c -+++ b/src/daemon/modules/image/oci/oci_image.c -@@ -218,6 +218,10 @@ static int storage_module_init_helper(const isulad_daemon_configs *args) - goto out; - } - -+#ifdef ENABLE_REMOTE_LAYER_STORE -+ storage_opts->enable_remote_layer = args->storage_enable_remote_layer; -+#endif -+ - if (util_dup_array_of_strings((const char **)args->storage_opts, args->storage_opts_len, &storage_opts->driver_opts, - &storage_opts->driver_opts_len) != 0) { - ERROR("Failed to get storage storage opts"); -@@ -763,4 +767,4 @@ int oci_search(const im_search_request *request, imagetool_search_result **resul - - return ret; - } --#endif -\ No newline at end of file -+#endif -diff --git a/src/daemon/modules/image/oci/storage/CMakeLists.txt b/src/daemon/modules/image/oci/storage/CMakeLists.txt -index 06c2f378..24b71450 100644 ---- a/src/daemon/modules/image/oci/storage/CMakeLists.txt -+++ b/src/daemon/modules/image/oci/storage/CMakeLists.txt -@@ -3,12 +3,17 @@ aux_source_directory(${CMAKE_CURRENT_SOURCE_DIR} local_storage_srcs) - add_subdirectory(image_store) - add_subdirectory(layer_store) - add_subdirectory(rootfs_store) -+IF (ENABLE_REMOTE_LAYER_STORE) -+add_subdirectory(remote_layer_support) -+ENDIF() -+ - - set(STORAGE_SRCS - ${local_storage_srcs} - ${IMAGE_STORE_SRCS} - ${LAYER_STORE_SRCS} - ${ROOTFS_STORE_SRCS} -+ ${REMOTE_LAYER_SUPPORT_SRCS} - PARENT_SCOPE - ) - -@@ -17,5 +22,6 @@ set(STORAGE_INCS - ${IMAGE_STORE_INCS} - ${LAYER_STORE_INCS} - ${ROOTFS_STORE_INCS} -+ ${REMOTE_LAYER_SUPPORT_INCS} - PARENT_SCOPE - ) -diff --git a/src/daemon/modules/image/oci/storage/image_store/image_remote_impl.c b/src/daemon/modules/image/oci/storage/image_store/image_remote_impl.c -new file mode 100644 -index 00000000..20da8116 ---- /dev/null -+++ b/src/daemon/modules/image/oci/storage/image_store/image_remote_impl.c -@@ -0,0 +1,173 @@ -+/****************************************************************************** -+ * Copyright (c) Huawei Technologies Co., Ltd. 2020-2023. All rights reserved. -+ * iSulad licensed under the Mulan PSL v2. -+ * You can use this software according to the terms and conditions of the Mulan PSL v2. -+ * You may obtain a copy of Mulan PSL v2 at: -+ * http://license.coscl.org.cn/MulanPSL2 -+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR -+ * IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR -+ * PURPOSE. -+ * See the Mulan PSL v2 for more details. -+ * Author: wangrunze -+ * Create: 2023-03-03 -+ * Description: provide remote image store functions -+ ******************************************************************************/ -+#define _GNU_SOURCE -+#include "image_store.h" -+ -+#include -+#include -+ -+#include "remote_support.h" -+#include "ro_symlink_maintain.h" -+#include "map.h" -+#include "utils_file.h" -+#include "utils.h" -+#include "layer_store.h" -+#include "utils_array.h" -+ -+struct remote_image_data { -+ const char *image_home; -+}; -+ -+static map_t *image_byid_old = NULL; -+static map_t *image_byid_new = NULL; -+ -+static void *remote_support_create(const char *remote_home, const char *remote_ro) -+{ -+ struct remote_image_data *data = util_common_calloc_s(sizeof(struct remote_image_data)); -+ if (data == NULL) { -+ ERROR("Out of memory"); -+ return NULL; -+ } -+ data->image_home = remote_home; -+ image_byid_old = map_new(MAP_STR_BOOL, MAP_DEFAULT_CMP_FUNC, MAP_DEFAULT_FREE_FUNC); -+ image_byid_new = map_new(MAP_STR_BOOL, MAP_DEFAULT_CMP_FUNC, MAP_DEFAULT_FREE_FUNC); -+ return data; -+} -+ -+static void remote_support_destroy(void *data) -+{ -+ if (data == NULL) { -+ return; -+ } -+ -+ map_free(image_byid_old); -+ map_free(image_byid_new); -+ -+ free(data); -+ return; -+} -+ -+static int remote_support_scan(void *data) -+{ -+ int ret = 0; -+ int nret; -+ char **image_dirs = NULL; -+ size_t image_dirs_num = 0; -+ size_t i; -+ char *id_patten = "^[a-f0-9]{64}$"; -+ char image_path[PATH_MAX] = { 0x00 }; -+ bool exist = true; -+ struct remote_image_data *img_data = (struct remote_image_data *)data; -+ -+ ret = util_list_all_subdir(img_data->image_home, &image_dirs); -+ if (ret != 0) { -+ ERROR("Failed to get images directory"); -+ goto out; -+ } -+ image_dirs_num = util_array_len((const char **)image_dirs); -+ -+ for (i = 0; i < image_dirs_num; i++) { -+ bool valid_v1_image = false; -+ -+ if (util_reg_match(id_patten, image_dirs[i]) != 0) { -+ DEBUG("Image's json is placed inside image's data directory, so skip any other file or directory: %s", -+ image_dirs[i]); -+ continue; -+ } -+ -+ nret = snprintf(image_path, sizeof(image_path), "%s/%s", img_data->image_home, image_dirs[i]); -+ if (nret < 0 || (size_t)nret >= sizeof(image_path)) { -+ ERROR("Failed to get image path"); -+ continue; -+ } -+ -+ if (validate_manifest_schema_version_1(image_path, &valid_v1_image) != 0) { -+ ERROR("Failed to validate manifest schema version 1 format"); -+ continue; -+ } -+ -+ if (!valid_v1_image) { -+ map_insert(image_byid_new, util_strdup_s(image_dirs[i]), (void *)&exist); -+ } -+ } -+ -+out: -+ util_free_array(image_dirs); -+ return ret; -+} -+ -+static int remote_support_add(void *data) -+{ -+ char **array_added = NULL; -+ char **array_deleted = NULL; -+ char *top_layer = NULL; -+ map_t *tmp_map = NULL; -+ int i = 0; -+ int ret = 0; -+ -+ if (data == NULL) { -+ return -1; -+ } -+ -+ array_added = added_layers(image_byid_old, image_byid_new); -+ array_deleted = deleted_layers(image_byid_old, image_byid_new); -+ -+ for (i = 0; i < util_array_len((const char **)array_added); i++) { -+ top_layer = get_top_layer_from_json(array_added[i]); -+ if (top_layer != NULL && !layer_remote_layer_valid(top_layer)) { -+ ERROR("ERROR not find valid under layer, remoet image:%s not added", array_added[i]); -+ map_remove(image_byid_new, (void *)array_added[i]); -+ continue; -+ } -+ -+ if (append_image_by_directory_with_lock(array_added[i]) != 0) { -+ ERROR("Failed to load image into memrory: %s", array_added[i]); -+ ret = -1; -+ } -+ } -+ -+ for (i = 0; i < util_array_len((const char **)array_deleted); i++) { -+ if (remove_image_from_memory_with_lock(array_deleted[i]) != 0) { -+ ERROR("Failed to remove remote memory store"); -+ ret = -1; -+ } -+ } -+ -+ tmp_map = image_byid_old; -+ image_byid_old = image_byid_new; -+ image_byid_new = tmp_map; -+ empty_map(image_byid_new); -+ -+ util_free_array(array_added); -+ util_free_array(array_deleted); -+ free(top_layer); -+ -+ return ret; -+} -+ -+remote_support *image_store_impl_remote_support(void) -+{ -+ remote_support *rs = util_common_calloc_s(sizeof(remote_support)); -+ if (rs == NULL) { -+ return NULL; -+ } -+ -+ rs->create = remote_support_create; -+ rs->destroy = remote_support_destroy; -+ rs->scan_remote_dir = remote_support_scan; -+ rs->load_item = remote_support_add; -+ -+ return rs; -+} -diff --git a/src/daemon/modules/image/oci/storage/image_store/image_store.c b/src/daemon/modules/image/oci/storage/image_store/image_store.c -index cf1e88ff..caff3705 100644 ---- a/src/daemon/modules/image/oci/storage/image_store/image_store.c -+++ b/src/daemon/modules/image/oci/storage/image_store/image_store.c -@@ -49,6 +49,9 @@ - #include "image_type.h" - #include "linked_list.h" - #include "utils_verify.h" -+#ifdef ENABLE_REMOTE_LAYER_STORE -+#include "ro_symlink_maintain.h" -+#endif - - // the name of the big data item whose contents we consider useful for computing a "digest" of the - // image, by which we can locate the image later. -@@ -3096,7 +3099,7 @@ out: - return ret; - } - --static int validate_manifest_schema_version_1(const char *path, bool *valid) -+int validate_manifest_schema_version_1(const char *path, bool *valid) - { - int ret = 0; - int nret; -@@ -3640,6 +3643,10 @@ int image_store_init(struct storage_module_init_options *opts) - goto out; - } - -+#ifdef ENABLE_REMOTE_LAYER_STORE -+ remote_image_init(g_image_store->dir); -+#endif -+ - out: - if (ret != 0) { - free_image_store(g_image_store); -@@ -3648,3 +3655,70 @@ out: - free(root_dir); - return ret; - } -+ -+#ifdef ENABLE_REMOTE_LAYER_STORE -+int append_image_by_directory_with_lock(const char *id) -+{ -+ int ret = 0; -+ int nret = 0; -+ char image_path[PATH_MAX] = { 0x00 }; -+ -+ if (!image_store_lock(EXCLUSIVE)) { -+ ERROR("Failed to lock remote image store when handle: %s", id); -+ return -1; -+ } -+ -+ nret = snprintf(image_path, sizeof(image_path), "%s/%s", g_image_store->dir, id); -+ if (nret < 0 || (size_t)nret >= sizeof(image_path)) { -+ ERROR("Failed to get image path"); -+ return -1; -+ } -+ -+ ret = append_image_by_directory(image_path); -+ image_store_unlock(); -+ -+ return ret; -+} -+ -+int remove_image_from_memory_with_lock(const char *id) -+{ -+ int ret = 0; -+ -+ if (!image_store_lock(EXCLUSIVE)) { -+ ERROR("Failed to lock remote image store when handle: %s", id); -+ return -1; -+ } -+ -+ ret = remove_image_from_memory(id); -+ image_store_unlock(); -+ -+ return ret; -+} -+ -+char *get_top_layer_from_json(const char *img_id) -+{ -+ -+ char *ret = NULL; -+ int nret = 0; -+ char image_path[PATH_MAX] = { 0x00 }; -+ storage_image *im = NULL; -+ parser_error err = NULL; -+ -+ nret = snprintf(image_path, sizeof(image_path), "%s/%s/%s", g_image_store->dir, img_id, IMAGE_JSON); -+ if (nret < 0 || (size_t)nret >= sizeof(image_path)) { -+ ERROR("Failed to get image path"); -+ return NULL; -+ } -+ -+ im = storage_image_parse_file(image_path, NULL, &err); -+ if (im == NULL) { -+ ERROR("Failed to parse images path: %s", err); -+ return NULL; -+ } -+ -+ ret = util_strdup_s(im->layer); -+ free_storage_image(im); -+ -+ return ret; -+} -+#endif -diff --git a/src/daemon/modules/image/oci/storage/image_store/image_store.h b/src/daemon/modules/image/oci/storage/image_store/image_store.h -index edd4fa2c..c3cb50e3 100644 ---- a/src/daemon/modules/image/oci/storage/image_store/image_store.h -+++ b/src/daemon/modules/image/oci/storage/image_store/image_store.h -@@ -28,6 +28,9 @@ - #include "isula_libutils/imagetool_image.h" - #include "isula_libutils/imagetool_images_list.h" - #include "isula_libutils/imagetool_image_summary.h" -+#ifdef ENABLE_REMOTE_LAYER_STORE -+#include "remote_support.h" -+#endif - - struct storage_module_init_options; - -@@ -108,6 +111,14 @@ void image_store_free(); - - imagetool_image_summary *image_store_get_image_summary(const char *id); - -+#ifdef ENABLE_REMOTE_LAYER_STORE -+remote_support *image_store_impl_remote_support(); -+int validate_manifest_schema_version_1(const char *path, bool *valid); -+int append_image_by_directory_with_lock(const char *image_dir); -+int remove_image_from_memory_with_lock(const char *id); -+char *get_top_layer_from_json(const char *img_id); /* return top layer id */ -+#endif -+ - #ifdef __cplusplus - } - #endif -diff --git a/src/daemon/modules/image/oci/storage/layer_store/graphdriver/driver.c b/src/daemon/modules/image/oci/storage/layer_store/graphdriver/driver.c -index d3b5209a..b83c63b1 100644 ---- a/src/daemon/modules/image/oci/storage/layer_store/graphdriver/driver.c -+++ b/src/daemon/modules/image/oci/storage/layer_store/graphdriver/driver.c -@@ -141,7 +141,9 @@ int graphdriver_init(const struct storage_module_init_options *opts) - ret = -1; - goto out; - } -- -+#ifdef ENABLE_REMOTE_LAYER_STORE -+ g_drivers[i].enable_remote_layer = opts->enable_remote_layer; -+#endif - if (g_drivers[i].ops->init(&g_drivers[i], driver_home, (const char **)opts->driver_opts, - opts->driver_opts_len) != 0) { - ret = -1; -diff --git a/src/daemon/modules/image/oci/storage/layer_store/graphdriver/driver.h b/src/daemon/modules/image/oci/storage/layer_store/graphdriver/driver.h -index 7faf70c8..acd847cc 100644 ---- a/src/daemon/modules/image/oci/storage/layer_store/graphdriver/driver.h -+++ b/src/daemon/modules/image/oci/storage/layer_store/graphdriver/driver.h -@@ -90,6 +90,9 @@ struct graphdriver { - bool support_dtype; - - bool support_quota; -+#ifdef ENABLE_REMOTE_LAYER_STORE -+ bool enable_remote_layer; -+#endif - struct pquota_control *quota_ctrl; - - // options for overlay2 -diff --git a/src/daemon/modules/image/oci/storage/layer_store/graphdriver/overlay2/driver_overlay2.c b/src/daemon/modules/image/oci/storage/layer_store/graphdriver/overlay2/driver_overlay2.c -index 330c230a..eedbeef2 100644 ---- a/src/daemon/modules/image/oci/storage/layer_store/graphdriver/overlay2/driver_overlay2.c -+++ b/src/daemon/modules/image/oci/storage/layer_store/graphdriver/overlay2/driver_overlay2.c -@@ -12,6 +12,7 @@ - * Create: 2020-04-02 - * Description: provide overlay2 function definition - ******************************************************************************/ -+#define _GNU_SOURCE - #include "driver_overlay2.h" - - #include -@@ -44,6 +45,9 @@ - #include "utils_timestamp.h" - #include "selinux_label.h" - #include "err_msg.h" -+#ifdef ENABLE_REMOTE_LAYER_STORE -+#include "ro_symlink_maintain.h" -+#endif - - struct io_read_wrapper; - -@@ -343,6 +347,13 @@ int overlay2_init(struct graphdriver *driver, const char *driver_home, const cha - return -1; - } - -+#ifdef ENABLE_REMOTE_LAYER_STORE -+ if (driver->enable_remote_layer && remote_overlay_init(driver_home) != 0) { -+ ERROR("Failed to init overlay remote"); -+ return -1; -+ } -+#endif -+ - driver->home = util_strdup_s(driver_home); - - root_dir = util_path_dir(driver_home); -@@ -423,7 +434,7 @@ static int mk_diff_directory(const char *layer_dir) - int ret = 0; - char *diff_dir = NULL; - #ifdef ENABLE_USERNS_REMAP -- char* userns_remap = conf_get_isulad_userns_remap(); -+ char *userns_remap = conf_get_isulad_userns_remap(); - #endif - - diff_dir = util_path_join(layer_dir, OVERLAY_LAYER_DIFF); -@@ -538,7 +549,7 @@ static int mk_work_directory(const char *layer_dir) - int ret = 0; - char *work_dir = NULL; - #ifdef ENABLE_USERNS_REMAP -- char* userns_remap = conf_get_isulad_userns_remap(); -+ char *userns_remap = conf_get_isulad_userns_remap(); - #endif - - work_dir = util_path_join(layer_dir, OVERLAY_LAYER_WORK); -@@ -575,7 +586,7 @@ static int mk_merged_directory(const char *layer_dir) - int ret = 0; - char *merged_dir = NULL; - #ifdef ENABLE_USERNS_REMAP -- char* userns_remap = conf_get_isulad_userns_remap(); -+ char *userns_remap = conf_get_isulad_userns_remap(); - #endif - - merged_dir = util_path_join(layer_dir, OVERLAY_LAYER_MERGED); -@@ -852,13 +863,115 @@ out: - return ret; - } - -+#ifdef ENABLE_REMOTE_LAYER_STORE -+static int do_create_remote_ro(const char *id, const char *parent, const struct graphdriver *driver, -+ const struct driver_create_opts *create_opts) -+{ -+ int ret = 0; -+ int get_err = 0; -+ char *ro_symlink = NULL; -+ char *ro_home = NULL; -+ char *layer_dir = NULL; -+#ifdef ENABLE_USERNS_REMAP -+ char *userns_remap = conf_get_isulad_userns_remap(); -+#endif -+ -+ ro_home = util_path_join(driver->home, OVERLAY_RO_DIR); -+ if (ro_home == NULL) { -+ ERROR("Failed to join ro_home"); -+ ret = -1; -+ goto out; -+ } -+ -+ layer_dir = util_path_join(ro_home, id); -+ if (layer_dir == NULL) { -+ ERROR("Failed to join layer_dir"); -+ ret = -1; -+ goto out; -+ } -+ -+ ro_symlink = util_path_join(driver->home, id); -+ if (ro_symlink == NULL) { -+ ERROR("Failed to join ro_symlink"); -+ ret = -1; -+ goto out; -+ } -+ -+ if (layer_dir == NULL) { -+ ERROR("Failed to join layer dir:%s", id); -+ ret = -1; -+ goto out; -+ } -+ -+ if (check_parent_valid(parent, driver) != 0) { -+ ret = -1; -+ goto out; -+ } -+ -+ if (util_mkdir_p(layer_dir, 0700) != 0) { -+ ERROR("Unable to create layer directory %s.", layer_dir); -+ ret = -1; -+ goto out; -+ } -+ -+ // mk symbol link -+ if (symlink(layer_dir, ro_symlink) != 0) { -+ SYSERROR("Unable to create symbol link to layer directory %s", layer_dir); -+ ret = -1; -+ goto err_out; -+ } -+ -+#ifdef ENABLE_USERNS_REMAP -+ if (set_file_owner_for_userns_remap(layer_dir, userns_remap) != 0) { -+ ERROR("Unable to change directory %s owner for user remap.", layer_dir); -+ ret = -1; -+ goto out; -+ } -+#endif -+ -+ if (create_opts->storage_opt != NULL && create_opts->storage_opt->len != 0) { -+ if (set_layer_quota(layer_dir, create_opts->storage_opt, driver) != 0) { -+ ERROR("Unable to set layer quota %s", layer_dir); -+ ret = -1; -+ goto err_out; -+ } -+ } -+ -+ if (mk_sub_directories(id, parent, layer_dir, driver->home) != 0) { -+ ret = -1; -+ goto err_out; -+ } -+ -+ goto out; -+ -+err_out: -+ if (util_recursive_rmdir(layer_dir, 0)) { -+ ERROR("Failed to delete layer path: %s", layer_dir); -+ } -+ -+ // to remove a file -+ if (util_fileself_exists(ro_symlink) && !util_force_remove_file(ro_symlink, &get_err)) { -+ ERROR("Failed to remove symbol link %s", ro_symlink); -+ } -+ -+out: -+ free(layer_dir); -+ free(ro_home); -+ free(ro_symlink); -+#ifdef ENABLE_USERNS_REMAP -+ free(userns_remap); -+#endif -+ return ret; -+} -+#endif -+ - static int do_create(const char *id, const char *parent, const struct graphdriver *driver, - const struct driver_create_opts *create_opts) - { - int ret = 0; - char *layer_dir = NULL; - #ifdef ENABLE_USERNS_REMAP -- char* userns_remap = conf_get_isulad_userns_remap(); -+ char *userns_remap = conf_get_isulad_userns_remap(); - #endif - - layer_dir = util_path_join(driver->home, id); -@@ -1002,7 +1115,15 @@ int overlay2_create_ro(const char *id, const char *parent, const struct graphdri - return -1; - } - -+#ifdef ENABLE_REMOTE_LAYER_STORE -+ if (driver->enable_remote_layer) { -+ return do_create_remote_ro(id, parent, driver, create_opts); -+ } else { -+ return do_create(id, parent, driver, create_opts); -+ } -+#else - return do_create(id, parent, driver, create_opts); -+#endif - } - - static char *read_layer_link_file(const char *layer_dir) -@@ -1047,6 +1168,9 @@ int overlay2_rm_layer(const char *id, const struct graphdriver *driver) - char *link_id = NULL; - char link_path[PATH_MAX] = { 0 }; - char clean_path[PATH_MAX] = { 0 }; -+#ifdef ENABLE_REMOTE_LAYER_STORE -+ struct stat stat_buf; -+#endif - - if (id == NULL || driver == NULL) { - ERROR("Invalid input arguments"); -@@ -1079,11 +1203,34 @@ int overlay2_rm_layer(const char *id, const struct graphdriver *driver) - } - } - -+#ifdef ENABLE_REMOTE_LAYER_STORE -+ if (lstat(layer_dir, &stat_buf) < 0) { -+ SYSERROR("Failed to lstat path: %s", layer_dir); -+ ret = -1; -+ goto out; -+ } -+ -+ if (driver->enable_remote_layer && S_ISLNK(stat_buf.st_mode)) { -+ // jusdge if the dir is symlink? -+ if (remote_overlay_remove_ro_dir(id) != 0) { -+ ERROR("Failed to delete symlink to layer dir: %s", layer_dir); -+ ret = -1; -+ goto out; -+ } -+ } else { -+ if (util_recursive_rmdir(layer_dir, 0) != 0) { -+ SYSERROR("Failed to remove layer directory %s", layer_dir); -+ ret = -1; -+ goto out; -+ } -+ } -+#else - if (util_recursive_rmdir(layer_dir, 0) != 0) { - SYSERROR("Failed to remove layer directory %s", layer_dir); - ret = -1; - goto out; - } -+#endif - - out: - free(layer_dir); -@@ -1747,7 +1894,7 @@ int overlay2_apply_diff(const char *id, const struct graphdriver *driver, const - int ret = 0; - #ifdef ENABLE_USERNS_REMAP - unsigned int size = 0; -- char* userns_remap = conf_get_isulad_userns_remap(); -+ char *userns_remap = conf_get_isulad_userns_remap(); - #endif - char *layer_dir = NULL; - char *layer_diff = NULL; -@@ -2166,3 +2313,4 @@ out: - free(layer_diff); - return ret; - } -+ -diff --git a/src/daemon/modules/image/oci/storage/layer_store/graphdriver/overlay2/driver_overlay2.h b/src/daemon/modules/image/oci/storage/layer_store/graphdriver/overlay2/driver_overlay2.h -index e14271b1..5c1d93fb 100644 ---- a/src/daemon/modules/image/oci/storage/layer_store/graphdriver/overlay2/driver_overlay2.h -+++ b/src/daemon/modules/image/oci/storage/layer_store/graphdriver/overlay2/driver_overlay2.h -@@ -22,6 +22,9 @@ - #include - - #include "driver.h" -+#ifdef ENABLE_REMOTE_LAYER_STORE -+#include "remote_support.h" -+#endif - - struct driver_create_opts; - struct driver_mount_opts; -@@ -68,6 +71,11 @@ int overlay2_repair_lowers(const char *id, const char *parent, const struct grap - - int overlay2_get_layer_fs_info(const char *id, const struct graphdriver *driver, imagetool_fs_info *fs_info); - -+#ifdef ENABLE_REMOTE_LAYER_STORE -+remote_support *overlay_driver_impl_remote_support(void); -+bool overlay_remote_layer_valid(const char *layer_id); -+#endif -+ - #ifdef __cplusplus - } - #endif -diff --git a/src/daemon/modules/image/oci/storage/layer_store/graphdriver/overlay2/overlay_remote_impl.c b/src/daemon/modules/image/oci/storage/layer_store/graphdriver/overlay2/overlay_remote_impl.c -new file mode 100644 -index 00000000..a674a00f ---- /dev/null -+++ b/src/daemon/modules/image/oci/storage/layer_store/graphdriver/overlay2/overlay_remote_impl.c -@@ -0,0 +1,282 @@ -+/****************************************************************************** -+ * Copyright (c) Huawei Technologies Co., Ltd. 2023. All rights reserved. -+ * iSulad licensed under the Mulan PSL v2. -+ * You can use this software according to the terms and conditions of the Mulan PSL v2. -+ * You may obtain a copy of Mulan PSL v2 at: -+ * http://license.coscl.org.cn/MulanPSL2 -+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR -+ * IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR -+ * PURPOSE. -+ * See the Mulan PSL v2 for more details. -+ * Author: wangrunze -+ * Create: 2023-02-27 -+ * Description: provide remote implementation for driver overlay -+ ******************************************************************************/ -+#define _GNU_SOURCE -+#include "driver_overlay2.h" -+ -+#include -+ -+#include "map.h" -+#include "remote_support.h" -+#include "ro_symlink_maintain.h" -+#include "isula_libutils/log.h" -+#include "utils.h" -+#include "utils_array.h" -+#include "utils_file.h" -+#include "path.h" -+ -+#define OVERLAY_LINK_DIR "l" -+#define OVERLAY_LAYER_LINK "link" -+ -+struct remote_overlay_data { -+ const char *overlay_home; -+ const char *overlay_ro; -+}; -+ -+static map_t *overlay_byid_old = NULL; -+static map_t *overlay_byid_new = NULL; -+ -+static void *remote_support_create(const char *remote_home, const char *remote_ro) -+{ -+ struct remote_overlay_data *data = util_common_calloc_s(sizeof(struct remote_overlay_data)); -+ if (data == NULL) { -+ ERROR("Out of memory"); -+ return NULL; -+ } -+ data->overlay_home = remote_home; -+ data->overlay_ro = remote_ro; -+ overlay_byid_old = map_new(MAP_STR_BOOL, MAP_DEFAULT_CMP_FUNC, MAP_DEFAULT_FREE_FUNC); -+ overlay_byid_new = map_new(MAP_STR_BOOL, MAP_DEFAULT_CMP_FUNC, MAP_DEFAULT_FREE_FUNC); -+ -+ return data; -+} -+ -+static void remote_support_destroy(void *data) -+{ -+ if (data == NULL) { -+ return; -+ } -+ -+ map_free(overlay_byid_old); -+ map_free(overlay_byid_new); -+ free(data); -+} -+ -+static bool overlay_walk_dir_cb(const char *path_name, const struct dirent *sub_dir, void *context) -+{ -+ bool exist = true; -+ if (!map_insert(overlay_byid_new, util_strdup_s(sub_dir->d_name), (void *)&exist)) { -+ ERROR("can't insert remote layer into map"); -+ return false; -+ } -+ -+ return true; -+} -+ -+static int remote_support_scan(void *data) -+{ -+ struct remote_overlay_data *remote_data = data; -+ return util_scan_subdirs(remote_data->overlay_ro, overlay_walk_dir_cb, data); -+} -+ -+static int do_diff_symlink(const char *id, char *link_id, const char *driver_home) -+{ -+ int ret = 0; -+ int nret = 0; -+ char target_path[PATH_MAX] = { 0 }; -+ char link_path[PATH_MAX] = { 0 }; -+ char clean_path[PATH_MAX] = { 0 }; -+ -+ nret = snprintf(target_path, PATH_MAX, "../%s/diff", id); -+ if (nret < 0 || nret >= PATH_MAX) { -+ ERROR("Failed to get target path %s", id); -+ ret = -1; -+ goto out; -+ } -+ -+ nret = snprintf(link_path, PATH_MAX, "%s/%s/%s", driver_home, OVERLAY_LINK_DIR, link_id); -+ if (nret < 0 || nret >= PATH_MAX) { -+ ERROR("Failed to get link path %s", link_id); -+ ret = -1; -+ goto out; -+ } -+ -+ if (util_clean_path(link_path, clean_path, sizeof(clean_path)) == NULL) { -+ ERROR("failed to get clean path %s", link_path); -+ ret = -1; -+ goto out; -+ } -+ -+ if (util_fileself_exists(clean_path) && util_path_remove(clean_path) != 0) { -+ ERROR("failed to remove old symbol link"); -+ ret = -1; -+ goto out; -+ } -+ -+ nret = symlink(target_path, clean_path); -+ if (nret < 0) { -+ SYSERROR("Failed to create symlink from \"%s\" to \"%s\"", clean_path, target_path); -+ ret = -1; -+ goto out; -+ } -+ -+out: -+ return ret; -+} -+ -+static int remove_one_remote_overlay_layer(struct remote_overlay_data *data, const char *overlay_id) -+{ -+ char *ro_symlink = NULL; -+ char clean_path[PATH_MAX] = { 0 }; -+ int nret = 0; -+ int ret = 0; -+ -+ nret = asprintf(&ro_symlink, "%s/%s", data->overlay_home, overlay_id); -+ if (nret < 0 || nret > PATH_MAX) { -+ SYSERROR("Create layer symbol link path failed"); -+ ret = -1; -+ goto out; -+ } -+ -+ if (util_clean_path(ro_symlink, clean_path, sizeof(clean_path)) == NULL) { -+ ERROR("Failed to clean path: %s", ro_symlink); -+ ret = -1; -+ goto out; -+ } -+ -+ if (util_path_remove(clean_path) != 0) { -+ SYSERROR("Failed to remove link path %s", clean_path); -+ } -+ -+out: -+ free(ro_symlink); -+ return ret; -+} -+ -+static int add_one_remote_overlay_layer(struct remote_overlay_data *data, const char *overlay_id) -+{ -+ char *ro_symlink = NULL; -+ char *layer_dir = NULL; -+ char *link_file = NULL; -+ char *diff_symlink = NULL; -+ int ret = 0; -+ -+ ro_symlink = util_path_join(data->overlay_home, overlay_id); -+ if (ro_symlink == NULL) { -+ ERROR("Failed to join ro symlink path: %s", overlay_id); -+ ret = -1; -+ goto free_out; -+ } -+ -+ layer_dir = util_path_join(data->overlay_ro, overlay_id); -+ if (layer_dir == NULL) { -+ ERROR("Failed to join ro layer dir: %s", overlay_id); -+ ret = -1; -+ goto free_out; -+ } -+ -+ // add RO symbol link first -+ if (!util_fileself_exists(ro_symlink) && symlink(layer_dir, ro_symlink) != 0) { -+ SYSERROR("Unable to create symbol link to layer directory: %s", layer_dir); -+ ret = -1; -+ goto free_out; -+ } -+ -+ // maintain link -+ // try read link file in layer_dir -+ // mk symlink between ro_symlink -+ link_file = util_path_join(layer_dir, OVERLAY_LAYER_LINK); -+ if (link_file == NULL) { -+ ERROR("Failed to get layer link file %s", layer_dir); -+ ret = -1; -+ goto free_out; -+ } -+ -+ if (!util_fileself_exists(link_file)) { -+ ERROR("link file for layer %s not exist", layer_dir); -+ ret = -1; -+ goto free_out; -+ } -+ -+ diff_symlink = util_read_content_from_file(link_file); -+ if (link_file == NULL) { -+ ERROR("Failed to read content from link file of layer %s", layer_dir); -+ ret = -1; -+ goto free_out; -+ } -+ -+ if (do_diff_symlink(overlay_id, diff_symlink, data->overlay_home) != 0) { -+ ERROR("Failed to add diff link for layer %s", overlay_id); -+ ret = -1; -+ } -+ -+free_out: -+ free(ro_symlink); -+ free(layer_dir); -+ free(link_file); -+ free(diff_symlink); -+ -+ return ret; -+} -+ -+static int remote_support_add(void *data) -+{ -+ int ret = 0; -+ char **array_added = NULL; -+ char **array_deleted = NULL; -+ map_t *tmp_map = NULL; -+ int i = 0; -+ -+ if (data == NULL) { -+ return -1; -+ } -+ -+ array_added = added_layers(overlay_byid_old, overlay_byid_new); -+ array_deleted = deleted_layers(overlay_byid_old, overlay_byid_new); -+ -+ for (i = 0; i < util_array_len((const char **)array_added); i++) { -+ if (add_one_remote_overlay_layer(data, array_added[i]) != 0) { -+ ERROR("Failed to add remote overlay layer: %s", array_added[i]); -+ ret = -1; -+ } -+ } -+ -+ for (i = 0; i < util_array_len((const char **)array_deleted); i++) { -+ if (remove_one_remote_overlay_layer(data, array_deleted[i]) != 0) { -+ ERROR("Failed to delete remote overlay layer: %s", array_deleted[i]); -+ ret = -1; -+ } -+ } -+ -+ tmp_map = overlay_byid_old; -+ overlay_byid_old = overlay_byid_new; -+ overlay_byid_new = tmp_map; -+ empty_map(overlay_byid_new); -+ -+ util_free_array(array_added); -+ util_free_array(array_deleted); -+ -+ return ret; -+} -+ -+remote_support *overlay_driver_impl_remote_support(void) -+{ -+ remote_support *rs = util_common_calloc_s(sizeof(remote_support)); -+ if (rs == NULL) { -+ ERROR("Failed to calloc overlay supporter"); -+ return NULL; -+ } -+ -+ rs->create = remote_support_create; -+ rs->destroy = remote_support_destroy; -+ rs->scan_remote_dir = remote_support_scan; -+ rs->load_item = remote_support_add; -+ -+ return rs; -+} -+ -+bool overlay_remote_layer_valid(const char *layer_id) -+{ -+ return map_search(overlay_byid_old, (void *)layer_id) != NULL; -+} -diff --git a/src/daemon/modules/image/oci/storage/layer_store/layer_remote_impl.c b/src/daemon/modules/image/oci/storage/layer_store/layer_remote_impl.c -new file mode 100644 -index 00000000..d03fc20b ---- /dev/null -+++ b/src/daemon/modules/image/oci/storage/layer_store/layer_remote_impl.c -@@ -0,0 +1,219 @@ -+/****************************************************************************** -+ * Copyright (c) Huawei Technologies Co., Ltd. 2023. All rights reserved. -+ * iSulad licensed under the Mulan PSL v2. -+ * You can use this software according to the terms and conditions of the Mulan PSL v2. -+ * You may obtain a copy of Mulan PSL v2 at: -+ * http://license.coscl.org.cn/MulanPSL2 -+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR -+ * IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR -+ * PURPOSE. -+ * See the Mulan PSL v2 for more details. -+ * Author: wangrunze -+ * Create: 2023-02-27 -+ * Description: remote layer store implementation -+ ******************************************************************************/ -+#define _GNU_SOURCE -+#include "layer_store.h" -+ -+#include -+#include -+#include -+ -+#include "map.h" -+#include "utils.h" -+#include "remote_support.h" -+#include "ro_symlink_maintain.h" -+#include "path.h" -+#include "driver_overlay2.h" -+ -+struct remote_layer_data { -+ const char *layer_home; -+ const char *layer_ro; -+}; -+ -+static map_t *layer_byid_old = NULL; -+static map_t *layer_byid_new = NULL; -+ -+static void *remote_support_create(const char *layer_home, const char *layer_ro) -+{ -+ struct remote_layer_data *data = util_common_calloc_s(sizeof(struct remote_layer_data)); -+ if (data == NULL) { -+ ERROR("Out of memory"); -+ return NULL; -+ } -+ data->layer_home = util_strdup_s(layer_home); -+ data->layer_ro = util_strdup_s(layer_ro); -+ layer_byid_old = map_new(MAP_STR_BOOL, MAP_DEFAULT_CMP_FUNC, MAP_DEFAULT_FREE_FUNC); -+ layer_byid_new = map_new(MAP_STR_BOOL, MAP_DEFAULT_CMP_FUNC, MAP_DEFAULT_FREE_FUNC); -+ -+ return data; -+}; -+ -+static void remote_support_destroy(void *data) -+{ -+ if (data == NULL) { -+ return; -+ } -+ -+ map_free(layer_byid_old); -+ map_free(layer_byid_new); -+ free(data); -+} -+ -+static bool layer_walk_dir_cb(const char *path_name, const struct dirent *sub_dir, void *context) -+{ -+ bool exist = true; -+ -+ if (!map_insert(layer_byid_new, util_strdup_s(sub_dir->d_name), (void *)&exist)) { -+ ERROR("can't insert remote layer into map"); -+ return false; -+ } -+ -+ return true; -+} -+ -+static int remote_support_scan(void *data) -+{ -+ struct remote_layer_data *remote_data = data; -+ return util_scan_subdirs(remote_data->layer_ro, layer_walk_dir_cb, data); -+} -+ -+static int remove_one_remote_layer(struct remote_layer_data *data, char *layer_id) -+{ -+ char *ro_symlink = NULL; -+ char clean_path[PATH_MAX] = { 0 }; -+ int nret = 0; -+ int ret = 0; -+ -+ nret = asprintf(&ro_symlink, "%s/%s", data->layer_home, layer_id); -+ if (nret < 0 || nret > PATH_MAX) { -+ SYSERROR("Create layer symbol link path failed"); -+ ret = -1; -+ goto out; -+ } -+ -+ if (util_clean_path(ro_symlink, clean_path, sizeof(clean_path)) == NULL) { -+ ERROR("Failed to clean path: %s", ro_symlink); -+ ret = -1; -+ goto out; -+ } -+ -+ if (util_path_remove(clean_path) != 0) { -+ SYSERROR("Failed to remove link path %s", clean_path); -+ } -+ -+ if (remove_memory_stores_with_lock(layer_id) != 0) { -+ ERROR("Failed to remove remote layer store memory"); -+ ret = -1; -+ } -+ -+out: -+ free(ro_symlink); -+ return ret; -+ -+} -+ -+static int add_one_remote_layer(struct remote_layer_data *data, char *layer_id) -+{ -+ char *ro_symlink = NULL; -+ char *layer_dir = NULL; -+ int ret = 0; -+ -+ ro_symlink = util_path_join(data->layer_home, layer_id); -+ layer_dir = util_path_join(data->layer_ro, layer_id); -+ -+ if (ro_symlink == NULL) { -+ ERROR("Failed to join ro symlink path: %s", layer_id); -+ ret = -1; -+ goto free_out; -+ } -+ -+ if (layer_dir == NULL) { -+ ERROR("Failed to join ro layer dir: %s", layer_id); -+ ret = -1; -+ goto free_out; -+ } -+ // add symbol link first -+ if (!util_fileself_exists(ro_symlink) && symlink(layer_dir, ro_symlink) != 0) { -+ SYSERROR("Unable to create symbol link to layer directory: %s", layer_dir); -+ ret = -1; -+ goto free_out; -+ } -+ // insert layer into memory -+ if (load_one_layer(layer_id) != 0) { -+ ERROR("Failed to load new layer: %s into memory", layer_id); -+ ret = -1; -+ } -+ -+free_out: -+ free(ro_symlink); -+ free(layer_dir); -+ -+ return ret; -+} -+ -+static int remote_support_add(void *data) -+{ -+ int ret = 0; -+ char **array_added = NULL; -+ char **array_deleted = NULL; -+ map_t *tmp_map = NULL; -+ int i = 0; -+ -+ if (data == NULL) { -+ return -1; -+ } -+ -+ array_added = added_layers(layer_byid_old, layer_byid_new); -+ array_deleted = deleted_layers(layer_byid_old, layer_byid_new); -+ -+ for (i = 0; i < util_array_len((const char **)array_added); i++) { -+ if (!overlay_remote_layer_valid(array_added[i]) != 0) { -+ map_remove(layer_byid_new, (void *)array_added[i]); -+ ERROR("remote overlay layer current not valid: %s", array_added[i]); -+ continue; -+ } -+ -+ if (add_one_remote_layer(data, array_added[i]) != 0) { -+ ERROR("Failed to add remote overlay layer: %s", array_added[i]); -+ ret = -1; -+ } -+ } -+ -+ for (i = 0; i < util_array_len((const char **)array_deleted); i++) { -+ if (remove_one_remote_layer(data, array_deleted[i]) != 0) { -+ ERROR("Failed to delete remote overlay layer: %s", array_deleted[i]); -+ ret = -1; -+ } -+ } -+ -+ tmp_map = layer_byid_old; -+ layer_byid_old = layer_byid_new; -+ layer_byid_new = tmp_map; -+ empty_map(layer_byid_new); -+ -+ util_free_array(array_added); -+ util_free_array(array_deleted); -+ -+ return ret; -+} -+ -+remote_support *layer_store_impl_remote_support() -+{ -+ remote_support *rs = util_common_calloc_s(sizeof(remote_support)); -+ if (rs == NULL) { -+ return NULL; -+ } -+ -+ rs->create = remote_support_create; -+ rs->destroy = remote_support_destroy; -+ rs->scan_remote_dir = remote_support_scan; -+ rs->load_item = remote_support_add; -+ -+ return rs; -+} -+ -+bool layer_remote_layer_valid(const char *layer_id) -+{ -+ return map_search(layer_byid_old, (void *)layer_id) != NULL; -+} -diff --git a/src/daemon/modules/image/oci/storage/layer_store/layer_store.c b/src/daemon/modules/image/oci/storage/layer_store/layer_store.c -index 89b4f58c..c00c3356 100644 ---- a/src/daemon/modules/image/oci/storage/layer_store/layer_store.c -+++ b/src/daemon/modules/image/oci/storage/layer_store/layer_store.c -@@ -30,7 +30,6 @@ - #include - #include - #include -- - #include - #include - -@@ -48,6 +47,10 @@ - #include "http.h" - #include "utils_base64.h" - #include "constants.h" -+#include "path.h" -+#ifdef ENABLE_REMOTE_LAYER_STORE -+#include "ro_symlink_maintain.h" -+#endif - - #define PAYLOAD_CRC_LEN 12 - -@@ -74,6 +77,9 @@ typedef struct { - static layer_store_metadata g_metadata; - static char *g_root_dir; - static char *g_run_dir; -+#ifdef ENABLE_REMOTE_LAYER_STORE -+static bool g_enable_remote_layer; -+#endif - - static inline char *tar_split_path(const char *id); - static inline char *mountpoint_json_path(const char *id); -@@ -127,7 +133,7 @@ void layer_store_cleanup() - map_free(g_metadata.by_uncompress_digest); - g_metadata.by_uncompress_digest = NULL; - -- linked_list_for_each_safe(item, &(g_metadata.layers_list), next) { -+ linked_list_for_each_safe (item, &(g_metadata.layers_list), next) { - linked_list_del(item); - layer_ref_dec((layer_t *)item->elem); - free(item); -@@ -158,7 +164,7 @@ static void free_digest_layer_t(digest_layer_t *ptr) - return; - } - -- linked_list_for_each_safe(item, &(ptr->layer_list), next) { -+ linked_list_for_each_safe (item, &(ptr->layer_list), next) { - linked_list_del(item); - free(item->elem); - item->elem = NULL; -@@ -272,6 +278,10 @@ static bool init_from_conf(const struct storage_module_init_options *conf) - g_root_dir = tmp_path; - tmp_path = NULL; - -+#ifdef ENABLE_REMOTE_LAYER_STORE -+ g_enable_remote_layer = conf->enable_remote_layer; -+#endif -+ - return true; - free_out: - free(g_run_dir); -@@ -609,7 +619,7 @@ static int delete_digest_from_map(map_t *by_digest, const char *digest, const ch - return 0; - } - -- linked_list_for_each_safe(item, &(old_list->layer_list), next) { -+ linked_list_for_each_safe (item, &(old_list->layer_list), next) { - char *t_id = (char *)item->elem; - if (strcmp(t_id, id) == 0) { - linked_list_del(item); -@@ -722,7 +732,7 @@ static int remove_memory_stores(const char *id) - } - } - -- linked_list_for_each_safe(item, &(g_metadata.layers_list), next) { -+ linked_list_for_each_safe (item, &(g_metadata.layers_list), next) { - layer_t *tl = (layer_t *)item->elem; - if (strcmp(tl->slayer->id, id) != 0) { - continue; -@@ -1115,10 +1125,25 @@ static int new_layer_by_opts(const char *id, const struct layer_opts *opts) - ret = -1; - goto out; - } -+ -+#ifdef ENABLE_REMOTE_LAYER_STORE -+ if (g_enable_remote_layer && !opts->writable) { -+ if (remote_layer_build_ro_dir(id) != 0) { -+ ret = -1; -+ goto out; -+ } -+ } else { -+ if (!build_layer_dir(id)) { -+ ret = -1; -+ goto out; -+ } -+ } -+#else - if (!build_layer_dir(id)) { - ret = -1; - goto out; - } -+#endif - - ret = update_layer_datas(id, opts, l); - if (ret != 0) { -@@ -1300,7 +1325,15 @@ clear_memory: - driver_remove: - if (ret != 0) { - (void)graphdriver_rm_layer(lid); -+#ifdef ENABLE_REMOTE_LAYER_STORE -+ if (g_enable_remote_layer) { -+ (void)remote_layer_remove_ro_dir(lid); -+ } else { -+ (void)layer_store_remove_layer(lid); -+ } -+#else - (void)layer_store_remove_layer(lid); -+#endif - } - free_out: - layer_store_unlock(); -@@ -1375,7 +1408,15 @@ static int do_delete_layer(const char *id) - goto free_out; - } - -+#ifdef ENABLE_REMOTE_LAYER_STORE -+ if (l->slayer->writable) { -+ ret = layer_store_remove_layer(l->slayer->id); -+ } else { -+ ret = remote_layer_remove_ro_dir(l->slayer->id); -+ } -+#else - ret = layer_store_remove_layer(l->slayer->id); -+#endif - - free_out: - free(tspath); -@@ -1457,7 +1498,7 @@ int layer_store_list(struct layer_list *resp) - goto unlock; - } - -- linked_list_for_each_safe(item, &(g_metadata.layers_list), next) { -+ linked_list_for_each_safe (item, &(g_metadata.layers_list), next) { - layer_t *l = (layer_t *)item->elem; - resp->layers[i] = util_common_calloc_s(sizeof(struct layer)); - if (resp->layers[i] == NULL) { -@@ -1500,7 +1541,7 @@ static int layers_by_digest_map(map_t *m, const char *digest, struct layer_list - goto free_out; - } - -- linked_list_for_each_safe(item, &(id_list->layer_list), next) { -+ linked_list_for_each_safe (item, &(id_list->layer_list), next) { - layer_t *l = NULL; - resp->layers[i] = util_common_calloc_s(sizeof(struct layer)); - if (resp->layers[i] == NULL) { -@@ -1744,6 +1785,114 @@ out: - return ret; - } - -+static layer_t *load_one_layer_from_json(const char *id) -+{ -+ int nret = 0; -+ char *mount_point_path = NULL; -+ char tmpdir[PATH_MAX] = { 0 }; -+ char *rpath = NULL; -+ layer_t *l = NULL; -+ bool layer_valid = false; -+ -+ nret = snprintf(tmpdir, PATH_MAX, "%s/%s", g_root_dir, id); -+ if (nret < 0 || nret >= PATH_MAX) { -+ ERROR("Sprintf: %s failed", id); -+ goto free_out; -+ } -+ -+ mount_point_path = mountpoint_json_path(id); -+ if (mount_point_path == NULL) { -+ ERROR("Out of Memory"); -+ goto free_out; -+ } -+ -+ rpath = layer_json_path(id); -+ if (rpath == NULL) { -+ ERROR("%s is invalid layer", id); -+ goto free_out; -+ } -+ -+ l = load_layer(rpath, mount_point_path); -+ if (l == NULL) { -+ ERROR("load layer: %s failed, remove it", id); -+ goto free_out; -+ } -+ -+ if (do_validate_image_layer(tmpdir, l) != 0) { -+ ERROR("%s is invalid image layer", id); -+ goto free_out; -+ } -+ -+ if (do_validate_rootfs_layer(l) != 0) { -+ ERROR("%s is invalid rootfs layer", id); -+ goto free_out; -+ } -+ -+ layer_valid = true; -+ -+free_out: -+ free(rpath); -+ free(mount_point_path); -+ if (!layer_valid) { -+ free_layer_t(l); -+ l = NULL; -+ } -+ // always return true; -+ // if load layer failed, just remove it -+ return l; -+} -+ -+int load_one_layer(const char *id) -+{ -+ int ret = 0; -+ layer_t *tl = NULL; -+ int i = 0; -+ -+ if (!layer_store_lock(true)) { -+ return -1; -+ } -+ -+ tl = load_one_layer_from_json(id); -+ if (tl == NULL) { -+ ret = -1; -+ goto unlock_out; -+ } -+ -+ if (!map_insert(g_metadata.by_id, (void *)tl->slayer->id, (void *)tl)) { -+ ERROR("Insert id: %s for layer failed", tl->slayer->id); -+ ret = -1; -+ goto unlock_out; -+ } -+ -+ for (; i < tl->slayer->names_len; i++) { -+ // this should be done by master isulad -+ // if (remove_name(tl->slayer->names[i])) { -+ // should_save = true; -+ // } -+ if (!map_insert(g_metadata.by_name, (void *)tl->slayer->names[i], (void *)tl)) { -+ ret = -1; -+ ERROR("Insert name: %s for layer failed", tl->slayer->names[i]); -+ goto unlock_out; -+ } -+ } -+ ret = insert_digest_into_map(g_metadata.by_compress_digest, tl->slayer->compressed_diff_digest, tl->slayer->id); -+ if (ret != 0) { -+ ERROR("update layer: %s compress failed", tl->slayer->id); -+ goto unlock_out; -+ } -+ -+ ret = insert_digest_into_map(g_metadata.by_uncompress_digest, tl->slayer->diff_digest, tl->slayer->id); -+ if (ret != 0) { -+ ERROR("update layer: %s uncompress failed", tl->slayer->id); -+ goto unlock_out; -+ } -+ -+ ret = 0; -+unlock_out: -+ layer_store_unlock(); -+ return ret; -+} -+ - static bool load_layer_json_cb(const char *path_name, const struct dirent *sub_dir, void *context) - { - #define LAYER_NAME_LEN 64 -@@ -1760,6 +1909,14 @@ static bool load_layer_json_cb(const char *path_name, const struct dirent *sub_d - goto free_out; - } - -+#ifdef ENABLE_REMOTE_LAYER_STORE -+ // skip RO dir -+ // otherwise, RO dir will be treat as invalid layer dir -+ if (strcmp(sub_dir->d_name, REMOTE_RO_LAYER_DIR) == 0) { -+ goto free_out; -+ } -+#endif -+ - if (!util_dir_exists(tmpdir)) { - // ignore non-dir - DEBUG("%s is not directory", sub_dir->d_name); -@@ -1846,7 +2003,7 @@ static int load_layers_from_json_files() - goto unlock_out; - } - -- linked_list_for_each_safe(item, &(g_metadata.layers_list), next) { -+ linked_list_for_each_safe (item, &(g_metadata.layers_list), next) { - layer_t *tl = (layer_t *)item->elem; - size_t i = 0; - -@@ -1953,6 +2110,13 @@ int layer_store_init(const struct storage_module_init_options *conf) - goto free_out; - } - -+#ifdef ENABLE_REMOTE_LAYER_STORE -+ if (g_enable_remote_layer && remote_layer_init(g_root_dir) != 0) { -+ ERROR("Failed to init layer remote"); -+ goto free_out; -+ } -+#endif -+ - if (load_layers_from_json_files() != 0) { - goto free_out; - } -@@ -2125,7 +2289,7 @@ static tar_split *new_tar_split(layer_t *l, const char *tspath) - int ret = 0; - int nret = 0; - tar_split *ts = NULL; -- char path[PATH_MAX] = {0}; -+ char path[PATH_MAX] = { 0 }; - - ts = util_common_calloc_s(sizeof(tar_split)); - if (ts == NULL) { -@@ -2308,3 +2472,20 @@ container_inspect_graph_driver *layer_store_get_metadata_by_layer_id(const char - { - return graphdriver_get_metadata(id); - } -+ -+#ifdef ENABLE_REMOTE_LAYER_STORE -+int remove_memory_stores_with_lock(const char *id) -+{ -+ int ret = 0; -+ -+ if (!layer_store_lock(true)) { -+ ERROR("Failed to lock layer store when handle: %s", id); -+ return -1; -+ } -+ -+ ret = remove_memory_stores(id); -+ layer_store_unlock(); -+ -+ return ret; -+} -+#endif -diff --git a/src/daemon/modules/image/oci/storage/layer_store/layer_store.h b/src/daemon/modules/image/oci/storage/layer_store/layer_store.h -index 94d4bf04..44bd297e 100644 ---- a/src/daemon/modules/image/oci/storage/layer_store/layer_store.h -+++ b/src/daemon/modules/image/oci/storage/layer_store/layer_store.h -@@ -23,6 +23,10 @@ - - #include "storage.h" - #include "io_wrapper.h" -+#include "map.h" -+#ifdef ENABLE_REMOTE_LAYER_STORE -+#include "remote_support.h" -+#endif - - struct io_read_wrapper; - struct layer_list; -@@ -79,6 +83,13 @@ int layer_store_check(const char *id); - - container_inspect_graph_driver *layer_store_get_metadata_by_layer_id(const char *id); - -+#ifdef ENABLE_REMOTE_LAYER_STORE -+remote_support *layer_store_impl_remote_support(); -+bool layer_remote_layer_valid(const char *layer_id); -+int load_one_layer(const char *id); -+int remove_memory_stores_with_lock(const char *id); -+#endif -+ - #ifdef __cplusplus - } - #endif -diff --git a/src/daemon/modules/image/oci/storage/remote_layer_support/CMakeLists.txt b/src/daemon/modules/image/oci/storage/remote_layer_support/CMakeLists.txt -new file mode 100644 -index 00000000..06c78678 ---- /dev/null -+++ b/src/daemon/modules/image/oci/storage/remote_layer_support/CMakeLists.txt -@@ -0,0 +1,12 @@ -+# get current directory sources files -+aux_source_directory(${CMAKE_CURRENT_SOURCE_DIR} local_remote_layer_support_srcs) -+ -+set(REMOTE_LAYER_SUPPORT_SRCS -+ ${local_remote_layer_support_srcs} -+ PARENT_SCOPE -+ ) -+ -+set(REMOTE_LAYER_SUPPORT_INCS -+ ${CMAKE_CURRENT_SOURCE_DIR} -+ PARENT_SCOPE -+) -\ No newline at end of file -diff --git a/src/daemon/modules/image/oci/storage/remote_layer_support/remote_support.c b/src/daemon/modules/image/oci/storage/remote_layer_support/remote_support.c -new file mode 100644 -index 00000000..9dc096f7 ---- /dev/null -+++ b/src/daemon/modules/image/oci/storage/remote_layer_support/remote_support.c -@@ -0,0 +1,122 @@ -+/****************************************************************************** -+ * Copyright (c) Huawei Technologies Co., Ltd. 2020-2020. All rights reserved. -+ * iSulad licensed under the Mulan PSL v2. -+ * You can use this software according to the terms and conditions of the Mulan PSL v2. -+ * You may obtain a copy of Mulan PSL v2 at: -+ * http://license.coscl.org.cn/MulanPSL2 -+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR -+ * IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR -+ * PURPOSE. -+ * See the Mulan PSL v2 for more details. -+ * Author: wangrunze -+ * Create: 2023-03-03 -+ * Description: provide image store functions -+ ******************************************************************************/ -+ -+#include "remote_support.h" -+ -+#include "layer_store.h" -+#include "image_store.h" -+#include "isula_libutils/log.h" -+#include "driver_overlay2.h" -+#include "utils.h" -+ -+remote_supporter *create_layer_supporter(const char *remote_home, const char *remote_ro) -+{ -+ remote_support *handlers = layer_store_impl_remote_support(); -+ if (handlers == NULL || handlers->create == NULL) { -+ return NULL; -+ } -+ -+ remote_supporter *supporter = (remote_supporter *)util_common_calloc_s(sizeof(remote_supporter)); -+ if (supporter == NULL) { -+ goto err_out; -+ } -+ -+ supporter->handlers = handlers; -+ supporter->data = handlers->create(remote_home, remote_ro); -+ -+ return supporter; -+ -+err_out: -+ free(handlers); -+ free(supporter); -+ return NULL; -+} -+ -+remote_supporter *create_image_supporter(const char *remote_home, const char *remote_ro) -+{ -+ remote_support *handlers = image_store_impl_remote_support(); -+ if (handlers == NULL || handlers->create == NULL) { -+ return NULL; -+ } -+ -+ remote_supporter *supporter = (remote_supporter *)util_common_calloc_s(sizeof(remote_supporter)); -+ if (supporter == NULL) { -+ goto err_out; -+ } -+ -+ supporter->handlers = handlers; -+ supporter->data = handlers->create(remote_home, remote_ro); -+ -+ return supporter; -+ -+err_out: -+ free(handlers); -+ free(supporter); -+ return NULL; -+} -+ -+remote_supporter *create_overlay_supporter(const char *remote_home, const char *remote_ro) -+{ -+ remote_support *handlers = overlay_driver_impl_remote_support(); -+ if (handlers == NULL || handlers->create == NULL) { -+ return NULL; -+ } -+ -+ remote_supporter *supporter = (remote_supporter *)util_common_calloc_s(sizeof(remote_supporter)); -+ if (supporter == NULL) { -+ goto err_out; -+ } -+ -+ supporter->handlers = handlers; -+ supporter->data = handlers->create(remote_home, remote_ro); -+ -+ return supporter; -+ -+err_out: -+ free(handlers); -+ free(supporter); -+ return NULL; -+ -+} -+ -+void destroy_suppoter(remote_supporter *supporter) -+{ -+ if (supporter->handlers->destroy == NULL) { -+ ERROR("destroy_supporter operation not supported"); -+ return; -+ } -+ -+ supporter->handlers->destroy(supporter->data); -+ free(supporter->handlers); -+ free(supporter); -+} -+ -+int scan_remote_dir(remote_supporter *supporter) -+{ -+ if (supporter->handlers->scan_remote_dir == NULL) { -+ ERROR("scan_remote_dir operation not supported"); -+ return -1; -+ } -+ return supporter->handlers->scan_remote_dir(supporter->data); -+} -+ -+int load_item(remote_supporter *supporter) -+{ -+ if (supporter->handlers->scan_remote_dir == NULL) { -+ ERROR("load_item operation not supported"); -+ return -1; -+ } -+ return supporter->handlers->load_item(supporter->data); -+} -diff --git a/src/daemon/modules/image/oci/storage/remote_layer_support/remote_support.h b/src/daemon/modules/image/oci/storage/remote_layer_support/remote_support.h -new file mode 100644 -index 00000000..d1f7af35 ---- /dev/null -+++ b/src/daemon/modules/image/oci/storage/remote_layer_support/remote_support.h -@@ -0,0 +1,58 @@ -+/****************************************************************************** -+ * Copyright (c) Huawei Technologies Co., Ltd. 2020-2023. All rights reserved. -+ * iSulad licensed under the Mulan PSL v2. -+ * You can use this software according to the terms and conditions of the Mulan PSL v2. -+ * You may obtain a copy of Mulan PSL v2 at: -+ * http://license.coscl.org.cn/MulanPSL2 -+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR -+ * IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR -+ * PURPOSE. -+ * See the Mulan PSL v2 for more details. -+ * Author: wangrunze -+ * Create: 2023-03-03 -+ * Description: provide remote support functions -+ ******************************************************************************/ -+ -+#ifndef DAEMON_MODULES_IMAGE_OCI_STORAGE_LAYER_STORE_REMOTE_LAYER_SUPPORT_REMOTE_SUPPORT_H -+#define DAEMON_MODULES_IMAGE_OCI_STORAGE_LAYER_STORE_REMOTE_LAYER_SUPPORT_REMOTE_SUPPORT_H -+ -+#include "linked_list.h" -+#define REMOTE_RO_LAYER_DIR "RO" -+#define OVERLAY_RO_DIR "RO" -+ -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+typedef struct { -+ void *(*create)(const char *remote_home, const char *remote_ro); -+ void (*destroy)(void *data); -+ // populate the list contains all dirs -+ int (*scan_remote_dir)(void *data); -+ // consume the list contains all dirs -+ int (*load_item)(void *data); -+} remote_support; -+ -+typedef struct { -+ void *data; -+ remote_support *handlers; -+} remote_supporter; -+ -+// RemoteSupport *impl_remote_support(); -+remote_supporter *create_image_supporter(const char *remote_home, const char *remote_ro); -+ -+remote_supporter *create_layer_supporter(const char *remote_home, const char *remote_ro); -+ -+remote_supporter *create_overlay_supporter(const char *remote_home, const char *remote_ro); -+ -+void destroy_suppoter(remote_supporter *supporter); -+ -+int scan_remote_dir(remote_supporter *supporter); -+ -+int load_item(remote_supporter *supporter); -+ -+#ifdef __cplusplus -+} -+#endif -+ -+#endif -diff --git a/src/daemon/modules/image/oci/storage/remote_layer_support/ro_symlink_maintain.c b/src/daemon/modules/image/oci/storage/remote_layer_support/ro_symlink_maintain.c -new file mode 100644 -index 00000000..7df7a221 ---- /dev/null -+++ b/src/daemon/modules/image/oci/storage/remote_layer_support/ro_symlink_maintain.c -@@ -0,0 +1,347 @@ -+/****************************************************************************** -+ * Copyright (c) Huawei Technologies Co., Ltd. 2023. All rights reserved. -+ * iSulad licensed under the Mulan PSL v2. -+ * You can use this software according to the terms and conditions of the Mulan PSL v2. -+ * You may obtain a copy of Mulan PSL v2 at: -+ * http://license.coscl.org.cn/MulanPSL2 -+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR -+ * IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR -+ * PURPOSE. -+ * See the Mulan PSL v2 for more details. -+ * Author: wangrunze -+ * Create: 2023-01-12 -+ * Description: provide remote symlink maintain functions -+ ******************************************************************************/ -+#define _GNU_SOURCE -+#include "ro_symlink_maintain.h" -+ -+#include -+#include -+#include -+#include -+#include "map.h" -+#include "path.h" -+#include "linked_list.h" -+#include "layer_store.h" -+#include "layer.h" -+#include "isula_libutils/log.h" -+#include "image_store.h" -+#include "remote_support.h" -+#include "utils.h" -+#include "utils_file.h" -+#include "stdlib.h" -+ -+#define REMOTE_RO_LAYER_DIR "RO" -+ -+// overlay-layers and overlay-layers/RO -+static char *image_home; -+ -+static char *layer_ro_dir; -+static char *layer_home; -+ -+// overlay and overlay/RO -+static char *overlay_ro_dir; -+static char *overlay_home; -+ -+struct supporters { -+ remote_supporter *image_supporter; -+ remote_supporter *layer_supporter; -+ remote_supporter *overlay_supporter; -+}; -+ -+static struct supporters supporters; -+ -+int remote_image_init(const char *root_dir) -+{ -+ if (root_dir == NULL) { -+ goto out; -+ } -+ -+ image_home = util_strdup_s(root_dir); -+ if (image_home == NULL) { -+ ERROR("Failed create path for remote image home"); -+ goto out; -+ } -+ return 0; -+ -+out: -+ remote_maintain_cleanup(); -+ return -1; -+} -+ -+int remote_layer_init(const char *root_dir) -+{ -+ if (root_dir == NULL) { -+ goto out; -+ } -+ -+ layer_home = util_strdup_s(root_dir); -+ layer_ro_dir = util_path_join(root_dir, REMOTE_RO_LAYER_DIR); -+ if (layer_ro_dir == NULL) { -+ ERROR("Failed join path when init remote layer maintainer"); -+ goto out; -+ } -+ if (!util_file_exists(layer_ro_dir) && util_mkdir_p(layer_ro_dir, 0700) != 0) { -+ ERROR("Failed to create RO dir under overlay"); -+ goto out; -+ } -+ -+ return 0; -+ -+out: -+ remote_maintain_cleanup(); -+ return -1; -+} -+ -+int remote_overlay_init(const char *driver_home) -+{ -+ if (driver_home == NULL) { -+ goto out; -+ } -+ -+ overlay_home = util_strdup_s(driver_home); -+ overlay_ro_dir = util_path_join(driver_home, REMOTE_RO_LAYER_DIR); -+ if (overlay_ro_dir == NULL) { -+ ERROR("Failed to join path when init remote maintainer"); -+ goto out; -+ } -+ // build RO dir if not exist -+ if (!util_file_exists(overlay_ro_dir) && util_mkdir_p(overlay_ro_dir, 0700) != 0) { -+ ERROR("Failed to create RO dir under overlay"); -+ goto out; -+ } -+ -+ return 0; -+ -+out: -+ remote_maintain_cleanup(); -+ return -1; -+} -+ -+void remote_maintain_cleanup(void) -+{ -+ free(image_home); -+ image_home = NULL; -+ -+ free(layer_home); -+ layer_home = NULL; -+ free(layer_ro_dir); -+ layer_ro_dir = NULL; -+ free(overlay_home); -+ -+ overlay_home = NULL; -+ free(overlay_ro_dir); -+ overlay_ro_dir = NULL; -+} -+ -+// to maintain the symbol links, add new symbol link and delete invalid symbol link -+// arg is const char *driver_home -+// scanning driver->home/RO/ directory, build symlink in driver->home -+static void *remote_refresh_ro_symbol_link(void *arg) -+{ -+ struct supporters *supporters = (struct supporters *)arg; -+ prctl(PR_SET_NAME, "RoLayerRefresh"); -+ -+ while (true) { -+ util_usleep_nointerupt(5 * 1000 * 1000); -+ DEBUG("remote refresh start\n"); -+ scan_remote_dir(supporters->overlay_supporter); -+ load_item(supporters->overlay_supporter); -+ scan_remote_dir(supporters->layer_supporter); -+ load_item(supporters->layer_supporter); -+ scan_remote_dir(supporters->image_supporter); -+ load_item(supporters->image_supporter); -+ DEBUG("remote refresh end\n"); -+ } -+ return NULL; -+} -+ -+int start_refresh_thread(void) -+{ -+ int res = 0; -+ pthread_t a_thread; -+ -+ supporters.image_supporter = create_image_supporter(image_home, NULL); -+ if (supporters.image_supporter == NULL) { -+ goto free_out; -+ } -+ -+ supporters.layer_supporter = create_layer_supporter(layer_home, layer_ro_dir); -+ if (supporters.layer_supporter == NULL) { -+ goto free_out; -+ } -+ -+ supporters.overlay_supporter = create_overlay_supporter(overlay_home, overlay_ro_dir); -+ if (supporters.overlay_supporter == NULL) { -+ goto free_out; -+ } -+ -+ res = pthread_create(&a_thread, NULL, remote_refresh_ro_symbol_link, (void *)&supporters); -+ if (res != 0) { -+ CRIT("Thread creation failed"); -+ return -1; -+ } -+ -+ if (pthread_detach(a_thread) != 0) { -+ SYSERROR("Failed to detach 0x%lx", a_thread); -+ return -1; -+ } -+ -+ return 0; -+ -+free_out: -+ destroy_suppoter(supporters.image_supporter); -+ destroy_suppoter(supporters.layer_supporter); -+ destroy_suppoter(supporters.overlay_supporter); -+ -+ return -1; -+} -+ -+static int do_build_ro_dir(const char *home, const char *id) -+{ -+ char *ro_symlink = NULL; -+ char *ro_layer_dir = NULL; -+ int nret = 0; -+ // bool ret = true; -+ int ret = 0; -+ -+ nret = asprintf(&ro_symlink, "%s/%s", home, id); -+ if (nret < 0 || nret > PATH_MAX) { -+ SYSERROR("Failed create ro layer dir sym link path"); -+ return -1; -+ } -+ -+ nret = asprintf(&ro_layer_dir, "%s/%s/%s", home, REMOTE_RO_LAYER_DIR, id); -+ if (nret < 0 || nret > PATH_MAX) { -+ SYSERROR("Failed to create ro layer dir path"); -+ return -1; -+ } -+ -+ if (util_mkdir_p(ro_layer_dir, IMAGE_STORE_PATH_MODE) != 0) { -+ ret = -1; -+ ERROR("Failed to create layer direcotry %s", ro_layer_dir); -+ goto out; -+ } -+ -+ if (symlink(ro_layer_dir, ro_symlink) != 0) { -+ ret = -1; -+ SYSERROR("Failed to create symlink to layer dir %s", ro_layer_dir); -+ goto err_out; -+ } -+ -+ goto out; -+ -+err_out: -+ if (util_recursive_rmdir(ro_layer_dir, 0)) { -+ ERROR("Failed to delete layer path: %s", ro_layer_dir); -+ } -+ -+out: -+ free(ro_layer_dir); -+ free(ro_symlink); -+ return ret; -+} -+ -+int remote_overlay_build_ro_dir(const char *id) -+{ -+ return do_build_ro_dir(overlay_home, id); -+} -+ -+int remote_layer_build_ro_dir(const char *id) -+{ -+ return do_build_ro_dir(layer_home, id); -+} -+ -+int do_remove_ro_dir(const char *home, const char *id) -+{ -+ char *ro_layer_dir = NULL; -+ char *ro_symlink = NULL; -+ char clean_path[PATH_MAX] = { 0 }; -+ int ret = 0; -+ int nret = 0; -+ -+ if (id == NULL) { -+ return 0; -+ } -+ -+ nret = asprintf(&ro_symlink, "%s/%s", home, id); -+ if (nret < 0 || nret > PATH_MAX) { -+ SYSERROR("Create layer sym link path failed"); -+ return -1; -+ } -+ -+ if (util_clean_path(ro_symlink, clean_path, sizeof(clean_path)) == NULL) { -+ ERROR("Failed to clean path: %s", ro_symlink); -+ ret = -1; -+ goto out; -+ } -+ -+ if (util_path_remove(clean_path) != 0) { -+ SYSERROR("Failed to remove link path %s", clean_path); -+ } -+ -+ nret = asprintf(&ro_layer_dir, "%s/%s/%s", home, REMOTE_RO_LAYER_DIR, id); -+ if (nret < 0 || nret > PATH_MAX) { -+ SYSERROR("Create layer json path failed"); -+ ret = -1; -+ goto out; -+ } -+ -+ ret = util_recursive_rmdir(ro_layer_dir, 0); -+ -+out: -+ free(ro_layer_dir); -+ free(ro_symlink); -+ return ret; -+} -+ -+int remote_layer_remove_ro_dir(const char *id) -+{ -+ return do_remove_ro_dir(layer_home, id); -+} -+ -+int remote_overlay_remove_ro_dir(const char *id) -+{ -+ return do_remove_ro_dir(overlay_home, id); -+} -+ -+static char **map_diff(map_t *map_a, map_t *map_b) -+{ -+ char **array = NULL; -+ map_itor *itor = map_itor_new(map_a); -+ bool *found = NULL; -+ -+ // iter new_map, every item not in old, append them to new_layers -+ for (; map_itor_valid(itor); map_itor_next(itor)) { -+ char *id = map_itor_key(itor); -+ found = map_search(map_b, id); -+ if (found == NULL) { -+ util_array_append(&array, util_strdup_s(id)); -+ } -+ } -+ -+ map_itor_free(itor); -+ -+ return array; -+} -+ -+char **deleted_layers(map_t *old, map_t *new) -+{ -+ return map_diff(old, new); -+} -+ -+char **added_layers(map_t *old, map_t *new) -+{ -+ return map_diff(new, old); -+} -+ -+int empty_map(map_t *mp) -+{ -+ if (mp == NULL) { -+ return -1; -+ } -+ -+ map_clear(mp); -+ mp->store->root = mp->store->nil; -+ return 0; -+} -diff --git a/src/daemon/modules/image/oci/storage/remote_layer_support/ro_symlink_maintain.h b/src/daemon/modules/image/oci/storage/remote_layer_support/ro_symlink_maintain.h -new file mode 100644 -index 00000000..25712d40 ---- /dev/null -+++ b/src/daemon/modules/image/oci/storage/remote_layer_support/ro_symlink_maintain.h -@@ -0,0 +1,52 @@ -+/****************************************************************************** -+ * Copyright (c) Huawei Technologies Co., Ltd. 2023. All rights reserved. -+ * iSulad licensed under the Mulan PSL v2. -+ * You can use this software according to the terms and conditions of the Mulan PSL v2. -+ * You may obtain a copy of Mulan PSL v2 at: -+ * http://license.coscl.org.cn/MulanPSL2 -+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR -+ * IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR -+ * PURPOSE. -+ * See the Mulan PSL v2 for more details. -+ * Author: wangrunze -+ * Create: 2023-01-12 -+ * Description: provide remote symlink maintain functions -+ ******************************************************************************/ -+#ifndef DAEMON_MODULES_IMAGE_OCI_STORAGE_LAYER_STORE_REMOTE_LAYER_SUPPORT_RO_SYMLINK_MAINTAIN_H -+#define DAEMON_MODULES_IMAGE_OCI_STORAGE_LAYER_STORE_REMOTE_LAYER_SUPPORT_RO_SYMLINK_MAINTAIN_H -+ -+#include "map.h" -+ -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+int remote_image_init(const char *root_dir); -+ -+int remote_layer_init(const char *root_dir); -+ -+int remote_overlay_init(const char *driver_home); -+ -+void remote_maintain_cleanup(void); -+ -+int start_refresh_thread(void); -+ -+int remote_layer_build_ro_dir(const char *id); -+ -+int remote_overlay_build_ro_dir(const char *id); -+ -+int remote_layer_remove_ro_dir(const char *id); -+ -+int remote_overlay_remove_ro_dir(const char *id); -+ -+char **deleted_layers(map_t *old, map_t *new); -+ -+char **added_layers(map_t *old, map_t *new); -+ -+int empty_map(map_t *mp); -+ -+#ifdef __cplusplus -+} -+#endif -+ -+#endif -diff --git a/src/daemon/modules/image/oci/storage/storage.c b/src/daemon/modules/image/oci/storage/storage.c -index 2f4bdf5f..31812a22 100644 ---- a/src/daemon/modules/image/oci/storage/storage.c -+++ b/src/daemon/modules/image/oci/storage/storage.c -@@ -42,6 +42,9 @@ - #include "utils_string.h" - #include "utils_verify.h" - #include "sha256.h" -+#ifdef ENABLE_REMOTE_LAYER_STORE -+#include "ro_symlink_maintain.h" -+#endif - - static pthread_rwlock_t g_storage_rwlock; - static char *g_storage_run_root; -@@ -1870,6 +1873,12 @@ int storage_module_init(struct storage_module_init_options *opts) - goto out; - } - -+#ifdef ENABLE_REMOTE_LAYER_STORE -+ if (opts->enable_remote_layer && start_refresh_thread() != 0) { -+ ERROR("Failed to start remote refresh thread"); -+ } -+#endif -+ - if (restore_images_size() != 0) { - ERROR("Failed to recal image size"); - ret = -1; -@@ -1906,4 +1915,4 @@ out: - char *storage_rootfs_get_dir() - { - return rootfs_store_get_data_dir(); --} -\ No newline at end of file -+} -diff --git a/src/daemon/modules/image/oci/storage/storage.h b/src/daemon/modules/image/oci/storage/storage.h -index 3ec47959..7404ee54 100644 ---- a/src/daemon/modules/image/oci/storage/storage.h -+++ b/src/daemon/modules/image/oci/storage/storage.h -@@ -70,6 +70,9 @@ struct storage_module_init_options { - char **driver_opts; - size_t driver_opts_len; - bool integration_check; -+#ifdef ENABLE_REMOTE_LAYER_STORE -+ bool enable_remote_layer; -+#endif - }; - - struct storage_img_create_options { --- -2.25.1 - diff --git a/0033-add-ci-for-remote-ro.patch b/0033-add-ci-for-remote-ro.patch deleted file mode 100644 index 88c9279..0000000 --- a/0033-add-ci-for-remote-ro.patch +++ /dev/null @@ -1,119 +0,0 @@ -From 6311ccd6e367f965da4dc1b4c9efb4bf43275f64 Mon Sep 17 00:00:00 2001 -From: Neil -Date: Sun, 5 Mar 2023 12:23:29 +0000 -Subject: [PATCH 33/53] add ci for remote ro - -Signed-off-by: Neil ---- - CI/make-and-install.sh | 4 +- - .../container_cases/test_data/daemon.json | 1 + - CI/test_cases/image_cases/ro_separate.sh | 69 +++++++++++++++++++ - 3 files changed, 72 insertions(+), 2 deletions(-) - create mode 100644 CI/test_cases/image_cases/ro_separate.sh - -diff --git a/CI/make-and-install.sh b/CI/make-and-install.sh -index 3dbff480..fa9c2250 100755 ---- a/CI/make-and-install.sh -+++ b/CI/make-and-install.sh -@@ -103,9 +103,9 @@ rm -rf build - mkdir build - cd build - if [[ ${enable_gcov} -ne 0 ]]; then -- cmake -DLIB_INSTALL_DIR=${builddir}/lib -DCMAKE_INSTALL_PREFIX=${builddir} -DCMAKE_INSTALL_SYSCONFDIR=${builddir}/etc -DCMAKE_BUILD_TYPE=Debug -DGCOV=ON -DENABLE_EMBEDDED=ON -DENABLE_COVERAGE=ON -DENABLE_UT=ON -DENABLE_METRICS=ON .. -+ cmake -DLIB_INSTALL_DIR=${builddir}/lib -DCMAKE_INSTALL_PREFIX=${builddir} -DCMAKE_INSTALL_SYSCONFDIR=${builddir}/etc -DCMAKE_BUILD_TYPE=Debug -DGCOV=ON -DENABLE_EMBEDDED=ON -DENABLE_COVERAGE=ON -DENABLE_UT=ON -DENABLE_METRICS=ON -DENABLE_REMOTE_LAYER_STORE=ON .. - else -- cmake -DLIB_INSTALL_DIR=${builddir}/lib -DCMAKE_INSTALL_PREFIX=${builddir} -DCMAKE_INSTALL_SYSCONFDIR=${builddir}/etc -DENABLE_EMBEDDED=ON -DENABLE_METRICS=ON .. -+ cmake -DLIB_INSTALL_DIR=${builddir}/lib -DCMAKE_INSTALL_PREFIX=${builddir} -DCMAKE_INSTALL_SYSCONFDIR=${builddir}/etc -DENABLE_EMBEDDED=ON -DENABLE_METRICS=ON -DENABLE_REMOTE_LAYER_STORE=ON .. - fi - make -j $(nproc) - make install -diff --git a/CI/test_cases/container_cases/test_data/daemon.json b/CI/test_cases/container_cases/test_data/daemon.json -index aa88c9da..2664c6b2 100644 ---- a/CI/test_cases/container_cases/test_data/daemon.json -+++ b/CI/test_cases/container_cases/test_data/daemon.json -@@ -19,6 +19,7 @@ - "hook-spec": "/etc/default/isulad/hooks/default.json", - "start-timeout": "2m", - "storage-driver": "overlay2", -+ "storage-enable-remote-layer": false, - "storage-opts": [ - "overlay2.override_kernel_check=true" - ], -diff --git a/CI/test_cases/image_cases/ro_separate.sh b/CI/test_cases/image_cases/ro_separate.sh -new file mode 100644 -index 00000000..47e04abb ---- /dev/null -+++ b/CI/test_cases/image_cases/ro_separate.sh -@@ -0,0 +1,69 @@ -+#!/bin/bash -+# -+# attributes: isulad basic image -+# concurrent: NA -+# spend time: 22 -+ -+####################################################################### -+##- Copyright (c) Huawei Technologies Co., Ltd. 2023. All rights reserved. -+# - iSulad licensed under the Mulan PSL v2. -+# - You can use this software according to the terms and conditions of the Mulan PSL v2. -+# - You may obtain a copy of Mulan PSL v2 at: -+# - http://license.coscl.org.cn/MulanPSL2 -+# - THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR -+# - IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR -+# - PURPOSE. -+# - See the Mulan PSL v2 for more details. -+##- @Description:CI -+##- @Author: wangrunze -+##- @Create: 2023-03-03 -+####################################################################### -+ -+declare -r curr_path=$(dirname $(readlink -f "$0")) -+source ../helpers.sh -+single_image="${curr_path}/busybox.tar" -+ -+function test_separate_ro() -+{ -+ local ret=0 -+ local test="isula separate ro test => (${FUNCNAME[@]})" -+ -+ msg_info "${test} starting..." -+ -+ sed -i 's/"storage-enable-remote-layer": false/"storage-enable-remote-layer": true/' /etc/isulad/daemon.json -+ start_isulad_with_valgrind -+ wait_isulad_running -+ -+ isula rmi busybox -+ -+ isula pull busybox -+ [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - pull image failed" && ((ret++)) -+ -+ isula run -tid --name test_separate busybox /bin/sh -+ [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - run container failed" && ((ret++)) -+ -+ isula stop test_separate -+ [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - stop container failed" && ((ret++)) -+ -+ isula rmi busybox -+ [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - remove image failed" && ((ret++)) -+ -+ isula load -i $single_image -+ [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - load image failed: ${rootfs_tar}" && ((ret++)) -+ -+ check_valgrind_log -+ [[ $? -ne 0 ]] && msg_err "separate ro test - memory leak, please check...." && ((ret++)) -+ -+ sed -i 's/"storage-enable-remote-layer": true/"storage-enable-remote-layer": false/' /etc/isulad/daemon.json -+ start_isulad_with_valgrind -+ wait_isulad_running -+ -+ msg_info "${test} finished with return ${ret}..." -+ return ${ret} -+} -+ -+declare -i ans=0 -+ -+test_separate_ro || ((ans++)) -+ -+show_result ${ans} "${curr_path}/${0}" --- -2.25.1 - diff --git a/0034-change-sleep-to-usleep-to-avoid-lossing-of-accuracy.patch b/0034-change-sleep-to-usleep-to-avoid-lossing-of-accuracy.patch deleted file mode 100644 index 8092e85..0000000 --- a/0034-change-sleep-to-usleep-to-avoid-lossing-of-accuracy.patch +++ /dev/null @@ -1,26 +0,0 @@ -From 9663e62598570d16c0e8a70be4341ff72663b8df Mon Sep 17 00:00:00 2001 -From: zhongtao -Date: Mon, 6 Mar 2023 09:51:17 +0800 -Subject: [PATCH 34/53] change sleep() to usleep() to avoid lossing of accuracy - -Signed-off-by: zhongtao ---- - src/utils/cutils/utils.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/utils/cutils/utils.c b/src/utils/cutils/utils.c -index 2c4c01e4..983d81d8 100644 ---- a/src/utils/cutils/utils.c -+++ b/src/utils/cutils/utils.c -@@ -345,7 +345,7 @@ int util_waitpid_with_timeout(pid_t pid, const int64_t timeout, handle_timeout_c - return -1; - } - // sleep some time instead to avoid cpu full running and then retry. -- sleep(0.1); -+ usleep(100); - } - return 0; - } --- -2.25.1 - diff --git a/0035-fix-compile-error-when-not-enable-remote-ro.patch b/0035-fix-compile-error-when-not-enable-remote-ro.patch deleted file mode 100644 index 091c939..0000000 --- a/0035-fix-compile-error-when-not-enable-remote-ro.patch +++ /dev/null @@ -1,62 +0,0 @@ -From 6a0b11ae6584ee2eefff9bd20c96bc60582ccb6b Mon Sep 17 00:00:00 2001 -From: "Neil.wrz" -Date: Sun, 5 Mar 2023 18:55:40 -0800 -Subject: [PATCH 35/53] fix compile error when not enable remote ro - -Signed-off-by: Neil.wrz ---- - .../modules/image/oci/storage/image_store/CMakeLists.txt | 3 +++ - .../modules/image/oci/storage/layer_store/CMakeLists.txt | 4 ++++ - .../storage/layer_store/graphdriver/overlay2/CMakeLists.txt | 3 +++ - 3 files changed, 10 insertions(+) - -diff --git a/src/daemon/modules/image/oci/storage/image_store/CMakeLists.txt b/src/daemon/modules/image/oci/storage/image_store/CMakeLists.txt -index ecf21caa..7d4fb77c 100644 ---- a/src/daemon/modules/image/oci/storage/image_store/CMakeLists.txt -+++ b/src/daemon/modules/image/oci/storage/image_store/CMakeLists.txt -@@ -1,5 +1,8 @@ - # get current directory sources files - aux_source_directory(${CMAKE_CURRENT_SOURCE_DIR} local_image_store_srcs) -+IF (NOT ENABLE_REMOTE_LAYER_STORE) -+list(REMOVE_ITEM local_image_store_srcs "${CMAKE_CURRENT_SOURCE_DIR}/image_remote_impl.c") -+ENDIF() - - set(IMAGE_STORE_SRCS - ${local_image_store_srcs} -diff --git a/src/daemon/modules/image/oci/storage/layer_store/CMakeLists.txt b/src/daemon/modules/image/oci/storage/layer_store/CMakeLists.txt -index f964f709..e04b4ad7 100644 ---- a/src/daemon/modules/image/oci/storage/layer_store/CMakeLists.txt -+++ b/src/daemon/modules/image/oci/storage/layer_store/CMakeLists.txt -@@ -1,5 +1,8 @@ - # get current directory sources files - aux_source_directory(${CMAKE_CURRENT_SOURCE_DIR} local_layer_store_srcs) -+IF (NOT ENABLE_REMOTE_LAYER_STORE) -+list(REMOVE_ITEM local_layer_store_srcs "${CMAKE_CURRENT_SOURCE_DIR}/layer_remote_impl.c") -+ENDIF() - add_subdirectory(graphdriver) - - set(LAYER_STORE_SRCS -@@ -7,6 +10,7 @@ set(LAYER_STORE_SRCS - ${GRAPHDRIVER_SRCS} - PARENT_SCOPE - ) -+ - set(LAYER_STORE_INCS - ${CMAKE_CURRENT_SOURCE_DIR} - ${GRAPHDRIVER_INCS} -diff --git a/src/daemon/modules/image/oci/storage/layer_store/graphdriver/overlay2/CMakeLists.txt b/src/daemon/modules/image/oci/storage/layer_store/graphdriver/overlay2/CMakeLists.txt -index ceed16b7..dd4e82aa 100644 ---- a/src/daemon/modules/image/oci/storage/layer_store/graphdriver/overlay2/CMakeLists.txt -+++ b/src/daemon/modules/image/oci/storage/layer_store/graphdriver/overlay2/CMakeLists.txt -@@ -1,5 +1,8 @@ - # get current directory sources files - aux_source_directory(${CMAKE_CURRENT_SOURCE_DIR} local_overlay2_srcs) -+IF (NOT ENABLE_REMOTE_LAYER_STORE) -+list(REMOVE_ITEM local_overlay2_srcs "${CMAKE_CURRENT_SOURCE_DIR}/overlay_remote_impl.c") -+ENDIF() - - set(OVERLAY2_SRCS - ${local_overlay2_srcs} --- -2.25.1 - diff --git a/0036-adapt-to-repo-of-openeuler-url-changed.patch b/0036-adapt-to-repo-of-openeuler-url-changed.patch deleted file mode 100644 index dd476a9..0000000 --- a/0036-adapt-to-repo-of-openeuler-url-changed.patch +++ /dev/null @@ -1,33 +0,0 @@ -From 42a46f64e533ea0a89f95bef80a421fe06a5bfa2 Mon Sep 17 00:00:00 2001 -From: haozi007 -Date: Mon, 6 Mar 2023 14:38:58 +0800 -Subject: [PATCH 36/53] adapt to repo of openeuler url changed - -Signed-off-by: haozi007 ---- - CI/pr-gateway.sh | 8 ++++++++ - 1 file changed, 8 insertions(+) - -diff --git a/CI/pr-gateway.sh b/CI/pr-gateway.sh -index c715fc39..7c696de3 100755 ---- a/CI/pr-gateway.sh -+++ b/CI/pr-gateway.sh -@@ -18,7 +18,15 @@ if [ $# -eq 1 ]; then - tbranch=$1 - fi - -+sed -i "s#http://repo.openeuler.org#https://repo.huaweicloud.com/openeuler#g" /etc/yum.repos.d/openEuler.repo -+ -+dnf update -y -+ - dnf install -y gtest-devel gmock-devel diffutils cmake gcc-c++ yajl-devel patch make libtool libevent-devel libevhtp-devel grpc grpc-plugins grpc-devel protobuf-devel libcurl libcurl-devel sqlite-devel libarchive-devel device-mapper-devel http-parser-devel libseccomp-devel libcap-devel libselinux-devel libwebsockets libwebsockets-devel systemd-devel git chrpath -+if [ $? -ne 0 ]; then -+ echo "install dependences failed" -+ exit 1 -+fi - - # dnf install -y cargo rust rust-packaging - --- -2.25.1 - diff --git a/0037-change-goto-branch.patch b/0037-change-goto-branch.patch deleted file mode 100644 index a2352f4..0000000 --- a/0037-change-goto-branch.patch +++ /dev/null @@ -1,27 +0,0 @@ -From 66532035178723175ad9522201440372316dc914 Mon Sep 17 00:00:00 2001 -From: zhongtao -Date: Mon, 6 Mar 2023 17:54:55 +0800 -Subject: [PATCH 37/53] change goto branch - -Signed-off-by: zhongtao ---- - src/daemon/executor/container_cb/execution_stream.c | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/src/daemon/executor/container_cb/execution_stream.c b/src/daemon/executor/container_cb/execution_stream.c -index 1a7353b5..7e928cf7 100644 ---- a/src/daemon/executor/container_cb/execution_stream.c -+++ b/src/daemon/executor/container_cb/execution_stream.c -@@ -161,7 +161,8 @@ static int container_exec_cb(const container_exec_request *request, container_ex - - if (exec_container(cont, request, *response, stdinfd, stdout_handler, stderr_handler) != 0) { - ret = -1; -- goto pack_err_response; -+ // pack err response in exec_container, there is no need to pack here. -+ goto out; - } - - goto out; --- -2.25.1 - diff --git a/0038-CI-not-enable-remote-ro-for-ut.patch b/0038-CI-not-enable-remote-ro-for-ut.patch deleted file mode 100644 index cc41858..0000000 --- a/0038-CI-not-enable-remote-ro-for-ut.patch +++ /dev/null @@ -1,41 +0,0 @@ -From c414e2226542660579e14b9401fc28bc91b709c7 Mon Sep 17 00:00:00 2001 -From: "Neil.wrz" -Date: Mon, 6 Mar 2023 18:59:43 -0800 -Subject: [PATCH 38/53] CI not enable remote ro for ut - -Signed-off-by: Neil.wrz ---- - CI/make-and-install.sh | 2 +- - CI/test_cases/image_cases/ro_separate.sh | 3 +++ - 2 files changed, 4 insertions(+), 1 deletion(-) - -diff --git a/CI/make-and-install.sh b/CI/make-and-install.sh -index fa9c2250..faeaf005 100755 ---- a/CI/make-and-install.sh -+++ b/CI/make-and-install.sh -@@ -103,7 +103,7 @@ rm -rf build - mkdir build - cd build - if [[ ${enable_gcov} -ne 0 ]]; then -- cmake -DLIB_INSTALL_DIR=${builddir}/lib -DCMAKE_INSTALL_PREFIX=${builddir} -DCMAKE_INSTALL_SYSCONFDIR=${builddir}/etc -DCMAKE_BUILD_TYPE=Debug -DGCOV=ON -DENABLE_EMBEDDED=ON -DENABLE_COVERAGE=ON -DENABLE_UT=ON -DENABLE_METRICS=ON -DENABLE_REMOTE_LAYER_STORE=ON .. -+ cmake -DLIB_INSTALL_DIR=${builddir}/lib -DCMAKE_INSTALL_PREFIX=${builddir} -DCMAKE_INSTALL_SYSCONFDIR=${builddir}/etc -DCMAKE_BUILD_TYPE=Debug -DGCOV=ON -DENABLE_EMBEDDED=ON -DENABLE_COVERAGE=ON -DENABLE_UT=ON -DENABLE_METRICS=ON .. - else - cmake -DLIB_INSTALL_DIR=${builddir}/lib -DCMAKE_INSTALL_PREFIX=${builddir} -DCMAKE_INSTALL_SYSCONFDIR=${builddir}/etc -DENABLE_EMBEDDED=ON -DENABLE_METRICS=ON -DENABLE_REMOTE_LAYER_STORE=ON .. - fi -diff --git a/CI/test_cases/image_cases/ro_separate.sh b/CI/test_cases/image_cases/ro_separate.sh -index 47e04abb..df45e120 100644 ---- a/CI/test_cases/image_cases/ro_separate.sh -+++ b/CI/test_cases/image_cases/ro_separate.sh -@@ -45,6 +45,9 @@ function test_separate_ro() - isula stop test_separate - [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - stop container failed" && ((ret++)) - -+ isula rm test_separate -+ [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - remove container failed" && ((ret++)) -+ - isula rmi busybox - [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - remove image failed" && ((ret++)) - --- -2.25.1 - diff --git a/0039-use-auto-free-to-proc_t.patch b/0039-use-auto-free-to-proc_t.patch deleted file mode 100644 index 25de87e..0000000 --- a/0039-use-auto-free-to-proc_t.patch +++ /dev/null @@ -1,43 +0,0 @@ -From 0a68a53ccb6582384dad478d4197ec9386306027 Mon Sep 17 00:00:00 2001 -From: zhongtao -Date: Mon, 6 Mar 2023 10:56:16 +0800 -Subject: [PATCH 39/53] use auto free to proc_t - -Signed-off-by: zhongtao ---- - src/daemon/modules/runtime/isula/isula_rt_ops.c | 12 ++---------- - 1 file changed, 2 insertions(+), 10 deletions(-) - -diff --git a/src/daemon/modules/runtime/isula/isula_rt_ops.c b/src/daemon/modules/runtime/isula/isula_rt_ops.c -index 536e36b2..5ec0e639 100644 ---- a/src/daemon/modules/runtime/isula/isula_rt_ops.c -+++ b/src/daemon/modules/runtime/isula/isula_rt_ops.c -@@ -951,8 +951,8 @@ int rt_isula_start(const char *id, const char *runtime, const rt_start_params_t - pid_t shim_pid = -1; - int ret = -1; - int splice_ret = 0; -- proc_t *proc = NULL; -- proc_t *p_proc = NULL; -+ __isula_auto_free proc_t *proc = NULL; -+ __isula_auto_free proc_t *p_proc = NULL; - - if (id == NULL || runtime == NULL || params == NULL || pid_info == NULL) { - ERROR("nullptr arguments not allowed"); -@@ -1009,14 +1009,6 @@ out: - show_shim_runtime_errlog(workdir); - shim_kill_force(workdir); - } -- -- if (proc != NULL) { -- free(proc); -- } -- if (p_proc != NULL) { -- free(p_proc); -- } -- - return ret; - } - --- -2.25.1 - diff --git a/0040-modifying-cpurt-file-permissions.patch b/0040-modifying-cpurt-file-permissions.patch deleted file mode 100644 index 8eb5455..0000000 --- a/0040-modifying-cpurt-file-permissions.patch +++ /dev/null @@ -1,72 +0,0 @@ -From 2d9b9d88f3150027609fe984930af1dcf06dfd00 Mon Sep 17 00:00:00 2001 -From: songbuhuang <544824346@qq.com> -Date: Thu, 9 Mar 2023 18:32:19 +0800 -Subject: [PATCH 40/53] modifying cpurt file permissions - -Signed-off-by: songbuhuang <544824346@qq.com> ---- - src/common/constants.h | 4 ++++ - src/daemon/common/sysinfo.c | 3 +-- - src/daemon/executor/container_cb/execution.c | 3 ++- - 3 files changed, 7 insertions(+), 3 deletions(-) - -diff --git a/src/common/constants.h b/src/common/constants.h -index b43d8c80..06015f1e 100644 ---- a/src/common/constants.h -+++ b/src/common/constants.h -@@ -22,6 +22,10 @@ extern "C" { - - /* mode of file and directory */ - -+#define DEFAULT_CGROUP_FILE_MODE 0644 -+ -+#define DEFAULT_CGROUP_DIR_MODE 0755 -+ - #define DEFAULT_SECURE_FILE_MODE 0640 - - #define DEFAULT_SECURE_DIRECTORY_MODE 0750 -diff --git a/src/daemon/common/sysinfo.c b/src/daemon/common/sysinfo.c -index 7559d653..baf53510 100644 ---- a/src/daemon/common/sysinfo.c -+++ b/src/daemon/common/sysinfo.c -@@ -27,6 +27,7 @@ - #include - #include - -+#include "constants.h" - #include "err_msg.h" - #include "utils.h" - #include "utils_array.h" -@@ -73,8 +74,6 @@ - - #define CGROUP_MOUNTPOINT "/sys/fs/cgroup" - #define CGROUP_ISULAD_PATH CGROUP_MOUNTPOINT"/isulad" --#define DEFAULT_CGROUP_DIR_MODE 0755 --#define DEFAULT_CGROUP_FILE_MODE 0644 - #define CGROUP2_CONTROLLERS_PATH CGROUP_MOUNTPOINT"/cgroup.controllers" - #define CGROUP2_SUBTREE_CONTROLLER_PATH CGROUP_MOUNTPOINT"/cgroup.subtree_control" - #define CGROUP2_CPUSET_CPUS_EFFECTIVE_PATH CGROUP_MOUNTPOINT"/cpuset.cpus.effective" -diff --git a/src/daemon/executor/container_cb/execution.c b/src/daemon/executor/container_cb/execution.c -index 198052d3..c2a0bdb9 100644 ---- a/src/daemon/executor/container_cb/execution.c -+++ b/src/daemon/executor/container_cb/execution.c -@@ -46,6 +46,7 @@ - #include "isulad_config.h" - #include "sysinfo.h" - #include "container_api.h" -+#include "constants.h" - #include "specs_api.h" - #include "execution_extend.h" - #include "execution_information.h" -@@ -324,7 +325,7 @@ static int maybe_create_cpu_realtime_file(int64_t value, const char *file, const - return 0; - } - -- ret = util_mkdir_p(path, CONFIG_DIRECTORY_MODE); -+ ret = util_mkdir_p(path, DEFAULT_CGROUP_DIR_MODE); - if (ret != 0) { - ERROR("Failed to mkdir: %s", path); - return -1; --- -2.25.1 - diff --git a/0041-use-CURLOPT_XFERINFOFUNCTION-instead-of-deprecated-C.patch b/0041-use-CURLOPT_XFERINFOFUNCTION-instead-of-deprecated-C.patch deleted file mode 100644 index af12eec..0000000 --- a/0041-use-CURLOPT_XFERINFOFUNCTION-instead-of-deprecated-C.patch +++ /dev/null @@ -1,131 +0,0 @@ -From d0b0baa3f2624b6de0ca92c051c154f0cff43f1a Mon Sep 17 00:00:00 2001 -From: zhangxiaoyu -Date: Tue, 14 Mar 2023 10:33:38 +0800 -Subject: [PATCH 41/53] use CURLOPT_XFERINFOFUNCTION instead of deprecated - CURLOPT_PROGRESSFUNCTION since curl 7.32.0 - -Signed-off-by: zhangxiaoyu ---- - .../modules/image/oci/registry/http_request.c | 12 +++++++++++ - src/utils/http/http.c | 21 ++++++++++++++----- - src/utils/http/http.h | 7 +++++++ - test/image/oci/registry/registry_ut.cc | 8 +++++++ - 4 files changed, 43 insertions(+), 5 deletions(-) - -diff --git a/src/daemon/modules/image/oci/registry/http_request.c b/src/daemon/modules/image/oci/registry/http_request.c -index f29c2017..ce8b7667 100644 ---- a/src/daemon/modules/image/oci/registry/http_request.c -+++ b/src/daemon/modules/image/oci/registry/http_request.c -@@ -691,6 +691,16 @@ static int progress(void *p, double dltotal, double dlnow, double ultotal, doubl - return 0; - } - -+static int xfer(void *p, curl_off_t dltotal, curl_off_t dlnow, curl_off_t ultotal, curl_off_t ulnow) -+{ -+ bool *cancel = p; -+ if (*cancel) { -+ // return nonzero code means abort transition -+ return -1; -+ } -+ return 0; -+} -+ - int http_request_file(pull_descriptor *desc, const char *url, const char **custom_headers, char *file, - resp_data_type type, CURLcode *errcode) - { -@@ -721,6 +731,8 @@ int http_request_file(pull_descriptor *desc, const char *url, const char **custo - options->show_progress = 1; - options->progressinfo = &desc->cancel; - options->progress_info_op = progress; -+ options->xferinfo = &desc->cancel; -+ options->xferinfo_op = xfer; - options->timeout = true; - - ret = setup_common_options(desc, options, url, custom_headers); -diff --git a/src/utils/http/http.c b/src/utils/http/http.c -index bf163d86..986f1f0d 100644 ---- a/src/utils/http/http.c -+++ b/src/utils/http/http.c -@@ -219,12 +219,23 @@ static void http_custom_general_options(CURL *curl_handle, const struct http_get - /* disable progress meter, set to 0L to enable and disable debug output */ - if (options->show_progress == 0) { - curl_easy_setopt(curl_handle, CURLOPT_NOPROGRESS, 1L); -- } else if (options->show_progress && options->progressinfo && options->progress_info_op) { -- curl_easy_setopt(curl_handle, CURLOPT_PROGRESSFUNCTION, options->progress_info_op); -- /* pass the struct pointer into the progress function */ -- curl_easy_setopt(curl_handle, CURLOPT_PROGRESSDATA, options->progressinfo); -- curl_easy_setopt(curl_handle, CURLOPT_NOPROGRESS, 0L); - } else { -+ /* libcurl support option CURLOPT_XFERINFOFUNCTION when version >= 7.32.0 -+ * #define CURL_VERSION_BITS(x,y,z) ((x)<<16|(y)<<8|(z)) -+ * CURL_VERSION_BITS(7,32,0) = 0x072000 */ -+#if (LIBCURL_VERSION_NUM >= 0x072000) -+ if (options->xferinfo && options->xferinfo_op) { -+ curl_easy_setopt(curl_handle, CURLOPT_XFERINFOFUNCTION, options->xferinfo_op); -+ /* pass the struct pointer into the progress function */ -+ curl_easy_setopt(curl_handle, CURLOPT_XFERINFODATA, options->xferinfo); -+ } -+#else -+ if (options->progressinfo && options->progress_info_op) { -+ curl_easy_setopt(curl_handle, CURLOPT_PROGRESSFUNCTION, options->progress_info_op); -+ /* pass the struct pointer into the progress function */ -+ curl_easy_setopt(curl_handle, CURLOPT_PROGRESSDATA, options->progressinfo); -+ } -+#endif - curl_easy_setopt(curl_handle, CURLOPT_NOPROGRESS, 0L); - } - -diff --git a/src/utils/http/http.h b/src/utils/http/http.h -index 343d92c3..cdd6d64f 100644 ---- a/src/utils/http/http.h -+++ b/src/utils/http/http.h -@@ -17,6 +17,7 @@ - - #include - #include -+#include - - #ifdef __cplusplus - extern "C" { -@@ -25,6 +26,9 @@ extern "C" { - typedef int(*progress_info_func)(void *p, - double dltotal, double dlnow, - double ultotal, double ulnow); -+typedef int(*xferinfo_func)(void *p, -+ curl_off_t dltotal, curl_off_t dlnow, -+ curl_off_t ultotal, curl_off_t ulnow); - - struct http_get_options { - unsigned with_head : 1, /* if set, means write output with response HEADER */ -@@ -77,6 +81,9 @@ struct http_get_options { - - void *progressinfo; - progress_info_func progress_info_op; -+ -+ void *xferinfo; -+ xferinfo_func xferinfo_op; - }; - - #define HTTP_RES_OK 0 -diff --git a/test/image/oci/registry/registry_ut.cc b/test/image/oci/registry/registry_ut.cc -index 8d9ea92b..f4f8a763 100644 ---- a/test/image/oci/registry/registry_ut.cc -+++ b/test/image/oci/registry/registry_ut.cc -@@ -221,6 +221,14 @@ int invokeHttpRequestV2(const char *url, struct http_get_options *options, long - if (options->progress_info_op(options->progressinfo, 0, 0, 0, 0) != 0) { - return -1; - } -+ -+ cancel = (bool *)options->xferinfo; -+ while (!(*cancel)) { -+ sleep(1); // schedule out to let cancel variable set to be true -+ } -+ if (options->xferinfo_op(options->xferinfo, 0, 0, 0, 0) != 0) { -+ return -1; -+ } - } - } else if (util_has_prefix(url, "http://hub-mirror.c.163.com/v2/library/busybox/blobs/sha256:91f30d77")) { - if (retry) { --- -2.25.1 - diff --git a/0042-bugfix-remote-ro-try-add-or-remove-image-layer-twice.patch b/0042-bugfix-remote-ro-try-add-or-remove-image-layer-twice.patch deleted file mode 100644 index 2741ecf..0000000 --- a/0042-bugfix-remote-ro-try-add-or-remove-image-layer-twice.patch +++ /dev/null @@ -1,99 +0,0 @@ -From a08e511eb6ee1955bb62e774190dfe7a7599fbdd Mon Sep 17 00:00:00 2001 -From: "Neil.wrz" -Date: Tue, 7 Mar 2023 23:59:56 -0800 -Subject: [PATCH 42/53] bugfix remote ro try add or remove image/layer twice - -Signed-off-by: Neil.wrz ---- - .../image/oci/storage/image_store/image_store.c | 14 ++++++++++++++ - .../oci/storage/layer_store/layer_remote_impl.c | 2 +- - .../image/oci/storage/layer_store/layer_store.c | 11 +++++++++++ - 3 files changed, 26 insertions(+), 1 deletion(-) - -diff --git a/src/daemon/modules/image/oci/storage/image_store/image_store.c b/src/daemon/modules/image/oci/storage/image_store/image_store.c -index caff3705..84187ded 100644 ---- a/src/daemon/modules/image/oci/storage/image_store/image_store.c -+++ b/src/daemon/modules/image/oci/storage/image_store/image_store.c -@@ -3668,6 +3668,11 @@ int append_image_by_directory_with_lock(const char *id) - return -1; - } - -+ if (map_search(g_image_store->byid, (void *)id) != NULL ) { -+ DEBUG("remote image already exist, not added: %s", id); -+ goto out; -+ } -+ - nret = snprintf(image_path, sizeof(image_path), "%s/%s", g_image_store->dir, id); - if (nret < 0 || (size_t)nret >= sizeof(image_path)) { - ERROR("Failed to get image path"); -@@ -3675,6 +3680,8 @@ int append_image_by_directory_with_lock(const char *id) - } - - ret = append_image_by_directory(image_path); -+ -+out: - image_store_unlock(); - - return ret; -@@ -3689,7 +3696,14 @@ int remove_image_from_memory_with_lock(const char *id) - return -1; - } - -+ if (map_search(g_image_store->byid, (void *)id) == NULL) { -+ DEBUG("remote image already remvoed, don't delete twice: %s", id); -+ goto out; -+ } -+ - ret = remove_image_from_memory(id); -+ -+out: - image_store_unlock(); - - return ret; -diff --git a/src/daemon/modules/image/oci/storage/layer_store/layer_remote_impl.c b/src/daemon/modules/image/oci/storage/layer_store/layer_remote_impl.c -index d03fc20b..d676458c 100644 ---- a/src/daemon/modules/image/oci/storage/layer_store/layer_remote_impl.c -+++ b/src/daemon/modules/image/oci/storage/layer_store/layer_remote_impl.c -@@ -175,7 +175,7 @@ static int remote_support_add(void *data) - } - - if (add_one_remote_layer(data, array_added[i]) != 0) { -- ERROR("Failed to add remote overlay layer: %s", array_added[i]); -+ ERROR("Failed to add remote layer: %s", array_added[i]); - ret = -1; - } - } -diff --git a/src/daemon/modules/image/oci/storage/layer_store/layer_store.c b/src/daemon/modules/image/oci/storage/layer_store/layer_store.c -index c00c3356..e88067bc 100644 ---- a/src/daemon/modules/image/oci/storage/layer_store/layer_store.c -+++ b/src/daemon/modules/image/oci/storage/layer_store/layer_store.c -@@ -1852,6 +1852,11 @@ int load_one_layer(const char *id) - return -1; - } - -+ if (map_search(g_metadata.by_id, (void *)id) != NULL) { -+ DEBUG("remote layer already exist, not added: %s", id); -+ goto unlock_out; -+ } -+ - tl = load_one_layer_from_json(id); - if (tl == NULL) { - ret = -1; -@@ -2482,8 +2487,14 @@ int remove_memory_stores_with_lock(const char *id) - ERROR("Failed to lock layer store when handle: %s", id); - return -1; - } -+ if (map_search(g_metadata.by_id, (void *)id) == NULL) { -+ DEBUG("remote layer already removed, don't delete: %s", id); -+ goto unlock_out; -+ } - - ret = remove_memory_stores(id); -+ -+unlock_out: - layer_store_unlock(); - - return ret; --- -2.25.1 - diff --git a/0043-bugfix-can-t-delete-layers-under-dir-overlay-layers.patch b/0043-bugfix-can-t-delete-layers-under-dir-overlay-layers.patch deleted file mode 100644 index a4d9296..0000000 --- a/0043-bugfix-can-t-delete-layers-under-dir-overlay-layers.patch +++ /dev/null @@ -1,34 +0,0 @@ -From c8702b62fd6016a96794d74abcae2e74551a9c07 Mon Sep 17 00:00:00 2001 -From: "Neil.wrz" -Date: Tue, 14 Mar 2023 20:32:23 -0700 -Subject: [PATCH 43/53] bugfix can't delete layers under dir overlay-layers - -Signed-off-by: Neil.wrz ---- - .../modules/image/oci/storage/layer_store/layer_store.c | 8 ++++++-- - 1 file changed, 6 insertions(+), 2 deletions(-) - -diff --git a/src/daemon/modules/image/oci/storage/layer_store/layer_store.c b/src/daemon/modules/image/oci/storage/layer_store/layer_store.c -index e88067bc..4edd0cad 100644 ---- a/src/daemon/modules/image/oci/storage/layer_store/layer_store.c -+++ b/src/daemon/modules/image/oci/storage/layer_store/layer_store.c -@@ -1409,10 +1409,14 @@ static int do_delete_layer(const char *id) - } - - #ifdef ENABLE_REMOTE_LAYER_STORE -- if (l->slayer->writable) { -+ if (!g_enable_remote_layer) { - ret = layer_store_remove_layer(l->slayer->id); - } else { -- ret = remote_layer_remove_ro_dir(l->slayer->id); -+ if (l->slayer->writable) { -+ ret = layer_store_remove_layer(l->slayer->id); -+ } else { -+ ret = remote_layer_remove_ro_dir(l->slayer->id); -+ } - } - #else - ret = layer_store_remove_layer(l->slayer->id); --- -2.25.1 - diff --git a/0044-doc-add-document-about-support-remote-ro-directory.patch b/0044-doc-add-document-about-support-remote-ro-directory.patch deleted file mode 100644 index 71af0e9..0000000 --- a/0044-doc-add-document-about-support-remote-ro-directory.patch +++ /dev/null @@ -1,396 +0,0 @@ -From 6911c68b96f3a0fc35b40e5c387da51cd84e5461 Mon Sep 17 00:00:00 2001 -From: "Neil.wrz" -Date: Mon, 13 Feb 2023 03:34:31 -0800 -Subject: [PATCH 44/53] doc: add document about support remote ro directory - ---- - docs/design/README.md | 4 +- - docs/design/README_zh.md | 6 +- - .../design/detailed/Image/remote_ro_design.md | 333 ++++++++++++++++++ - 3 files changed, 340 insertions(+), 3 deletions(-) - create mode 100644 docs/design/detailed/Image/remote_ro_design.md - -diff --git a/docs/design/README.md b/docs/design/README.md -index a9d357b4..cf29c0a1 100644 ---- a/docs/design/README.md -+++ b/docs/design/README.md -@@ -34,6 +34,8 @@ This section contains some design documents for users who want to learn more abo - - - You can see how the isula search are designed in [image_search_design](./detailed/Image/image_search_design_zh.md) - -+- You can see how the remote ro are designed in [remote_ro_design](./detailed/Image/remote_ro_design.md) -+ - ## Network - - - You can see how the cni operator modules are designed in [cni_operator_design](./detailed/Network/cni_operator_design.md). -@@ -54,4 +56,4 @@ This section contains some design documents for users who want to learn more abo - - ## Volume - --- You can see how the local volume modules are designed in [local_volume_design](./detailed/Volume/local_volume_design.md). -\ No newline at end of file -+- You can see how the local volume modules are designed in [local_volume_design](./detailed/Volume/local_volume_design.md). -diff --git a/docs/design/README_zh.md b/docs/design/README_zh.md -index f51930e4..1f1c94b5 100644 ---- a/docs/design/README_zh.md -+++ b/docs/design/README_zh.md -@@ -32,7 +32,9 @@ - - - 查看 registry 模块的设计文档: [registry_degisn](./detailed/Image/registry_degisn_zh.md) 。 - --- 查看 isula search 的设计文档:[image_search_design](./detailed/Image/image_search_design_zh.md) -+- 查看 isula search 的设计文档:[image_search_design](./detailed/Image/image_search_design_zh.md) 。 -+ -+- 查看 ro目录分离的设计文档: [remote_ro_design](./detailed/Image/remote_ro_design.md) 。 - - ## Network - -@@ -54,4 +56,4 @@ - - ## Volume - --- 查看 local volume 模块的设计文档: [local_volume_design](./detailed/Volume/local_volume_design_zh.md). -\ No newline at end of file -+- 查看 local volume 模块的设计文档: [local_volume_design](./detailed/Volume/local_volume_design_zh.md). -diff --git a/docs/design/detailed/Image/remote_ro_design.md b/docs/design/detailed/Image/remote_ro_design.md -new file mode 100644 -index 00000000..fee33835 ---- /dev/null -+++ b/docs/design/detailed/Image/remote_ro_design.md -@@ -0,0 +1,333 @@ -+| Author | 王润泽 | -+| ------ | ---------------------- | -+| Date | 2023-2-13 | -+| Email | wangrunze13@huawei.com | -+ -+# 1. 方案目标 -+目标有两个: -+1. 把isulad当前的layer store里的RO层分离出来,把RW layer和RO layer分开到不同到目录存储。 -+2. isulad在运行时如果在相关目录里恢复了正确的镜像数据(image和layer数据), 可实现不重启isulad, 直接使用新恢复的镜像。如果移除当前没有容器正在使用的镜像数据,可实现不重启isulad,isulad更新当前管理的镜像列表去除该镜像。只考虑完全正确的新增和删除。 -+ -+ -+## 1.1 用法说明 -+通过源码编译打开编译选项来开启功能,cmake添加`cmake -DENABLE_REMOTE_LAYER_STORE=ON ..`, 然后`make -j`即可。启动iSulad之前,还需要在配置文件`/etc/isulad/daemon.json`里面添加`"storage-enable-remote-layer": true`来打开开关。 -+ -+# 2. 总体设计 -+ -+*Modules Dependencies* -+``` -+=> New Added Module: -+ -+ +===================================+ -+ | Remote Supporter Module | -+ +===================================+ -+ | | -+ | +-------------------------+ | -+ | | maintainer submod | | -+ | +-------------------------+ | -+ | | global data initer | | -+ | | symbol link maintainer | | -+ | | global data getter | | -+ | +-------------------------+ | -+ | | -+ | +-------------------------+ | -+ | | Supporter submod | | -+ | +-------------------------+ | -+ | | supporter interface | | -+ | | overlay supporter impl | | -+ | | layer supporter impl | | -+ | | image supporter impl | | -+ | | remote refresh thread | | -+ | +-------------------------+ | -+ +-----------------------------------+ -+ -+ -+=> Modified Modules: -+ -+ +===================================+ -+ | Storage Module | -+ +===================================+ -+ | | -+ | +-------------------------+ | -+ | | Image Store submod | | -+ | | Added Functions | | -+ | +-------------------------+ | -+ | | add image in memory | | -+ | | delete image in memory | | -+ | | get image top layer | | -+ | | valid image manifest | | -+ | +-------------------------+ | -+ | | -+ | +-------------------------+ | -+ | | Layer Store submod | | -+ | | Added Functions | | -+ | +-------------------------+ | -+ | | add layer in memory | | -+ | | delete layer in memory | | -+ | +-------------------------+ | -+ | | -+ | +-------------------------+ | -+ | | Driver Overlay submod | | -+ | | Added Functions | | -+ | +-------------------------+ | -+ | | - | | -+ | +-------------------------+ | -+ +-----------------------------------+ -+ -+ -+=> Modules Dependencies: -+ -+ +-------------------------+ +---------------+ -+ | Supporter submod | | Image Store | -+ +-------------------------+ +----▶| submod ---------+ -+ | supporter interface | | +---------------+ | -+ | overlay supporter impl -----+ | -+ | layer supporter impl -----+ | -++----------------+ | image supporter impl | | +----------------+ | -+| storage module |-------▶| remote refresh thread | +----▶| Layer Store | | init +-----------------------+ -++----------------+ +-------------------------+ | submod --------+--------▶| maintainer submod | -+ | +----------------+ | +-----------------------+ -+ | | ▲ -+ | | | -+ | +----------------+ | | -+ | | Layer Store | | | -+ | | submod --------+ | -+ | +----------------+ | -+ | | -+ +------------------------------------------------------------------------+ -+ get global data -+``` -+ -+ -+总体来说有两部分的功能: -+- iSulad原有的image storage适配分离的RO目录结构,*分离的RO目录*可用于远程挂载 -+- iSulad实例同步内存数据,镜像数据和layer数据*定期更新*,不通过`isula pull` 和 `isula rmi` 等命令,直接通过分离目录里面的数据来更新镜像数据。 -+ -+*分离RO目录* -+修改前后storage目录结构对比: -+ -+``` -+old: -+overlay-layer -+├── b703587 -+│ └── layer.json -+└── b64792c -+ └── layer.json -+ └── b64792.tar.gz -+ -+new: -+overlay-layer -+├── b64792c -> ../RO/b64792c -+├── b703587 -+│ └── layer.json -+└── RO -+ └── b64792c -+ └── layer.json -+ └── b64792.tar.gz -+``` -+ -+以overlay-layers目录为例,创建新layer时,如果是只读层,就把层数据放到RO目录下,在RO上层目录创建软连接指向真实数据。删除layer时需要额外删除软连接。 -+ -+ -+*定期更新* -+定期更新通过启动一个线程周期扫描`overlay`, `overlay-layers`, `overlay-image`这三个目录,通过比较当前时刻与上一时刻的目录差异,来获取镜像和层的删减情况,进而同步isulad的storage内存数据和维护软链接。 -+ -+``` -++---------------------+ +---------------------+ +---------------------+ +-----------------------+ -+| refresh thread loop | | overlay remote impl | | layer remote impl | | image remote impl | -++---------------------+ +---------------------+ +---------------------+ +-----------------------+ -+ | | | | -+ | refresh start | | | -+ |-----------------------------▶| | | -+ | | overlay dir scan | | -+ | | | | -+ | | to added layers | | -+ | | memory and symlink add | | -+ | | to deleted layers | | -+ | | memory and symlink del | | -+ | | valid overlay layers | | -+ | |---------------------------------▶| | -+ | | next scan | | -+ | | | | -+ | | | | -+ | | | | -+ | | | overlay-layers dir scan | -+ | | check overlay layer ready | | -+ | |◀---------------------------------| to added layers | -+ | |---------------------------------▶| filter invalid layers | -+ | | result | memory and symlink add | -+ | | | to deleted layers | -+ | | | memory and symlink del | -+ | | | valid overlay layers | -+ | | |---------------------------------▶| -+ | | | next scan | -+ | | | | -+ | | | | -+ | | | | -+ | | | | overlay-image dir scan -+ | | | check layers ready | -+ | | |◀---------------------------------| to added images -+ | | |---------------------------------▶| filter invalid images -+ | | | result | memory add images -+ | | | | to deleted images -+ | | | | memory del images -+ | | | | -+ |◀---------------------------------------------------------------------------------------------------| -+ | refresh end | | | -+ | | | | -++---------------------+ +---------------------+ +---------------------+ +-----------------------+ -+| refresh thread loop | | image remote module | | layer remote module | | overlay remote module | -++---------------------+ +---------------------+ +---------------------+ +-----------------------+ -+ -+``` -+ -+# 3. 接口描述 -+ -+```c -+// 初始化remote模块里的layer data -+int remote_layer_init(const char *root_dir); -+ -+// 初始化remote模块里的overlay data -+int remote_overlay_init(const char *driver_home); -+ -+// 清理remote模块的资源 -+void remote_maintain_cleanup(); -+ -+// 启动 定期更新的thread -+int start_refresh_thread(void); -+ -+// 创建新layer目录 -+int remote_layer_build_ro_dir(const char *id); -+ -+// 创建新overlay目录 -+int remote_overlay_build_ro_dir(const char *id); -+ -+// 删除layer目录 -+int remote_layer_remove_ro_dir(const char *id); -+ -+// 删除overlay目录 -+int remote_overlay_remove_ro_dir(const char *id); -+``` -+ -+# 4. 详细设计 -+分离RO目录的关键在于适配原来的代码逻辑,原先的代码在操作镜像和层的时候,不管是RO层还是RW层,从创建到删除都是在当前目录下进行的,这就是我们额外创建一个软连接的作用: -+- RO目录的作用是为了支持远程挂载 -+- 软连接的作用是模拟原来的目录结构 -+ -+这样以来,image module的逻辑几乎不需要改动,除了以下几点需要注意: -+- 创建和删除的时候需要处理一个额外的资源:软连接,之前只需要关注目录即可,现在如果创建的是只读层,就需要额外创建软连接,如果删除的是只读层,就需要额外删除软连接 -+- 以`overlay-layers`目录为例,isulad启动时会以正则规则扫描当前目录下的子目录是否合法,所以需要屏蔽`RO`目录 -+ -+定时刷新的逻辑如下: -+以`overlay-image`目录的刷新为例,通过维护两个集合`new` 和 `old`, 这两个集合初始都为空,通过扫描目录里面所有的子目录,把合法的image id 加入`new`集合, 通过计算两个集合的差, 在集合`new`里面存在而在集合`old`里面不存在的id则为新增加的镜像, 在集合`old`里面存在而在集合`new`里面不存在的id则为删除的镜像。处理新增加的镜像还需要额外的一个判断,就是判断镜像的层数据是否已经加载,如果没加载则该镜像本轮不加载。`overlay-layers` 和 `overlay` 目录的处理逻辑类似。 -+ -+ -+*可能的使用场景* -+一个可能的使用场景就是通过远程文件共享(nfs)让多台启动的isulad实例共享某些只读的数据;具体来说,在两个host A和B上都启动了iSulad, 如果A pull或者load了镜像busybox, 那么B上的isulad同样可以使用这个镜像。 -+ -+``` -+operations: -+ -++--------------------+ +--------------------+ +--------------------+ -+| isula pull busybox | | without pull | | without pull | -+| isula pull nginx | | isula run busybox | | isula run ngxinx | -+| isula pull ... | | isula run ... | | isula run centos | -++--------------------+ +--------------------+ +--------------------+ -+ | | | -+ ▼ ▼ ▼ -++======================+ +======================+ +======================+ -+| isulad on Host A | | isulad on Host B | | isulad on Host C | -++======================+ +======================+ +======================+ -+| image store module | | image store module | | image store module | -++----------------------+ +----------------------+ +----------------------+ -+| refresh thread off | | refresh thread on | | refresh thread on | -++----------------------+ +----------------------+ +----------------------+ -+| local rw | remote ro | | local rw | remote ro | | local rw | remote ro | -++----------------------+ +----------------------+ +----------------------+ -+ | | | -+ | enable nfs | mounted on | mounted on -+ ▼ ▼ ▼ -+ +=====================================================================+ -+ | nfs directory over network | -+ +=====================================================================+ -+ | image store | -+ +---------------------------------------------------------------------+ -+ | image | image | image | image | image | -+ | busybox | nginx | my-app | ubuntu | centos | -+ | 4MB | 100MB | 1.2GB | 5MB | 6MB | -+ +---------------------------------------------------------------------+ -+ | layers store | -+ +---------------------------------------------------------------------+ -+ | layer | layer | layer | -+ | 05c361054 | 8a9d75caad | 789d605ac | -+ +---------------------------------------------------------------------+ -+``` -+ -+*同步问题* -+共享资源并发使用发生竞争的条件是:`two process access the same resource concurrently and at least one of the access is a writer`。这里的共享资源有: -+ -+``` -++============================+ +=====================================+ -+| Sharing Resource | | Storage | -++============================+ +=====================================+ -+| read-only overlay layers | mounted | /var/lib/isulad/overlay/RO | -++----------------------------+ ======▶ +-------------------------------------+ -+| reald-only layers metadata | shared | /var/lib/isulad/overlay-layers/RO | -++----------------------------+ +-------------------------------------+ -+| reald-only images | | /var/lib/isulad/overlay-images | -++----------------------------+ +-------------------------------------+ -+ -+``` -+而分布在不同host上的isulad进程通过网络共享这些资源,如果不考虑新增删除的情况,不会出现资源竞争,所有的节点都是reader。 -+ -+对于主节点pull镜像,其他节点使用镜像的情况,主节点是writer,其他节点是reader。这时候可能出现的问题是主节点pull镜像的流程没有完全结束,但是其他节点开始使用这个不完整的镜像。对于这个问题的解决方案是通过扫描image目录来新增镜像,通过这种方式能确保一定该新增镜像的信息完整。 -+ -+``` -++---------------------+ +--------------------+ +-----------------------+ +-----------------------+ -+| registry | | image module | | layer store module | | driver overlay module | -++---------------------+ +--------------------+ +-----------------------+ +-----------------------+ -+ | | | | -+ | | | | -+ | registry_pull | | | -+ | fetch_manifest | | | -+ | check reuse and fetch | | | -+ | +----------------+ | | | -+ | | register_layer | | | | -+ | +----------------+ | | | -+ |-----------------------------------------------------------------▶| | -+ | | | layer_store_create | -+ | | |--------------------------------▶| -+ | | | | driver_create_layer -+ | | | | +--------------------+ -+ | | | | | setup overlay dir | -+ | | | | +--------------------+ -+ | | | | driver_create_layer done -+ | | |◀--------------------------------| -+ | | | +------------+ | -+ | | | | save layer | | -+ | | | +------------+ | -+ | | | layer create done | -+ |◀-----------------------------------------------------------------| | -+ | all layer setup | | | -+ | +----------------+ | | | -+ | | register image | | | | -+ | +----------------+ | | | -+ |-------------------------------▶| | | -+ | | storage_img_create | | -+ | | set img top layer | | -+ | | img create | | -+ | | +------------+ | | -+ | | | save image | | | -+ | | +------------+ | | -+ | | create image done | | -+ |◀-------------------------------| | | -+ | pull img done | | | -+ | | | | -+ | | | | -++---------------------+ +--------------------+ +-----------------------+ +-----------------------+ -+| registry | | image module | | layer store module | | driver overlay module | -++---------------------+ +--------------------+ +-----------------------+ +-----------------------+ -+ -+``` -+ -+至于主节点删除镜像的情况,主节点是writer,其他节点是reader,可能出现的情况是其他节点还有容器在使用镜像的时候,镜像被删除,但是根据需求场景暂不处理这种情况。其他的处理与新增镜像相同,依然以image dir作为入口,扫描发现删除的镜像。删除时需要关注layer和overlay目录下的软链接。 --- -2.25.1 - diff --git a/0045-Refine-a-minor-log-message.patch b/0045-Refine-a-minor-log-message.patch deleted file mode 100644 index 675984b..0000000 --- a/0045-Refine-a-minor-log-message.patch +++ /dev/null @@ -1,34 +0,0 @@ -From 9b7e37018612f7443a0f8f966106995da31cc292 Mon Sep 17 00:00:00 2001 -From: sailorvii -Date: Fri, 17 Mar 2023 06:34:37 +0000 -Subject: [PATCH 45/53] Refine a minor log message. - ---- - src/daemon/modules/network/native/adaptor_native.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/src/daemon/modules/network/native/adaptor_native.c b/src/daemon/modules/network/native/adaptor_native.c -index 02ff3642..8bc386d1 100644 ---- a/src/daemon/modules/network/native/adaptor_native.c -+++ b/src/daemon/modules/network/native/adaptor_native.c -@@ -1764,8 +1764,7 @@ bool has_connected_container(native_network *network) - message[pos - 1] = '\0'; - } - -- ERROR("network %s has connected containers [ %s ]", network->conflist->list->name, message); -- isulad_set_error_message("network %s has connected containers [ %s ]", network->conflist->list->name, message); -+ INFO("network %s has connected containers [ %s ]", network->conflist->list->name, message); - - out: - native_network_unlock(network); -@@ -1923,6 +1922,7 @@ int native_config_remove(const char *name, char **res_name) - } - - if (has_connected_container(network)) { -+ isulad_set_error_message("network %s has connected containers", network->conflist->list->name); - ret = -1; - goto out; - } --- -2.25.1 - diff --git a/0046-modify-the-return-value-of-the-util_waitpid_with_tim.patch b/0046-modify-the-return-value-of-the-util_waitpid_with_tim.patch deleted file mode 100644 index f5a1aed..0000000 --- a/0046-modify-the-return-value-of-the-util_waitpid_with_tim.patch +++ /dev/null @@ -1,44 +0,0 @@ -From ea8962c6ee3ed05cfabe84c58c47cf56e3388242 Mon Sep 17 00:00:00 2001 -From: zhongtao -Date: Mon, 20 Mar 2023 14:17:00 +0800 -Subject: [PATCH 46/53] modify the return value of the - util_waitpid_with_timeout to status - -Signed-off-by: zhongtao ---- - src/utils/cutils/utils.c | 5 +++-- - 1 file changed, 3 insertions(+), 2 deletions(-) - -diff --git a/src/utils/cutils/utils.c b/src/utils/cutils/utils.c -index 983d81d8..3500d8f8 100644 ---- a/src/utils/cutils/utils.c -+++ b/src/utils/cutils/utils.c -@@ -319,6 +319,7 @@ rep: - int util_waitpid_with_timeout(pid_t pid, const int64_t timeout, handle_timeout_callback_t cb) - { - int nret = 0; -+ int st; - time_t start_time = time(NULL); - time_t end_time; - double interval; -@@ -328,7 +329,7 @@ int util_waitpid_with_timeout(pid_t pid, const int64_t timeout, handle_timeout_c - } - - for (;;) { -- nret = waitpid(pid, NULL, WNOHANG); -+ nret = waitpid(pid, &st, WNOHANG); - if (nret == pid) { - break; - } -@@ -347,7 +348,7 @@ int util_waitpid_with_timeout(pid_t pid, const int64_t timeout, handle_timeout_c - // sleep some time instead to avoid cpu full running and then retry. - usleep(100); - } -- return 0; -+ return st; - } - - int util_wait_for_pid_status(pid_t pid) --- -2.25.1 - diff --git a/0047-fix-util_getgrent_r-overflow.patch b/0047-fix-util_getgrent_r-overflow.patch deleted file mode 100644 index 038aabc..0000000 --- a/0047-fix-util_getgrent_r-overflow.patch +++ /dev/null @@ -1,74 +0,0 @@ -From fc853c60c56fc3e8dc3c78a8081fea2f9ecc64dc Mon Sep 17 00:00:00 2001 -From: zhangxiaoyu -Date: Tue, 21 Mar 2023 18:52:43 +0800 -Subject: [PATCH 47/53] fix util_getgrent_r overflow - -Signed-off-by: zhangxiaoyu ---- - src/utils/cutils/utils_pwgr.c | 3 +++ - test/cutils/utils_pwgr/long_sample | 1 + - test/cutils/utils_pwgr/utils_pwgr_ut.cc | 28 +++++++++++++++++++++++++ - 3 files changed, 32 insertions(+) - create mode 100644 test/cutils/utils_pwgr/long_sample - -diff --git a/src/utils/cutils/utils_pwgr.c b/src/utils/cutils/utils_pwgr.c -index 75efadb2..064bae1f 100644 ---- a/src/utils/cutils/utils_pwgr.c -+++ b/src/utils/cutils/utils_pwgr.c -@@ -157,6 +157,9 @@ static char **hold_string_list(char **line, char *buf_start, char *buf_end, cons - } - - out: -+ if ((char *)(walker + 2) > buf_end) { -+ return NULL; -+ } - *walker = NULL; - return result; - } -diff --git a/test/cutils/utils_pwgr/long_sample b/test/cutils/utils_pwgr/long_sample -new file mode 100644 -index 00000000..7e991ffd ---- /dev/null -+++ b/test/cutils/utils_pwgr/long_sample -@@ -0,0 +1 @@ -+adm:x:4:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -\ No newline at end of file -diff --git a/test/cutils/utils_pwgr/utils_pwgr_ut.cc b/test/cutils/utils_pwgr/utils_pwgr_ut.cc -index 431372d3..20de8a89 100644 ---- a/test/cutils/utils_pwgr/utils_pwgr_ut.cc -+++ b/test/cutils/utils_pwgr/utils_pwgr_ut.cc -@@ -140,3 +140,31 @@ TEST(utils_pwgr, test_getgrent_r) - - fclose(f_gr); - } -+ -+TEST(utils_pwgr, test_long_getgrent_r) -+{ -+ std::string path = "../../../../test/cutils/utils_pwgr/long_sample"; -+ FILE *f_gr = fopen(path.c_str(), "r"); -+ ASSERT_NE(f_gr, nullptr); -+ -+ struct group gr { -+ 0 -+ }; -+ struct group *pgr = nullptr; -+ char mark_before[BUFSIZ] = { 0 }; -+ char buf[BUFSIZ] = { 0 }; -+ char mark_after[BUFSIZ] = { 0 }; -+ -+ for (int num = 0; num < BUFSIZ; num++) { -+ mark_before[num] = 0xEE; -+ mark_after[num] = 0xDD; -+ } -+ -+ (void)util_getgrent_r(f_gr, &gr, buf, sizeof(buf), &pgr); -+ for (int num = 0; num < BUFSIZ; num++) { -+ ASSERT_EQ(mark_before[num], (char)0xEE); -+ ASSERT_EQ(mark_after[num], (char)0xDD); -+ } -+ -+ fclose(f_gr); -+} --- -2.25.1 - diff --git a/0048-add-ut-for-runc.patch b/0048-add-ut-for-runc.patch deleted file mode 100644 index e7e4a01..0000000 --- a/0048-add-ut-for-runc.patch +++ /dev/null @@ -1,188 +0,0 @@ -From c20a580a7d8c6a8a16273513c6d11edd827b90b0 Mon Sep 17 00:00:00 2001 -From: zhongtao -Date: Thu, 23 Feb 2023 14:39:23 +0800 -Subject: [PATCH 48/53] add ut for runc - -Signed-off-by: zhongtao ---- - .../modules/runtime/isula/isula_rt_ops.c | 5 ++ - test/cutils/utils_utils/CMakeLists.txt | 2 + - test/cutils/utils_utils/utils_utils_ut.cc | 61 +++++++++++++++++++ - test/runtime/isula/isula_rt_ops_ut.cc | 56 +++++++++++++++++ - 4 files changed, 124 insertions(+) - -diff --git a/src/daemon/modules/runtime/isula/isula_rt_ops.c b/src/daemon/modules/runtime/isula/isula_rt_ops.c -index 5ec0e639..fe0f227c 100644 ---- a/src/daemon/modules/runtime/isula/isula_rt_ops.c -+++ b/src/daemon/modules/runtime/isula/isula_rt_ops.c -@@ -1553,6 +1553,11 @@ out: - - int rt_isula_kill(const char *id, const char *runtime, const rt_kill_params_t *params) - { -+ if (id == NULL || runtime == NULL || params == NULL || params->pid < 0) { -+ ERROR("Invalid arguments not allowed"); -+ return -1; -+ } -+ - if (util_process_alive(params->pid, params->start_time) == false) { - if (params->signal == params->stop_signal || params->signal == SIGKILL) { - WARN("Process %d is not alive", params->pid); -diff --git a/test/cutils/utils_utils/CMakeLists.txt b/test/cutils/utils_utils/CMakeLists.txt -index 99a83e7a..6d276390 100644 ---- a/test/cutils/utils_utils/CMakeLists.txt -+++ b/test/cutils/utils_utils/CMakeLists.txt -@@ -12,6 +12,8 @@ target_include_directories(${EXE} PUBLIC - ${CMAKE_CURRENT_SOURCE_DIR}/../../../src/utils/cutils/map - ${CMAKE_CURRENT_SOURCE_DIR}/../../../src/utils/cutils - ) -+ -+set_target_properties(${EXE} PROPERTIES LINK_FLAGS "-Wl,--wrap,waitpid") - target_link_libraries(${EXE} ${GTEST_BOTH_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} ${ISULA_LIBUTILS_LIBRARY} libutils_ut -lcrypto -lyajl -lz) - add_test(NAME ${EXE} COMMAND ${EXE} --gtest_output=xml:${EXE}-Results.xml) - set_tests_properties(${EXE} PROPERTIES TIMEOUT 120) -diff --git a/test/cutils/utils_utils/utils_utils_ut.cc b/test/cutils/utils_utils/utils_utils_ut.cc -index 5308351a..18f0a506 100644 ---- a/test/cutils/utils_utils/utils_utils_ut.cc -+++ b/test/cutils/utils_utils/utils_utils_ut.cc -@@ -15,6 +15,44 @@ - - #include - #include "utils.h" -+#include "mock.h" -+ -+static pid_t test_pid = -1; -+ -+extern "C" { -+ DECLARE_WRAPPER_V(waitpid, pid_t, (__pid_t pid, int *stat_loc, int options)); -+ DEFINE_WRAPPER_V(waitpid, pid_t, (__pid_t pid, int *stat_loc, int options),(pid, stat_loc, options)); -+} -+ -+static pid_t waitpid_none_zero(__pid_t pid, int *stat_loc, int options) -+{ -+ *stat_loc = 256; -+ return test_pid; -+} -+ -+static pid_t waitpid_zero(__pid_t pid, int *stat_loc, int options) -+{ -+ *stat_loc = 0; -+ return test_pid; -+} -+ -+#define ExitSignalOffset 128 -+static int status_to_exit_code(int status) -+{ -+ int exit_code = 0; -+ -+ if (WIFEXITED(status)) { -+ exit_code = WEXITSTATUS(status); -+ } else { -+ exit_code = -1; -+ } -+ if (WIFSIGNALED(status)) { -+ int signal; -+ signal = WTERMSIG(status); -+ exit_code = ExitSignalOffset + signal; -+ } -+ return exit_code; -+} - - TEST(utils_utils, test_util_mem_realloc) - { -@@ -284,4 +322,27 @@ TEST(utils_utils, test_do_retry_call) - DO_RETRY_CALL(10, 100, nret, retry_call_test, 11); - ASSERT_EQ(global_total, 10); - ASSERT_EQ(nret, -1); -+} -+ -+TEST(utils_utils, test_util_waitpid_with_timeout) -+{ -+ int64_t timeout = 2; -+ pid_t pid = getpid(); -+ int status = 0; -+ -+ test_pid = pid; -+ MOCK_SET_V(waitpid, waitpid_none_zero); -+ status = util_waitpid_with_timeout(test_pid, timeout, nullptr); -+ ASSERT_EQ(status, 256); -+ ASSERT_EQ(status_to_exit_code(status), 1); -+ MOCK_CLEAR(waitpid); -+ -+ MOCK_SET_V(waitpid, waitpid_zero); -+ status = util_waitpid_with_timeout(test_pid, timeout, nullptr); -+ ASSERT_EQ(status, 0); -+ ASSERT_EQ(status_to_exit_code(status), 0); -+ MOCK_CLEAR(waitpid); -+ -+ ASSERT_EQ(util_waitpid_with_timeout(pid, timeout, nullptr), -1); -+ - } -\ No newline at end of file -diff --git a/test/runtime/isula/isula_rt_ops_ut.cc b/test/runtime/isula/isula_rt_ops_ut.cc -index 03c213a5..f37e62a0 100644 ---- a/test/runtime/isula/isula_rt_ops_ut.cc -+++ b/test/runtime/isula/isula_rt_ops_ut.cc -@@ -163,3 +163,59 @@ TEST_F(IsulaRtOpsUnitTest, test_rt_isula_exec_resize) - close(fd); - ASSERT_EQ(system(rm_path.c_str()), 0); - } -+ -+TEST_F(IsulaRtOpsUnitTest, test_rt_isula_update) -+{ -+ rt_update_params_t params = {}; -+ ASSERT_EQ(rt_isula_update(nullptr, nullptr, nullptr), -1); -+ -+ ASSERT_EQ(rt_isula_update("123", nullptr, nullptr), -1); -+ ASSERT_EQ(rt_isula_update("123", "runtime", nullptr), -1); -+ ASSERT_EQ(rt_isula_update("123", "runtime", ¶ms), -1); -+} -+ -+TEST_F(IsulaRtOpsUnitTest, test_rt_isula_pause) -+{ -+ rt_pause_params_t params = {}; -+ ASSERT_EQ(rt_isula_pause(nullptr, nullptr, nullptr), -1); -+ -+ ASSERT_EQ(rt_isula_pause("123", nullptr, nullptr), -1); -+ ASSERT_EQ(rt_isula_pause("123", "runtime", nullptr), -1); -+ ASSERT_EQ(rt_isula_pause("123", "runtime", ¶ms), -1); -+} -+ -+TEST_F(IsulaRtOpsUnitTest, test_rt_isula_resume) -+{ -+ rt_resume_params_t params = {}; -+ ASSERT_EQ(rt_isula_resume(nullptr, nullptr, nullptr), -1); -+ -+ ASSERT_EQ(rt_isula_resume("123", nullptr, nullptr), -1); -+ ASSERT_EQ(rt_isula_resume("123", "runtime", nullptr), -1); -+ ASSERT_EQ(rt_isula_resume("123", "runtime", ¶ms), -1); -+} -+ -+TEST_F(IsulaRtOpsUnitTest, test_rt_isula_resources_stats) -+{ -+ rt_stats_params_t params = {}; -+ struct runtime_container_resources_stats_info stats = {}; -+ -+ ASSERT_EQ(rt_isula_resources_stats(nullptr, nullptr, nullptr, nullptr), -1); -+ -+ ASSERT_EQ(rt_isula_resources_stats("123", nullptr, nullptr, nullptr), -1); -+ ASSERT_EQ(rt_isula_resources_stats("123", "runtime", nullptr, nullptr), -1); -+ ASSERT_EQ(rt_isula_resources_stats("123", "runtime", ¶ms, nullptr), -1); -+ params.state = "/var/run/isulad/runtime"; -+ ASSERT_EQ(rt_isula_resources_stats("123", "runtime", ¶ms, &stats), -1); -+} -+ -+TEST_F(IsulaRtOpsUnitTest, test_rt_isula_kill) -+{ -+ rt_kill_params_t kill_params = { -+ .pid = -1, -+ }; -+ ASSERT_EQ(rt_isula_kill(nullptr, nullptr, nullptr), -1); -+ -+ ASSERT_EQ(rt_isula_kill("123", nullptr, nullptr), -1); -+ ASSERT_EQ(rt_isula_kill("123", "runtime", nullptr), -1); -+ ASSERT_EQ(rt_isula_kill("123", "runtime", &kill_params), -1); -+} -\ No newline at end of file --- -2.25.1 - diff --git a/0049-add-runc-doc.patch b/0049-add-runc-doc.patch deleted file mode 100644 index 11f8de2..0000000 --- a/0049-add-runc-doc.patch +++ /dev/null @@ -1,506 +0,0 @@ -From eb3e8dd9e87e926a121715d103cc6c3cb20388a7 Mon Sep 17 00:00:00 2001 -From: zhongtao -Date: Fri, 17 Feb 2023 14:33:15 +0800 -Subject: [PATCH 49/53] add runc doc - -Signed-off-by: zhongtao ---- - docs/design/README_zh.md | 1 + - .../design/detailed/Runtime/runc_design_zh.md | 264 ++++++++++++++++++ - docs/images/isulad_shim_flow_chart.svg | 16 ++ - docs/images/k8s_isulad_flow_chart.svg | 16 ++ - docs/manual/README_zh.md | 6 +- - docs/manual/runc_config_zh.md | 134 +++++++++ - 6 files changed, 436 insertions(+), 1 deletion(-) - create mode 100644 docs/design/detailed/Runtime/runc_design_zh.md - create mode 100755 docs/images/isulad_shim_flow_chart.svg - create mode 100644 docs/images/k8s_isulad_flow_chart.svg - create mode 100644 docs/manual/runc_config_zh.md - -diff --git a/docs/design/README_zh.md b/docs/design/README_zh.md -index 1f1c94b5..e7763a42 100644 ---- a/docs/design/README_zh.md -+++ b/docs/design/README_zh.md -@@ -49,6 +49,7 @@ - ## Runtime - - - 查看 runtime 模块的设计文档: [runtime_design](./detailed/Runtime/runtime_design_zh.md) 。 -+- 查看 isulad 支持runc 的设计文档:[runc_design](./detailed/Runtime/runc_design_zh.md)。 - - ## Security - -diff --git a/docs/design/detailed/Runtime/runc_design_zh.md b/docs/design/detailed/Runtime/runc_design_zh.md -new file mode 100644 -index 00000000..3af3ea02 ---- /dev/null -+++ b/docs/design/detailed/Runtime/runc_design_zh.md -@@ -0,0 +1,264 @@ -+| Author | zhongtao | -+| ------ | --------------------- | -+| Date | 2023-03-21 | -+| Email | zhongtao17@huawei.com | -+ -+# 方案目标 -+ -+isulad 支持使用runc作为容器runtime。用户可以在启动容器时配置`--runtime=runc`创建runtime为runc的容器: -+```bash -+$ isula run -tid -n test --runtime=runc busybox sh -+eb77c672a148cc4cefa0d6e7c5847f5a87d0c5353e245461b68820bd9af90c67 -+$ isula inspect eb77 | grep -i runc -+ "ResolvConfPath": "/var/lib/isulad/engines/runc/eb77c672a148cc4cefa0d6e7c5847f5a87d0c5353e245461b68820bd9af90c67/resolv.conf", -+ "HostsPath": "/var/lib/isulad/engines/runc/eb77c672a148cc4cefa0d6e7c5847f5a87d0c5353e245461b68820bd9af90c67/hosts", -+ "LogPath": "/var/lib/isulad/engines/runc/eb77c672a148cc4cefa0d6e7c5847f5a87d0c5353e245461b68820bd9af90c67/console.log", -+ "Runtime": "runc", -+ "log.console.file": "/var/lib/isulad/engines/runc/eb77c672a148cc4cefa0d6e7c5847f5a87d0c5353e245461b68820bd9af90c67/console.log", -+``` -+ -+同时,也可以在`/etc/isulad/daemon.json`中配置`default-runtime`为runc并重启isulad,修改isulad创建容器时默认使用的runtime。 -+```sh -+$ vim /etc/isulad/daemon.json -+ ... -+ "default-runtime": "runc" -+ ... -+$ sudo isulad -+``` -+ -+# 总体设计 -+ -+由于isulad与runc之间的交互存在gap,且将容器创建成功之后,容器进程的生命周期与isulad进程的生命周期没有必然联系,因此我们设计了一个isulad-shim进程,用于isulad与runc的交互并将isulad与容器实例解耦。同时,由于只有create以及exec涉及到在容器中新建进程,因此只有这两个子命令需要创建isulad-shim。其他的子命令直接通过调用runc二进制实现。 -+ -+## 时序图 -+ -+```mermaid -+sequenceDiagram -+ participant isula -+ participant kubelet -+ participant isulad -+ participant supervisor -+ participant shim -+ participant runc -+ participant container -+ -+ isula->>isulad: request -+ kubelet->>isulad:request -+ alt create -+ isulad->>shim:shim_creat() -+ shim->>runc: execvp(runc, params) -+ runc ->> container:create request -+ container ->> runc:success -+ runc ->> shim:get process pid -+ isulad ->> isulad:get process pid -+ isulad ->> supervisor:add monitor -+ loop epoll exit_fd -+ supervisor ->> shim:if exit? -+ end -+ else exec -+ isulad->>shim:shim_creat() -+ par -+ shim->>runc: execvp(runc, params) -+ runc ->> container:exec request -+ container ->> runc:success -+ runc ->> shim:get process pid -+ shim ->> container:wait process pid -+ shim ->> shim:exit -+ and -+ isulad ->> isulad: wait isulad-shim pid -+ end -+ else others container cmd -+ isulad->>runc: runtime_call_simple() -+ runc ->> container:cmd -+ container ->>runc:success -+ runc ->>isulad:success -+ end -+ isulad ->> isula:response -+ isulad ->> kubelet:response -+``` -+ -+# 接口描述 -+ -+## cri接口 -+ -+### PodSandboxManagerService -+ -+```h -+auto RunPodSandbox(const runtime::v1alpha2::PodSandboxConfig &config, const std::string &runtimeHandler,Errors &error) -> std::string; -+ -+void StopPodSandbox(const std::string &podSandboxID, Errors &error); -+ -+void RemovePodSandbox(const std::string &podSandboxID, Errors &error); -+ -+auto PodSandboxStatus(const std::string &podSandboxID, Errors &error) -+ -> std::unique_ptr; -+ -+void ListPodSandbox(const runtime::v1alpha2::PodSandboxFilter *filter,std::vector> *pods, Errors &error); -+ -+// This feature is temporarily not supported -+void PortForward(const runtime::v1alpha2::PortForwardRequest &req,runtime::v1alpha2::PortForwardResponse *resp,Errors &error); -+ ... ... -+}; -+} // namespace CRI -+``` -+ -+### ContainerManagerService -+ -+```c -+auto CreateContainer(const std::string &podSandboxID, const runtime::v1alpha2::ContainerConfig &containerConfig,const runtime::v1alpha2::PodSandboxConfig &podSandboxConfig, Errors &error)-> std::string override; -+ -+void StartContainer(const std::string &containerID, Errors &error) override; -+ -+void StopContainer(const std::string &containerID, int64_t timeout, Errors &error) override; -+ -+void RemoveContainer(const std::string &containerID, Errors &error) override; -+ -+void ListContainers(const runtime::v1alpha2::ContainerFilter *filter, -+ std::vector> *containers, Errors &error) override; -+ -+void ListContainerStats(const runtime::v1alpha2::ContainerStatsFilter *filter,std::vector> *containerstats,Errors &error) override; -+ -+auto ContainerStats(const std::string &containerID, Errors &error) -+ -> std::unique_ptr override; -+ -+auto ContainerStatus(const std::string &containerID, Errors &error) -> std::unique_ptr override; -+ -+void ExecSync(const std::string &containerID, const google::protobuf::RepeatedPtrField &cmd, int64_t timeout, runtime::v1alpha2::ExecSyncResponse *reply, Errors &error) override; -+ -+void Exec(const runtime::v1alpha2::ExecRequest &req, runtime::v1alpha2::ExecResponse *resp, Errors &error) override; -+ -+void Attach(const runtime::v1alpha2::AttachRequest &req, runtime::v1alpha2::AttachResponse *resp, Errors &error) override; -+ -+void UpdateContainerResources(const std::string &containerID, -+ const runtime::v1alpha2::LinuxContainerResources &resources, Errors &error) override; -+``` -+ -+### RuntimeManagerService -+ -+```c -+void UpdateRuntimeConfig(const runtime::v1alpha2::RuntimeConfig &config, Errors &error) override; -+ -+// 对应crictl info -+auto Status(Errors &error) -> std::unique_ptr override; -+``` -+ -+### ImageManagerService -+ -+```c -+void ListImages(const runtime::v1alpha2::ImageFilter &filter, std::vector> *images, Errors &error) override; std::unique_ptr ImageStatus(const runtime::v1alpha2::ImageSpec &image, Errors &error) override; -+ -+std::string PullImage(const runtime::v1alpha2::ImageSpec &image, const runtime::v1alpha2::AuthConfig &auth, Errors &error) override; -+ -+void RemoveImage(const runtime::v1alpha2::ImageSpec &image, Errors &error) override; -+ -+void ImageFsInfo(std::vector> *usages, Errors &error) override -+``` -+ -+ -+ -+## isula_rt_ops模块 -+ -+```c -+// 检测runtime是否为isula_rt_ops模块处理的目标runtime -+bool rt_isula_detect(const char *runtime); -+ -+int rt_isula_create(const char *name, const char *runtime, const rt_create_params_t *params); -+ -+int rt_isula_start(const char *name, const char *runtime, const rt_start_params_t *params, pid_ppid_info_t *pid_info); -+ -+// restart not implemented -+int rt_isula_restart(const char *name, const char *runtime, const rt_restart_params_t *params); -+ -+int rt_isula_clean_resource(const char *name, const char *runtime, const rt_clean_params_t *params); -+ -+int rt_isula_rm(const char *name, const char *runtime, const rt_rm_params_t *params); -+ -+int rt_isula_exec(const char *id, const char *runtime, const rt_exec_params_t *params, int *exit_code); -+ -+int rt_isula_status(const char *name, const char *runtime, const rt_status_params_t *params, -+ struct runtime_container_status_info *status); -+ -+// isula attach not support on isulad-shim -+int rt_isula_attach(const char *id, const char *runtime, const rt_attach_params_t *params); -+ -+int rt_isula_update(const char *id, const char *runtime, const rt_update_params_t *params); -+ -+int rt_isula_pause(const char *id, const char *runtime, const rt_pause_params_t *params); -+ -+int rt_isula_resume(const char *id, const char *runtime, const rt_resume_params_t *params); -+ -+// isula top/listpids not support on isulad-shim -+int rt_isula_listpids(const char *name, const char *runtime, const rt_listpids_params_t *params, -+ rt_listpids_out_t *out); -+ -+int rt_isula_resources_stats(const char *name, const char *runtime, const rt_stats_params_t *params, -+ struct runtime_container_resources_stats_info *rs_stats); -+// rt_isula_resize not impl -+int rt_isula_resize(const char *id, const char *runtime, const rt_resize_params_t *params); -+ -+int rt_isula_exec_resize(const char *id, const char *runtime, const rt_exec_resize_params_t *params); -+ -+int rt_isula_kill(const char *id, const char *runtime, const rt_kill_params_t *params); -+ -+``` -+ -+ -+ -+# 详细设计 -+ -+## create 实现流程 -+ -+isulad端: -+ -+1. 创建process文件:create_process_json_file(); -+2. 获得runtime二进制:get_runtime_cmd(runtime, &cmd); -+3. 利用两次fork()创建isulad-shim进程, 此时的isulad-shim进程是1号进程的子进程,与isulad无父子关系:shim_create(); -+4. 若shim创建成功则直接返回成功,若失败则调用runtime_call_delete_force()将容器进程都force delete。 -+ -+isulad-shim端: -+ -+1. 根据解析process文件新建一个process,new_process(); -+2. 开启exit_fifo:open_no_inherit("exit_fifo", O_WRONLY, -1); -+3. 为io_copy创建io_epoll_loop线程:process_io_init(); -+4. 创建进行io copy的线程,并将isulad的console与runtime的console连接起来:open_io(); -+5. 创建运行runtime的子进程,获得容器中进程的pid,create_process(); -+6. 循环wait子进程,直到wait到的子进程为容器进程pid则退出shim进程,process_signal_handle_routine(); -+ -+## exec 实现流程 -+ -+isulad端: -+ -+1. 创建process文件:create_process_json_file(); -+2. 获得runtime二进制:get_runtime_cmd(runtime, &cmd); -+3. 若`--detach=false`,直接fork()创建isulad-shim进程,此时的isulad-shim进程是isulad进程的子进程,isulad进程wait等待isulad-shim进程退出;若-`-detach=true`,则与create一样,创建独立的isulad-shim进程:shim_create(); -+4. 循环读取pid文件获得容器进程id说明exec命令成功,get_container_process_pid。 -+ -+isulad-shim端: -+ -+1. 根据解析process文件新建一个process,new_process(); -+2. 为io_copy创建io_epoll_loop线程:process_io_init(); -+3. 创建进行io copy的线程,并将isulad的console与runtime的console连接起来:open_io(); -+4. 创建运行runtime的子进程,获得容器中进程的pid,create_process(); -+5. 循环wait子进程,直到wait到的子进程为容器进程pid则退出shim进程,process_signal_handle_routine(); -+ -+ -+ -+## start 实现流程 -+ -+isulad端: -+ -+1. 分别读取pid以及shim-pid文件获得容器进程pid以及isulad-shim pid; -+2. 依次获得容器进程以及isulad-shim进程的proc信息:util_get_process_proc_info(); -+3. 根据proc信息为pid_ppid_info_t结构体赋值; -+4. 直接调用runc二进制start容器:runtime_call_simple(); -+5. 之后isulad根据监听exit_fifo_fd,感知容器是否退出,从而更新容器状态。 -+ -+其他子命令与satrt类似,均是调用runtime_call_simple()函数直接调用runc二进制,此处不再赘述。 -+ -+ -+ -+## 流程图 -+ -+### isulad与isulad-shim交互流程图 -+ -+![isulad_shim_flow_chart](../../../images/isulad_shim_flow_chart.svg) -diff --git a/docs/images/isulad_shim_flow_chart.svg b/docs/images/isulad_shim_flow_chart.svg -new file mode 100755 -index 00000000..9a509b80 ---- /dev/null -+++ b/docs/images/isulad_shim_flow_chart.svg -@@ -0,0 +1,16 @@ -+ -+ -+ -+ -+ -+ -+ isulad-shimmain()isulad-shim id bundle runtime info 2m0s从process.json中加载process:new_processif p->state->exec?将create的process存储在process.jsonwe文件中:create_process_json_fileisuladget_runtime_cmdret = shim_createret = -1runtime_call_delete_forcert_isula_creatert_isula_execget_runtime_cmdret = shim_createget_container_process_pid将exec的process存储在process.jsonwe文件中create_process_json_fileget_container_process_pidfile_read_int(shim_pid_file_name, &shim_pid);util_get_process_proc_inforuntime_call_simple(workdir,runtime, "start", NULL, 0, id, NULL)rt_isula_startfg=false;exit_code=NULLshim_createfork()若设置了--detach,则fg=true;否则为false;exit_code!=NULLparent(isulad)child(shim)从读fifo中读取isulad-shimxier写入的内容num = util_read_nointrif num > 0nowait isulad-shim或者shim parent 进程util_waitpid_with_timeoutif ret != 0show_shim_runtime_errlogif timeout <= 0kill(pid, SIGKILL)yeschdir(workdir)if fgnounsetenv("NOTIFY_SOCKET")fork()parent(shim parent)child(isulad-shim)将shim的pid写入文件中:file_write_int(fpid, pid)_exit(EXIT_SUCCESS);setsid()将从父进程继承的fd关闭util_check_inheritedexecvp(SHIM_BINARY, (char * const *)params);设置启动isulad-shim超时的定时器set_timeout_exit(DEFAULT_TIMEOUT);set_subreaper()解析参数:parse_argsyes打开exit_fd用于感知退出:open_no_inherit("exit_fifo", O_WRONLY, -1)为isulad与runtime之间的io copychuan构建main loop和epoll::process_io_init(p);open_io(p, &tid_accept);no创建io copy线程:start_io_copy_threads(p);if (p->state->terminal) true开勇socket实现isulad与runtime的通信:open_terminal_io(p, tid_accept);利用pipe实现通信:open_generic_io(p);falsecreate_process(p);fork()child:runtime processparent:isulad-shim process拼接params,并调用runc二进制执行命令:exec_runtime_process(p, exec_fd[1]);读取runtime写入的信息: read_nointr(exec_fd[0],exec_buff, sizeof(exec_buff) - 1);等待runtime子进程退出:waitpid(pid, NULL, 0);获得runtime写入的容器中进程的pid:read_text_file("pid");将其赋值给process:p->ctr_pid = ctr_pid;清除超时计时器:released_timeout_exit();process_signal_handle_routine(p, tid_accept);wait任意一个子进程退出,当pid为ctr_pid时ret为0且exit_shim = true:reap_container(p->ctr_pid, &status);if ret == 0? noyesif exit_shim? yes调用runc kill命令杀死容器进程:process_kill_all(p);等待所有子进程被杀死:DO_RETRY_CALL(120, 1000000, nret, try_wait_all_child);调用runc delete命令删除容器进程:process_delete(p)if p->exit_fd > 0yeswrite_nointr(p->exit_fd, &status, sizeof(int));pthread_timedjoin_np(tid_accept, NULL, &ts);nodestroy_io_thread(p, i); -\ No newline at end of file -diff --git a/docs/images/k8s_isulad_flow_chart.svg b/docs/images/k8s_isulad_flow_chart.svg -new file mode 100644 -index 00000000..700b5b6d ---- /dev/null -+++ b/docs/images/k8s_isulad_flow_chart.svg -@@ -0,0 +1,16 @@ -+ -+ -+ -+ -+ -+ -+ kubeletclientisuladservergrpcCRIPodSandboxManagerServiceruntime service implImageManagerServiceservice_executor_t:callback函数Network::PluginManagerRunPodSandbox1. Pull the image for the sandboxEnsureSandboxImageExists2. Create the sandbox containerCreateSandboxContainerRuntimeVersionerServiceContainerManagerServicePodSandboxManagerServiceRuntimeManagerServiceRuntimeManagerServiceContainerManagerServiceRuntimeVersionerServiceservice_executor_t:callback函数Network::PluginManagerservice_executor_tservice_executor_tNetwork::PluginManager1. 创建create容器的requestGenerateSandboxCreateContainerRequest2. 发送请求m_cb->container.create(create_request, &create_response)3: Enable network SetNetworkReady4: Inspect container:直接从container_t中获得容器信息:inspect_data =CRIHelpers::InspectContainer5: Get networking info GetSandboxNetworkInfo 6: Mount network namespace when network mode is cninamespace_is_cn;prepare_network_namespace7: Setup networking for the sandbox. SetupSandboxNetwork8: Start the sandbox container. StartSandboxContainer 9: Save network settings json to disk ips_request = GenerateUpdateNetworkSettingsReqestinput:run pod的config文件解析出来的结构体output:pause容器的idCreateContainerinput:podSandboxID、containerConfig、podSandboxConfigoutput:pod中容器的id1. 根据podsandbox的id或者名字获得容器idGetRealContainerOrSandboxID2. 获得pod的runtimeGetContainerOrSandboxRuntime3. 创建pod中的容器的create请求GenerateCreateContainerRequest4. 调用创建cbm_cb->container.create -\ No newline at end of file -diff --git a/docs/manual/README_zh.md b/docs/manual/README_zh.md -index 8de5604b..1f3f37f8 100644 ---- a/docs/manual/README_zh.md -+++ b/docs/manual/README_zh.md -@@ -22,4 +22,8 @@ Device Mapper 是一个基于内核的框架,它支持 Linux 上的许多高 - - ## isula search使用指南 - --关于如何使用isula search请参考[isula_search](isula_search_zh.md) -\ No newline at end of file -+关于如何使用isula search请参考[isula_search](isula_search_zh.md) -+ -+## runc使用指南 -+ -+关于如何在isulad中使用runc请参考[runc_config](runc_config_zh.md) -\ No newline at end of file -diff --git a/docs/manual/runc_config_zh.md b/docs/manual/runc_config_zh.md -new file mode 100644 -index 00000000..003cd2c5 ---- /dev/null -+++ b/docs/manual/runc_config_zh.md -@@ -0,0 +1,134 @@ -+# runc使用指南 -+本文主要是指导iSulad社区开发者和使用者,如何配置isulad使用runc作为runtime创建容器。 -+ -+## 一、runc的安装 -+ -+`tips`: 在安装runc之前需要安装好go环境。 -+ -+isulad当前推荐的runc验证版本为v1.0.0-rc5。 -+ -+runc可以使用以下两种安装方式: -+ -+1. 直接使用包管理器安装runc: -+ -+```sh -+# centOS -+sudo yum install runc -+# Ubuntu -+sudo apt-get install runc -+``` -+ -+2. 源码编译安装runc(注意建议切换成isulad推荐的runc版本:`git checkout v1.0.0-rc5`) -+ -+```sh -+# 在GOPATH/src下创建 'github.com/opencontainers' 文件夹 -+cd github.com/opencontainers -+git clone https://github.com/opencontainers/runc -+cd runc -+ -+make -+sudo make install -+``` -+ -+还可以使用go get安装到`GOPATH`路径下(需要在GOPATH/src下创建github.com父文件夹): -+ -+```sh -+go get github.com/opencontainers/runc -+cd $GOPATH/src/github.com/opencontainers/runc -+make -+sudo make install -+``` -+ -+最终安装好的runc会在`/usr/local/sbin/runc`目录下。 -+ -+## 二、配置iSulad使用runc -+ -+### 配置文件配置 -+ -+1. 修改isulad的daemon.json,配置isulad默认使用的runtime。 -+ -+```sh -+$ vim /etc/isulad/daemon.json -+ ... -+ "default-runtime": "runc" -+ ... -+``` -+ -+2. 也可以在配置文件中配置runtimes,在其中指定使用的`path`(用于修改isulad使用的runc路径)以及`runtime-args`(对runtime所有命令配置的参数)。 -+ -+```sh -+"runtimes": { -+ "runc": { -+ "path": "/usr/local/sbin/runc", -+ "runtime-args": [ -+ ] -+ } -+ }, -+``` -+ -+之后使用root权限启动isulad服务,使修改后的配置生效即可: -+ -+```sh -+$ sudo isulad -+``` -+ -+### 单个容器配置 -+ -+使用`--runtime=runc`启动一个runtime为runc的容器。 -+ -+```sh -+isula run -tid -n test --runtime=runc busybox sh -+``` -+ -+## 三、K8s中配置pod的runtime为runc -+ -+如何与kubernetes集成请参考[k8s_integration](https://gitee.com/openeuler/iSulad/blob/master/docs/manual/k8s_integration_zh.md)。 -+ -+### 全局配置 -+ -+直接参照第二节中配置文件配置的方式修改isulad默认使用的runtime为runc,则后续使用k8s启动容器时会默认使用的runtime即为runc。 -+ -+### 使用RuntimeClass配置 -+ -+RuntimeClass 是K8s的一种内置集群资源,是一种容器运行时配置,用于运行pod中的容器。 -+ -+1. 在`/etc/isulad/daemon.json`中配置`isulad`: -+ -+ ```json -+ "runtimes": { -+ "runc-runtime": { -+ "path": "/usr/local/sbin/runc", -+ "runtime-args": [ -+ ] -+ } -+ }, -+ ``` -+ -+2. 定义 `runc-runtime.yaml`,例如创建一个`runc-runtime.yaml`内容如下:(注意handler需要与daemon.json中的名称一致) -+ -+ ```yamlapiVersion: v1 -+ apiVersion: node.k8s.io/v1beta1 -+ kind: RuntimeClass -+ metadata: -+ name: runc-runtime -+ handler: runc-runtime -+ ``` -+ -+ 之后运行`kubectl apply -f runc-runtime.yaml`命令在kubectl中让这个配置生效。 -+ -+3. 之后在创建pod时,可以在其定义的yaml文件中的`spec.runtimeClassName`中设置pod使用的runtime: -+ -+```yaml -+apiVersion: v1 -+kind: Pod -+metadata: -+ name: runc-pod-example -+spec: -+ runtimeClassName: runc-runtime -+ containers: -+ - name: runc-pod -+ image: busybox:latest -+ command: ["/bin/sh"] -+ args: ["-c", "sleep 1000"] -+``` -+ --- -2.25.1 - diff --git a/0050-fix-isula_rt_ops_ut-bugs.patch b/0050-fix-isula_rt_ops_ut-bugs.patch deleted file mode 100644 index 6f96568..0000000 --- a/0050-fix-isula_rt_ops_ut-bugs.patch +++ /dev/null @@ -1,28 +0,0 @@ -From e2382f841c7bc3215793fdd8ce29132871281810 Mon Sep 17 00:00:00 2001 -From: zhongtao -Date: Wed, 22 Mar 2023 08:02:51 +0800 -Subject: [PATCH 50/53] fix isula_rt_ops_ut bugs - -Signed-off-by: zhongtao ---- - test/runtime/isula/isula_rt_ops_ut.cc | 3 +++ - 1 file changed, 3 insertions(+) - -diff --git a/test/runtime/isula/isula_rt_ops_ut.cc b/test/runtime/isula/isula_rt_ops_ut.cc -index f37e62a0..9e014ac3 100644 ---- a/test/runtime/isula/isula_rt_ops_ut.cc -+++ b/test/runtime/isula/isula_rt_ops_ut.cc -@@ -211,7 +211,10 @@ TEST_F(IsulaRtOpsUnitTest, test_rt_isula_resources_stats) - TEST_F(IsulaRtOpsUnitTest, test_rt_isula_kill) - { - rt_kill_params_t kill_params = { -+ .signal = SIGTERM, -+ .stop_signal = SIGKILL, - .pid = -1, -+ .start_time = 12345, - }; - ASSERT_EQ(rt_isula_kill(nullptr, nullptr, nullptr), -1); - --- -2.25.1 - diff --git a/0051-refactor-remote-ro-code.patch b/0051-refactor-remote-ro-code.patch deleted file mode 100644 index c9269cb..0000000 --- a/0051-refactor-remote-ro-code.patch +++ /dev/null @@ -1,2089 +0,0 @@ -From d4816441dc5ad67cc8cbab565e5ddc0eaf838611 Mon Sep 17 00:00:00 2001 -From: "Neil.wrz" -Date: Mon, 6 Mar 2023 17:43:17 -0800 -Subject: [PATCH 51/53] refactor remote ro code - -Signed-off-by: Neil.wrz ---- - CI/make-and-install.sh | 2 +- - .../oci/storage/image_store/CMakeLists.txt | 3 - - .../oci/storage/image_store/image_store.c | 37 +-- - .../oci/storage/image_store/image_store.h | 13 +- - .../oci/storage/layer_store/CMakeLists.txt | 3 - - .../graphdriver/overlay2/CMakeLists.txt | 3 - - .../graphdriver/overlay2/driver_overlay2.h | 8 - - .../oci/storage/layer_store/layer_store.c | 230 +++++++++--------- - .../oci/storage/layer_store/layer_store.h | 9 +- - .../image_remote_impl.c | 61 +++-- - .../layer_remote_impl.c | 71 +++--- - .../overlay_remote_impl.c | 103 +++++--- - .../remote_layer_support/remote_support.c | 141 ++++++----- - .../remote_layer_support/remote_support.h | 62 +++-- - .../ro_symlink_maintain.c | 124 +--------- - .../ro_symlink_maintain.h | 19 +- - .../modules/image/oci/storage/storage.c | 4 +- - src/utils/cutils/map/rb_tree.c | 1 + - test/image/oci/registry/CMakeLists.txt | 2 + - test/image/oci/storage/CMakeLists.txt | 3 + - test/image/oci/storage/images/CMakeLists.txt | 2 + - test/image/oci/storage/layers/CMakeLists.txt | 4 + - .../remote_layer_support/CMakeLists.txt | 44 ++++ - .../remote_layer_support/remote_layer_ut.cc | 93 +++++++ - test/image/oci/storage/rootfs/CMakeLists.txt | 2 + - test/mocks/remote_store_mock.cc | 68 ++++++ - test/mocks/remote_store_mock.h | 40 +++ - 27 files changed, 683 insertions(+), 469 deletions(-) - rename src/daemon/modules/image/oci/storage/{image_store => remote_layer_support}/image_remote_impl.c (71%) - rename src/daemon/modules/image/oci/storage/{layer_store => remote_layer_support}/layer_remote_impl.c (76%) - rename src/daemon/modules/image/oci/storage/{layer_store/graphdriver/overlay2 => remote_layer_support}/overlay_remote_impl.c (72%) - create mode 100644 test/image/oci/storage/remote_layer_support/CMakeLists.txt - create mode 100644 test/image/oci/storage/remote_layer_support/remote_layer_ut.cc - create mode 100644 test/mocks/remote_store_mock.cc - create mode 100644 test/mocks/remote_store_mock.h - -diff --git a/CI/make-and-install.sh b/CI/make-and-install.sh -index faeaf005..fa9c2250 100755 ---- a/CI/make-and-install.sh -+++ b/CI/make-and-install.sh -@@ -103,7 +103,7 @@ rm -rf build - mkdir build - cd build - if [[ ${enable_gcov} -ne 0 ]]; then -- cmake -DLIB_INSTALL_DIR=${builddir}/lib -DCMAKE_INSTALL_PREFIX=${builddir} -DCMAKE_INSTALL_SYSCONFDIR=${builddir}/etc -DCMAKE_BUILD_TYPE=Debug -DGCOV=ON -DENABLE_EMBEDDED=ON -DENABLE_COVERAGE=ON -DENABLE_UT=ON -DENABLE_METRICS=ON .. -+ cmake -DLIB_INSTALL_DIR=${builddir}/lib -DCMAKE_INSTALL_PREFIX=${builddir} -DCMAKE_INSTALL_SYSCONFDIR=${builddir}/etc -DCMAKE_BUILD_TYPE=Debug -DGCOV=ON -DENABLE_EMBEDDED=ON -DENABLE_COVERAGE=ON -DENABLE_UT=ON -DENABLE_METRICS=ON -DENABLE_REMOTE_LAYER_STORE=ON .. - else - cmake -DLIB_INSTALL_DIR=${builddir}/lib -DCMAKE_INSTALL_PREFIX=${builddir} -DCMAKE_INSTALL_SYSCONFDIR=${builddir}/etc -DENABLE_EMBEDDED=ON -DENABLE_METRICS=ON -DENABLE_REMOTE_LAYER_STORE=ON .. - fi -diff --git a/src/daemon/modules/image/oci/storage/image_store/CMakeLists.txt b/src/daemon/modules/image/oci/storage/image_store/CMakeLists.txt -index 7d4fb77c..ecf21caa 100644 ---- a/src/daemon/modules/image/oci/storage/image_store/CMakeLists.txt -+++ b/src/daemon/modules/image/oci/storage/image_store/CMakeLists.txt -@@ -1,8 +1,5 @@ - # get current directory sources files - aux_source_directory(${CMAKE_CURRENT_SOURCE_DIR} local_image_store_srcs) --IF (NOT ENABLE_REMOTE_LAYER_STORE) --list(REMOVE_ITEM local_image_store_srcs "${CMAKE_CURRENT_SOURCE_DIR}/image_remote_impl.c") --ENDIF() - - set(IMAGE_STORE_SRCS - ${local_image_store_srcs} -diff --git a/src/daemon/modules/image/oci/storage/image_store/image_store.c b/src/daemon/modules/image/oci/storage/image_store/image_store.c -index 84187ded..9a32b247 100644 ---- a/src/daemon/modules/image/oci/storage/image_store/image_store.c -+++ b/src/daemon/modules/image/oci/storage/image_store/image_store.c -@@ -132,7 +132,7 @@ static void free_image_store(image_store_t *store) - (void)map_free(store->bydigest); - store->bydigest = NULL; - -- linked_list_for_each_safe(item, &(store->images_list), next) { -+ linked_list_for_each_safe (item, &(store->images_list), next) { - linked_list_del(item); - image_ref_dec((image_t *)item->elem); - free(item); -@@ -164,7 +164,7 @@ static void image_store_digest_field_kvfree(void *key, void *value) - - free(key); - if (val != NULL) { -- linked_list_for_each_safe(item, &(val->images_list), next) { -+ linked_list_for_each_safe (item, &(val->images_list), next) { - linked_list_del(item); - free(item); - item = NULL; -@@ -500,7 +500,7 @@ static void digest_image_slice_without_value(digest_image_t *digest_filter_image - return; - } - -- linked_list_for_each_safe(item, &(digest_filter_images->images_list), next) { -+ linked_list_for_each_safe (item, &(digest_filter_images->images_list), next) { - tmp = (image_t *)item->elem; - if (strcmp(tmp->simage->id, img->simage->id) == 0) { - linked_list_del(item); -@@ -581,7 +581,7 @@ static int remove_image_from_memory(const char *id) - goto out; - } - -- linked_list_for_each_safe(item, &(g_image_store->images_list), next) { -+ linked_list_for_each_safe (item, &(g_image_store->images_list), next) { - image_t *tmp = (image_t *)item->elem; - if (strcmp(tmp->simage->id, id) != 0) { - continue; -@@ -680,7 +680,7 @@ static void free_digest_image(digest_image_t *ptr) - return; - } - -- linked_list_for_each_safe(item, &(ptr->images_list), next) { -+ linked_list_for_each_safe (item, &(ptr->images_list), next) { - linked_list_del(item); - free(item); - item = NULL; -@@ -2678,7 +2678,7 @@ int image_store_get_all_images(imagetool_images_list *images_list) - goto unlock; - } - -- linked_list_for_each_safe(item, &(g_image_store->images_list), next) { -+ linked_list_for_each_safe (item, &(g_image_store->images_list), next) { - imagetool_image_summary *imginfo = NULL; - image_t *img = (image_t *)item->elem; - imginfo = get_image_summary(img); -@@ -3099,7 +3099,7 @@ out: - return ret; - } - --int validate_manifest_schema_version_1(const char *path, bool *valid) -+int image_store_validate_manifest_schema_version_1(const char *path, bool *valid) - { - int ret = 0; - int nret; -@@ -3506,7 +3506,7 @@ static int get_images_from_json() - continue; - } - -- if (validate_manifest_schema_version_1(image_path, &valid_v1_image) != 0) { -+ if (image_store_validate_manifest_schema_version_1(image_path, &valid_v1_image) != 0) { - ERROR("Failed to validate manifest schema version 1 format"); - continue; - } -@@ -3543,7 +3543,7 @@ static void image_store_check_all_images() - return; - } - -- linked_list_for_each_safe(item, &(g_image_store->images_list), next) { -+ linked_list_for_each_safe (item, &(g_image_store->images_list), next) { - image_t *img = (image_t *)item->elem; - if (img->spec == NULL) { - ERROR("Failed to check spec info of image: %s, try to delete", img->simage->id); -@@ -3657,18 +3657,23 @@ out: - } - - #ifdef ENABLE_REMOTE_LAYER_STORE --int append_image_by_directory_with_lock(const char *id) -+int remote_append_image_by_directory_with_lock(const char *id) - { - int ret = 0; - int nret = 0; - char image_path[PATH_MAX] = { 0x00 }; - -+ if (id == NULL) { -+ ERROR("can't add NULL remote image"); -+ return -1; -+ } -+ - if (!image_store_lock(EXCLUSIVE)) { - ERROR("Failed to lock remote image store when handle: %s", id); - return -1; - } - -- if (map_search(g_image_store->byid, (void *)id) != NULL ) { -+ if (map_search(g_image_store->byid, (void *)id) != NULL) { - DEBUG("remote image already exist, not added: %s", id); - goto out; - } -@@ -3687,10 +3692,15 @@ out: - return ret; - } - --int remove_image_from_memory_with_lock(const char *id) -+int remote_remove_image_from_memory_with_lock(const char *id) - { - int ret = 0; - -+ if (id == NULL) { -+ ERROR("can't remove NULL remote image"); -+ return -1; -+ } -+ - if (!image_store_lock(EXCLUSIVE)) { - ERROR("Failed to lock remote image store when handle: %s", id); - return -1; -@@ -3709,9 +3719,8 @@ out: - return ret; - } - --char *get_top_layer_from_json(const char *img_id) -+char *remote_image_get_top_layer_from_json(const char *img_id) - { -- - char *ret = NULL; - int nret = 0; - char image_path[PATH_MAX] = { 0x00 }; -diff --git a/src/daemon/modules/image/oci/storage/image_store/image_store.h b/src/daemon/modules/image/oci/storage/image_store/image_store.h -index c3cb50e3..5164cc73 100644 ---- a/src/daemon/modules/image/oci/storage/image_store/image_store.h -+++ b/src/daemon/modules/image/oci/storage/image_store/image_store.h -@@ -28,9 +28,6 @@ - #include "isula_libutils/imagetool_image.h" - #include "isula_libutils/imagetool_images_list.h" - #include "isula_libutils/imagetool_image_summary.h" --#ifdef ENABLE_REMOTE_LAYER_STORE --#include "remote_support.h" --#endif - - struct storage_module_init_options; - -@@ -112,11 +109,11 @@ void image_store_free(); - imagetool_image_summary *image_store_get_image_summary(const char *id); - - #ifdef ENABLE_REMOTE_LAYER_STORE --remote_support *image_store_impl_remote_support(); --int validate_manifest_schema_version_1(const char *path, bool *valid); --int append_image_by_directory_with_lock(const char *image_dir); --int remove_image_from_memory_with_lock(const char *id); --char *get_top_layer_from_json(const char *img_id); /* return top layer id */ -+int image_store_validate_manifest_schema_version_1(const char *path, bool *valid); -+int remote_append_image_by_directory_with_lock(const char *image_dir); -+int remote_remove_image_from_memory_with_lock(const char *id); -+// return top layer id -+char *remote_image_get_top_layer_from_json(const char *img_id); - #endif - - #ifdef __cplusplus -diff --git a/src/daemon/modules/image/oci/storage/layer_store/CMakeLists.txt b/src/daemon/modules/image/oci/storage/layer_store/CMakeLists.txt -index e04b4ad7..c218a7c0 100644 ---- a/src/daemon/modules/image/oci/storage/layer_store/CMakeLists.txt -+++ b/src/daemon/modules/image/oci/storage/layer_store/CMakeLists.txt -@@ -1,8 +1,5 @@ - # get current directory sources files - aux_source_directory(${CMAKE_CURRENT_SOURCE_DIR} local_layer_store_srcs) --IF (NOT ENABLE_REMOTE_LAYER_STORE) --list(REMOVE_ITEM local_layer_store_srcs "${CMAKE_CURRENT_SOURCE_DIR}/layer_remote_impl.c") --ENDIF() - add_subdirectory(graphdriver) - - set(LAYER_STORE_SRCS -diff --git a/src/daemon/modules/image/oci/storage/layer_store/graphdriver/overlay2/CMakeLists.txt b/src/daemon/modules/image/oci/storage/layer_store/graphdriver/overlay2/CMakeLists.txt -index dd4e82aa..ceed16b7 100644 ---- a/src/daemon/modules/image/oci/storage/layer_store/graphdriver/overlay2/CMakeLists.txt -+++ b/src/daemon/modules/image/oci/storage/layer_store/graphdriver/overlay2/CMakeLists.txt -@@ -1,8 +1,5 @@ - # get current directory sources files - aux_source_directory(${CMAKE_CURRENT_SOURCE_DIR} local_overlay2_srcs) --IF (NOT ENABLE_REMOTE_LAYER_STORE) --list(REMOVE_ITEM local_overlay2_srcs "${CMAKE_CURRENT_SOURCE_DIR}/overlay_remote_impl.c") --ENDIF() - - set(OVERLAY2_SRCS - ${local_overlay2_srcs} -diff --git a/src/daemon/modules/image/oci/storage/layer_store/graphdriver/overlay2/driver_overlay2.h b/src/daemon/modules/image/oci/storage/layer_store/graphdriver/overlay2/driver_overlay2.h -index 5c1d93fb..e14271b1 100644 ---- a/src/daemon/modules/image/oci/storage/layer_store/graphdriver/overlay2/driver_overlay2.h -+++ b/src/daemon/modules/image/oci/storage/layer_store/graphdriver/overlay2/driver_overlay2.h -@@ -22,9 +22,6 @@ - #include - - #include "driver.h" --#ifdef ENABLE_REMOTE_LAYER_STORE --#include "remote_support.h" --#endif - - struct driver_create_opts; - struct driver_mount_opts; -@@ -71,11 +68,6 @@ int overlay2_repair_lowers(const char *id, const char *parent, const struct grap - - int overlay2_get_layer_fs_info(const char *id, const struct graphdriver *driver, imagetool_fs_info *fs_info); - --#ifdef ENABLE_REMOTE_LAYER_STORE --remote_support *overlay_driver_impl_remote_support(void); --bool overlay_remote_layer_valid(const char *layer_id); --#endif -- - #ifdef __cplusplus - } - #endif -diff --git a/src/daemon/modules/image/oci/storage/layer_store/layer_store.c b/src/daemon/modules/image/oci/storage/layer_store/layer_store.c -index 4edd0cad..79339757 100644 ---- a/src/daemon/modules/image/oci/storage/layer_store/layer_store.c -+++ b/src/daemon/modules/image/oci/storage/layer_store/layer_store.c -@@ -1789,119 +1789,6 @@ out: - return ret; - } - --static layer_t *load_one_layer_from_json(const char *id) --{ -- int nret = 0; -- char *mount_point_path = NULL; -- char tmpdir[PATH_MAX] = { 0 }; -- char *rpath = NULL; -- layer_t *l = NULL; -- bool layer_valid = false; -- -- nret = snprintf(tmpdir, PATH_MAX, "%s/%s", g_root_dir, id); -- if (nret < 0 || nret >= PATH_MAX) { -- ERROR("Sprintf: %s failed", id); -- goto free_out; -- } -- -- mount_point_path = mountpoint_json_path(id); -- if (mount_point_path == NULL) { -- ERROR("Out of Memory"); -- goto free_out; -- } -- -- rpath = layer_json_path(id); -- if (rpath == NULL) { -- ERROR("%s is invalid layer", id); -- goto free_out; -- } -- -- l = load_layer(rpath, mount_point_path); -- if (l == NULL) { -- ERROR("load layer: %s failed, remove it", id); -- goto free_out; -- } -- -- if (do_validate_image_layer(tmpdir, l) != 0) { -- ERROR("%s is invalid image layer", id); -- goto free_out; -- } -- -- if (do_validate_rootfs_layer(l) != 0) { -- ERROR("%s is invalid rootfs layer", id); -- goto free_out; -- } -- -- layer_valid = true; -- --free_out: -- free(rpath); -- free(mount_point_path); -- if (!layer_valid) { -- free_layer_t(l); -- l = NULL; -- } -- // always return true; -- // if load layer failed, just remove it -- return l; --} -- --int load_one_layer(const char *id) --{ -- int ret = 0; -- layer_t *tl = NULL; -- int i = 0; -- -- if (!layer_store_lock(true)) { -- return -1; -- } -- -- if (map_search(g_metadata.by_id, (void *)id) != NULL) { -- DEBUG("remote layer already exist, not added: %s", id); -- goto unlock_out; -- } -- -- tl = load_one_layer_from_json(id); -- if (tl == NULL) { -- ret = -1; -- goto unlock_out; -- } -- -- if (!map_insert(g_metadata.by_id, (void *)tl->slayer->id, (void *)tl)) { -- ERROR("Insert id: %s for layer failed", tl->slayer->id); -- ret = -1; -- goto unlock_out; -- } -- -- for (; i < tl->slayer->names_len; i++) { -- // this should be done by master isulad -- // if (remove_name(tl->slayer->names[i])) { -- // should_save = true; -- // } -- if (!map_insert(g_metadata.by_name, (void *)tl->slayer->names[i], (void *)tl)) { -- ret = -1; -- ERROR("Insert name: %s for layer failed", tl->slayer->names[i]); -- goto unlock_out; -- } -- } -- ret = insert_digest_into_map(g_metadata.by_compress_digest, tl->slayer->compressed_diff_digest, tl->slayer->id); -- if (ret != 0) { -- ERROR("update layer: %s compress failed", tl->slayer->id); -- goto unlock_out; -- } -- -- ret = insert_digest_into_map(g_metadata.by_uncompress_digest, tl->slayer->diff_digest, tl->slayer->id); -- if (ret != 0) { -- ERROR("update layer: %s uncompress failed", tl->slayer->id); -- goto unlock_out; -- } -- -- ret = 0; --unlock_out: -- layer_store_unlock(); -- return ret; --} -- - static bool load_layer_json_cb(const char *path_name, const struct dirent *sub_dir, void *context) - { - #define LAYER_NAME_LEN 64 -@@ -2483,7 +2370,7 @@ container_inspect_graph_driver *layer_store_get_metadata_by_layer_id(const char - } - - #ifdef ENABLE_REMOTE_LAYER_STORE --int remove_memory_stores_with_lock(const char *id) -+int remote_layer_remove_memory_stores_with_lock(const char *id) - { - int ret = 0; - -@@ -2496,6 +2383,11 @@ int remove_memory_stores_with_lock(const char *id) - goto unlock_out; - } - -+ if (map_search(g_metadata.by_id, (void *)id) == NULL) { -+ DEBUG("remote layer already removed, don't delete: %s", id); -+ goto unlock_out; -+ } -+ - ret = remove_memory_stores(id); - - unlock_out: -@@ -2503,4 +2395,114 @@ unlock_out: - - return ret; - } -+ -+static layer_t *load_one_layer_from_json(const char *id) -+{ -+ int nret = 0; -+ char *mount_point_path = NULL; -+ char tmpdir[PATH_MAX] = { 0 }; -+ char *rpath = NULL; -+ layer_t *l = NULL; -+ bool layer_valid = false; -+ -+ nret = snprintf(tmpdir, PATH_MAX, "%s/%s", g_root_dir, id); -+ if (nret < 0 || nret >= PATH_MAX) { -+ ERROR("Sprintf: %s failed", id); -+ goto free_out; -+ } -+ -+ mount_point_path = mountpoint_json_path(id); -+ if (mount_point_path == NULL) { -+ ERROR("Out of Memory"); -+ goto free_out; -+ } -+ -+ rpath = layer_json_path(id); -+ if (rpath == NULL) { -+ ERROR("%s is invalid layer", id); -+ goto free_out; -+ } -+ -+ l = load_layer(rpath, mount_point_path); -+ if (l == NULL) { -+ ERROR("load layer: %s failed, remove it", id); -+ goto free_out; -+ } -+ -+ if (do_validate_image_layer(tmpdir, l) != 0) { -+ ERROR("%s is invalid image layer", id); -+ goto free_out; -+ } -+ -+ if (do_validate_rootfs_layer(l) != 0) { -+ ERROR("%s is invalid rootfs layer", id); -+ goto free_out; -+ } -+ -+ layer_valid = true; -+ -+free_out: -+ free(rpath); -+ free(mount_point_path); -+ if (!layer_valid) { -+ free_layer_t(l); -+ l = NULL; -+ } -+ // always return true; -+ // if load layer failed, just remove it -+ return l; -+} -+ -+int remote_load_one_layer(const char *id) -+{ -+ int ret = 0; -+ layer_t *tl = NULL; -+ int i = 0; -+ -+ if (!layer_store_lock(true)) { -+ return -1; -+ } -+ -+ if (map_search(g_metadata.by_id, (void *)id) != NULL) { -+ DEBUG("remote layer already exist, not added: %s", id); -+ goto unlock_out; -+ } -+ -+ tl = load_one_layer_from_json(id); -+ if (tl == NULL) { -+ ret = -1; -+ goto unlock_out; -+ } -+ -+ if (!map_insert(g_metadata.by_id, (void *)tl->slayer->id, (void *)tl)) { -+ ERROR("Insert id: %s for layer failed", tl->slayer->id); -+ ret = -1; -+ goto unlock_out; -+ } -+ -+ for (; i < tl->slayer->names_len; i++) { -+ // this should be done by master isulad -+ if (!map_insert(g_metadata.by_name, (void *)tl->slayer->names[i], (void *)tl)) { -+ ret = -1; -+ ERROR("Insert name: %s for layer failed", tl->slayer->names[i]); -+ goto unlock_out; -+ } -+ } -+ ret = insert_digest_into_map(g_metadata.by_compress_digest, tl->slayer->compressed_diff_digest, tl->slayer->id); -+ if (ret != 0) { -+ ERROR("update layer: %s compress failed", tl->slayer->id); -+ goto unlock_out; -+ } -+ -+ ret = insert_digest_into_map(g_metadata.by_uncompress_digest, tl->slayer->diff_digest, tl->slayer->id); -+ if (ret != 0) { -+ ERROR("update layer: %s uncompress failed", tl->slayer->id); -+ goto unlock_out; -+ } -+ -+ ret = 0; -+unlock_out: -+ layer_store_unlock(); -+ return ret; -+} - #endif -diff --git a/src/daemon/modules/image/oci/storage/layer_store/layer_store.h b/src/daemon/modules/image/oci/storage/layer_store/layer_store.h -index 44bd297e..4677e5ee 100644 ---- a/src/daemon/modules/image/oci/storage/layer_store/layer_store.h -+++ b/src/daemon/modules/image/oci/storage/layer_store/layer_store.h -@@ -24,9 +24,6 @@ - #include "storage.h" - #include "io_wrapper.h" - #include "map.h" --#ifdef ENABLE_REMOTE_LAYER_STORE --#include "remote_support.h" --#endif - - struct io_read_wrapper; - struct layer_list; -@@ -84,10 +81,8 @@ int layer_store_check(const char *id); - container_inspect_graph_driver *layer_store_get_metadata_by_layer_id(const char *id); - - #ifdef ENABLE_REMOTE_LAYER_STORE --remote_support *layer_store_impl_remote_support(); --bool layer_remote_layer_valid(const char *layer_id); --int load_one_layer(const char *id); --int remove_memory_stores_with_lock(const char *id); -+int remote_load_one_layer(const char *id); -+int remote_layer_remove_memory_stores_with_lock(const char *id); - #endif - - #ifdef __cplusplus -diff --git a/src/daemon/modules/image/oci/storage/image_store/image_remote_impl.c b/src/daemon/modules/image/oci/storage/remote_layer_support/image_remote_impl.c -similarity index 71% -rename from src/daemon/modules/image/oci/storage/image_store/image_remote_impl.c -rename to src/daemon/modules/image/oci/storage/remote_layer_support/image_remote_impl.c -index 20da8116..a822ea81 100644 ---- a/src/daemon/modules/image/oci/storage/image_store/image_remote_impl.c -+++ b/src/daemon/modules/image/oci/storage/remote_layer_support/image_remote_impl.c -@@ -13,27 +13,23 @@ - * Description: provide remote image store functions - ******************************************************************************/ - #define _GNU_SOURCE --#include "image_store.h" -+#include "remote_support.h" - - #include - #include - --#include "remote_support.h" - #include "ro_symlink_maintain.h" - #include "map.h" - #include "utils_file.h" - #include "utils.h" - #include "layer_store.h" -+#include "image_store.h" - #include "utils_array.h" - --struct remote_image_data { -- const char *image_home; --}; -- - static map_t *image_byid_old = NULL; - static map_t *image_byid_new = NULL; - --static void *remote_support_create(const char *remote_home, const char *remote_ro) -+struct remote_image_data *remote_image_create(const char *remote_home, const char *remote_ro) - { - struct remote_image_data *data = util_common_calloc_s(sizeof(struct remote_image_data)); - if (data == NULL) { -@@ -46,7 +42,7 @@ static void *remote_support_create(const char *remote_home, const char *remote_r - return data; - } - --static void remote_support_destroy(void *data) -+void remote_image_destroy(struct remote_image_data *data) - { - if (data == NULL) { - return; -@@ -59,7 +55,7 @@ static void remote_support_destroy(void *data) - return; - } - --static int remote_support_scan(void *data) -+static int remote_dir_scan(void *data) - { - int ret = 0; - int nret; -@@ -79,7 +75,7 @@ static int remote_support_scan(void *data) - image_dirs_num = util_array_len((const char **)image_dirs); - - for (i = 0; i < image_dirs_num; i++) { -- bool valid_v1_image = false; -+ bool is_v1_image = false; - - if (util_reg_match(id_patten, image_dirs[i]) != 0) { - DEBUG("Image's json is placed inside image's data directory, so skip any other file or directory: %s", -@@ -93,12 +89,14 @@ static int remote_support_scan(void *data) - continue; - } - -- if (validate_manifest_schema_version_1(image_path, &valid_v1_image) != 0) { -+ if (image_store_validate_manifest_schema_version_1(image_path, &is_v1_image) != 0) { - ERROR("Failed to validate manifest schema version 1 format"); - continue; - } - -- if (!valid_v1_image) { -+ // for refresh, we don't care v1 image, cause image should be handled by master isulad -+ // when master isulad pull images -+ if (!is_v1_image) { - map_insert(image_byid_new, util_strdup_s(image_dirs[i]), (void *)&exist); - } - } -@@ -108,12 +106,13 @@ out: - return ret; - } - --static int remote_support_add(void *data) -+static int remote_image_add(void *data) - { - char **array_added = NULL; - char **array_deleted = NULL; - char *top_layer = NULL; - map_t *tmp_map = NULL; -+ bool exist = true; - int i = 0; - int ret = 0; - -@@ -121,26 +120,28 @@ static int remote_support_add(void *data) - return -1; - } - -- array_added = added_layers(image_byid_old, image_byid_new); -- array_deleted = deleted_layers(image_byid_old, image_byid_new); -+ array_added = remote_added_layers(image_byid_old, image_byid_new); -+ array_deleted = remote_deleted_layers(image_byid_old, image_byid_new); - - for (i = 0; i < util_array_len((const char **)array_added); i++) { -- top_layer = get_top_layer_from_json(array_added[i]); -- if (top_layer != NULL && !layer_remote_layer_valid(top_layer)) { -- ERROR("ERROR not find valid under layer, remoet image:%s not added", array_added[i]); -+ top_layer = remote_image_get_top_layer_from_json(array_added[i]); -+ if (top_layer != NULL && !remote_layer_layer_valid(top_layer)) { -+ WARN("Current not find valid under layer, remoet image:%s not added", array_added[i]); - map_remove(image_byid_new, (void *)array_added[i]); - continue; - } - -- if (append_image_by_directory_with_lock(array_added[i]) != 0) { -+ if (remote_append_image_by_directory_with_lock(array_added[i]) != 0) { - ERROR("Failed to load image into memrory: %s", array_added[i]); -+ map_remove(image_byid_new, (void *)array_added[i]); - ret = -1; - } - } - - for (i = 0; i < util_array_len((const char **)array_deleted); i++) { -- if (remove_image_from_memory_with_lock(array_deleted[i]) != 0) { -+ if (remote_remove_image_from_memory_with_lock(array_deleted[i]) != 0) { - ERROR("Failed to remove remote memory store"); -+ map_insert(image_byid_new, array_deleted[i], (void *)&exist); - ret = -1; - } - } -@@ -148,7 +149,7 @@ static int remote_support_add(void *data) - tmp_map = image_byid_old; - image_byid_old = image_byid_new; - image_byid_new = tmp_map; -- empty_map(image_byid_new); -+ map_clear(image_byid_new); - - util_free_array(array_added); - util_free_array(array_deleted); -@@ -157,17 +158,13 @@ static int remote_support_add(void *data) - return ret; - } - --remote_support *image_store_impl_remote_support(void) --{ -- remote_support *rs = util_common_calloc_s(sizeof(remote_support)); -- if (rs == NULL) { -- return NULL; -+void remote_image_refresh(struct remote_image_data *data) { -+ if (remote_dir_scan(data) != 0) { -+ ERROR("remote overlay failed to scan dir, skip refresh"); -+ return; - } - -- rs->create = remote_support_create; -- rs->destroy = remote_support_destroy; -- rs->scan_remote_dir = remote_support_scan; -- rs->load_item = remote_support_add; -- -- return rs; -+ if (remote_image_add(data) != 0) { -+ ERROR("refresh overlay failed"); -+ } - } -diff --git a/src/daemon/modules/image/oci/storage/layer_store/layer_remote_impl.c b/src/daemon/modules/image/oci/storage/remote_layer_support/layer_remote_impl.c -similarity index 76% -rename from src/daemon/modules/image/oci/storage/layer_store/layer_remote_impl.c -rename to src/daemon/modules/image/oci/storage/remote_layer_support/layer_remote_impl.c -index d676458c..3e3afff6 100644 ---- a/src/daemon/modules/image/oci/storage/layer_store/layer_remote_impl.c -+++ b/src/daemon/modules/image/oci/storage/remote_layer_support/layer_remote_impl.c -@@ -13,7 +13,7 @@ - * Description: remote layer store implementation - ******************************************************************************/ - #define _GNU_SOURCE --#include "layer_store.h" -+#include "remote_support.h" - - #include - #include -@@ -21,20 +21,15 @@ - - #include "map.h" - #include "utils.h" --#include "remote_support.h" - #include "ro_symlink_maintain.h" -+#include "layer_store.h" - #include "path.h" - #include "driver_overlay2.h" - --struct remote_layer_data { -- const char *layer_home; -- const char *layer_ro; --}; -- - static map_t *layer_byid_old = NULL; - static map_t *layer_byid_new = NULL; - --static void *remote_support_create(const char *layer_home, const char *layer_ro) -+struct remote_layer_data *remote_layer_create(const char *layer_home, const char *layer_ro) - { - struct remote_layer_data *data = util_common_calloc_s(sizeof(struct remote_layer_data)); - if (data == NULL) { -@@ -49,7 +44,7 @@ static void *remote_support_create(const char *layer_home, const char *layer_ro) - return data; - }; - --static void remote_support_destroy(void *data) -+void remote_layer_destroy(struct remote_layer_data *data) - { - if (data == NULL) { - return; -@@ -72,10 +67,9 @@ static bool layer_walk_dir_cb(const char *path_name, const struct dirent *sub_di - return true; - } - --static int remote_support_scan(void *data) -+static int remote_dir_scan(struct remote_layer_data *data) - { -- struct remote_layer_data *remote_data = data; -- return util_scan_subdirs(remote_data->layer_ro, layer_walk_dir_cb, data); -+ return util_scan_subdirs(data->layer_ro, layer_walk_dir_cb, data); - } - - static int remove_one_remote_layer(struct remote_layer_data *data, char *layer_id) -@@ -85,6 +79,11 @@ static int remove_one_remote_layer(struct remote_layer_data *data, char *layer_i - int nret = 0; - int ret = 0; - -+ if (layer_id == NULL) { -+ ERROR("can't delete NULL remote layer"); -+ return -1; -+ } -+ - nret = asprintf(&ro_symlink, "%s/%s", data->layer_home, layer_id); - if (nret < 0 || nret > PATH_MAX) { - SYSERROR("Create layer symbol link path failed"); -@@ -98,11 +97,14 @@ static int remove_one_remote_layer(struct remote_layer_data *data, char *layer_i - goto out; - } - -+ // return 0 if path already removed - if (util_path_remove(clean_path) != 0) { - SYSERROR("Failed to remove link path %s", clean_path); -+ ret = -1; -+ goto out; - } - -- if (remove_memory_stores_with_lock(layer_id) != 0) { -+ if (remote_layer_remove_memory_stores_with_lock(layer_id) != 0) { - ERROR("Failed to remove remote layer store memory"); - ret = -1; - } -@@ -110,7 +112,6 @@ static int remove_one_remote_layer(struct remote_layer_data *data, char *layer_i - out: - free(ro_symlink); - return ret; -- - } - - static int add_one_remote_layer(struct remote_layer_data *data, char *layer_id) -@@ -119,6 +120,11 @@ static int add_one_remote_layer(struct remote_layer_data *data, char *layer_id) - char *layer_dir = NULL; - int ret = 0; - -+ if (layer_id == NULL) { -+ ERROR("can't add NULL remote layer"); -+ return -1; -+ } -+ - ro_symlink = util_path_join(data->layer_home, layer_id); - layer_dir = util_path_join(data->layer_ro, layer_id); - -@@ -140,7 +146,7 @@ static int add_one_remote_layer(struct remote_layer_data *data, char *layer_id) - goto free_out; - } - // insert layer into memory -- if (load_one_layer(layer_id) != 0) { -+ if (remote_load_one_layer(layer_id) != 0) { - ERROR("Failed to load new layer: %s into memory", layer_id); - ret = -1; - } -@@ -152,30 +158,32 @@ free_out: - return ret; - } - --static int remote_support_add(void *data) -+static int remote_layer_add(struct remote_layer_data *data) - { - int ret = 0; - char **array_added = NULL; - char **array_deleted = NULL; - map_t *tmp_map = NULL; -+ bool exist = true; - int i = 0; - - if (data == NULL) { - return -1; - } - -- array_added = added_layers(layer_byid_old, layer_byid_new); -- array_deleted = deleted_layers(layer_byid_old, layer_byid_new); -+ array_added = remote_added_layers(layer_byid_old, layer_byid_new); -+ array_deleted = remote_deleted_layers(layer_byid_old, layer_byid_new); - - for (i = 0; i < util_array_len((const char **)array_added); i++) { -- if (!overlay_remote_layer_valid(array_added[i]) != 0) { -+ if (!remote_overlay_layer_valid(array_added[i]) != 0) { -+ WARN("remote overlay layer current not valid: %s", array_added[i]); - map_remove(layer_byid_new, (void *)array_added[i]); -- ERROR("remote overlay layer current not valid: %s", array_added[i]); - continue; - } - - if (add_one_remote_layer(data, array_added[i]) != 0) { - ERROR("Failed to add remote layer: %s", array_added[i]); -+ map_remove(layer_byid_new, (void *)array_added[i]); - ret = -1; - } - } -@@ -183,6 +191,7 @@ static int remote_support_add(void *data) - for (i = 0; i < util_array_len((const char **)array_deleted); i++) { - if (remove_one_remote_layer(data, array_deleted[i]) != 0) { - ERROR("Failed to delete remote overlay layer: %s", array_deleted[i]); -+ map_insert(layer_byid_new, array_deleted[i], (void *)&exist); - ret = -1; - } - } -@@ -190,7 +199,7 @@ static int remote_support_add(void *data) - tmp_map = layer_byid_old; - layer_byid_old = layer_byid_new; - layer_byid_new = tmp_map; -- empty_map(layer_byid_new); -+ map_clear(layer_byid_new); - - util_free_array(array_added); - util_free_array(array_deleted); -@@ -198,22 +207,20 @@ static int remote_support_add(void *data) - return ret; - } - --remote_support *layer_store_impl_remote_support() -+void remote_layer_refresh(struct remote_layer_data *data) - { -- remote_support *rs = util_common_calloc_s(sizeof(remote_support)); -- if (rs == NULL) { -- return NULL; -+ if (remote_dir_scan(data) != 0) { -+ ERROR("remote layer failed to scan dir, skip refresh"); -+ return; - } - -- rs->create = remote_support_create; -- rs->destroy = remote_support_destroy; -- rs->scan_remote_dir = remote_support_scan; -- rs->load_item = remote_support_add; -- -- return rs; -+ if (remote_layer_add(data) != 0) { -+ ERROR("refresh overlay failed"); -+ } - } - --bool layer_remote_layer_valid(const char *layer_id) -+ -+bool remote_layer_layer_valid(const char *layer_id) - { - return map_search(layer_byid_old, (void *)layer_id) != NULL; - } -diff --git a/src/daemon/modules/image/oci/storage/layer_store/graphdriver/overlay2/overlay_remote_impl.c b/src/daemon/modules/image/oci/storage/remote_layer_support/overlay_remote_impl.c -similarity index 72% -rename from src/daemon/modules/image/oci/storage/layer_store/graphdriver/overlay2/overlay_remote_impl.c -rename to src/daemon/modules/image/oci/storage/remote_layer_support/overlay_remote_impl.c -index a674a00f..de2e583c 100644 ---- a/src/daemon/modules/image/oci/storage/layer_store/graphdriver/overlay2/overlay_remote_impl.c -+++ b/src/daemon/modules/image/oci/storage/remote_layer_support/overlay_remote_impl.c -@@ -13,13 +13,13 @@ - * Description: provide remote implementation for driver overlay - ******************************************************************************/ - #define _GNU_SOURCE --#include "driver_overlay2.h" -+#include "remote_support.h" - - #include - - #include "map.h" --#include "remote_support.h" - #include "ro_symlink_maintain.h" -+#include "driver_overlay2.h" - #include "isula_libutils/log.h" - #include "utils.h" - #include "utils_array.h" -@@ -29,15 +29,13 @@ - #define OVERLAY_LINK_DIR "l" - #define OVERLAY_LAYER_LINK "link" - --struct remote_overlay_data { -- const char *overlay_home; -- const char *overlay_ro; --}; -- -+// key: id, value: short id in 'l' dir -+// store short id to delete symbol link in 'l' dir - static map_t *overlay_byid_old = NULL; - static map_t *overlay_byid_new = NULL; -+static map_t *overlay_id_link = NULL; - --static void *remote_support_create(const char *remote_home, const char *remote_ro) -+struct remote_overlay_data *remote_overlay_create(const char *remote_home, const char *remote_ro) - { - struct remote_overlay_data *data = util_common_calloc_s(sizeof(struct remote_overlay_data)); - if (data == NULL) { -@@ -48,11 +46,12 @@ static void *remote_support_create(const char *remote_home, const char *remote_r - data->overlay_ro = remote_ro; - overlay_byid_old = map_new(MAP_STR_BOOL, MAP_DEFAULT_CMP_FUNC, MAP_DEFAULT_FREE_FUNC); - overlay_byid_new = map_new(MAP_STR_BOOL, MAP_DEFAULT_CMP_FUNC, MAP_DEFAULT_FREE_FUNC); -+ overlay_id_link = map_new(MAP_STR_STR, MAP_DEFAULT_CMP_FUNC, MAP_DEFAULT_FREE_FUNC); - - return data; - } - --static void remote_support_destroy(void *data) -+void remote_overlay_destroy(struct remote_overlay_data *data) - { - if (data == NULL) { - return; -@@ -60,6 +59,7 @@ static void remote_support_destroy(void *data) - - map_free(overlay_byid_old); - map_free(overlay_byid_new); -+ map_free(overlay_id_link); - free(data); - } - -@@ -74,10 +74,9 @@ static bool overlay_walk_dir_cb(const char *path_name, const struct dirent *sub_ - return true; - } - --static int remote_support_scan(void *data) -+static int remote_dir_scan(struct remote_overlay_data *data) - { -- struct remote_overlay_data *remote_data = data; -- return util_scan_subdirs(remote_data->overlay_ro, overlay_walk_dir_cb, data); -+ return util_scan_subdirs(data->overlay_ro, overlay_walk_dir_cb, data); - } - - static int do_diff_symlink(const char *id, char *link_id, const char *driver_home) -@@ -128,10 +127,17 @@ out: - static int remove_one_remote_overlay_layer(struct remote_overlay_data *data, const char *overlay_id) - { - char *ro_symlink = NULL; -+ char *link_path = NULL; -+ char *link_id = NULL; - char clean_path[PATH_MAX] = { 0 }; - int nret = 0; - int ret = 0; - -+ if (overlay_id == NULL) { -+ ERROR("can't remove NULL remote layer"); -+ return -1; -+ } -+ - nret = asprintf(&ro_symlink, "%s/%s", data->overlay_home, overlay_id); - if (nret < 0 || nret > PATH_MAX) { - SYSERROR("Create layer symbol link path failed"); -@@ -149,8 +155,40 @@ static int remove_one_remote_overlay_layer(struct remote_overlay_data *data, con - SYSERROR("Failed to remove link path %s", clean_path); - } - -+ link_id = (char *)map_search(overlay_id_link, (void *)overlay_id); -+ -+ if (link_id == NULL) { -+ ERROR("Failed to find link id for overlay layer: %s", overlay_id); -+ ret = -1; -+ goto out; -+ } -+ -+ nret = asprintf(&link_path, "%s/%s/%s", data->overlay_home, OVERLAY_LINK_DIR, link_id); -+ if (nret < 0 || nret > PATH_MAX) { -+ SYSERROR("Create link path failed"); -+ ret = -1; -+ goto out; -+ } -+ -+ if (util_clean_path(link_path, clean_path, sizeof(clean_path)) == NULL) { -+ ERROR("Failed to clean path: %s", ro_symlink); -+ ret = -1; -+ goto out; -+ } -+ -+ if (util_path_remove(clean_path) != 0) { -+ SYSERROR("Failed to remove link path %s", clean_path); -+ } -+ -+ if (!map_remove(overlay_id_link, (void *)overlay_id)) { -+ ERROR("Failed to remove link id for overlay layers: %s", overlay_id); -+ ret = -1; -+ goto out; -+ } -+ - out: - free(ro_symlink); -+ free(link_path); - return ret; - } - -@@ -162,6 +200,11 @@ static int add_one_remote_overlay_layer(struct remote_overlay_data *data, const - char *diff_symlink = NULL; - int ret = 0; - -+ if (overlay_id == NULL) { -+ ERROR("can't add NULL remote layer"); -+ return -1; -+ } -+ - ro_symlink = util_path_join(data->overlay_home, overlay_id); - if (ro_symlink == NULL) { - ERROR("Failed to join ro symlink path: %s", overlay_id); -@@ -211,6 +254,11 @@ static int add_one_remote_overlay_layer(struct remote_overlay_data *data, const - ret = -1; - } - -+ if (!map_insert(overlay_id_link, util_strdup_s(overlay_id), (void *)diff_symlink)) { -+ ERROR("can't insert remote layer into map"); -+ ret = -1; -+ } -+ - free_out: - free(ro_symlink); - free(layer_dir); -@@ -220,24 +268,26 @@ free_out: - return ret; - } - --static int remote_support_add(void *data) -+static int remote_image_add(struct remote_overlay_data *data) - { - int ret = 0; - char **array_added = NULL; - char **array_deleted = NULL; - map_t *tmp_map = NULL; -+ bool exist = true; - int i = 0; - - if (data == NULL) { - return -1; - } - -- array_added = added_layers(overlay_byid_old, overlay_byid_new); -- array_deleted = deleted_layers(overlay_byid_old, overlay_byid_new); -+ array_added = remote_added_layers(overlay_byid_old, overlay_byid_new); -+ array_deleted = remote_deleted_layers(overlay_byid_old, overlay_byid_new); - - for (i = 0; i < util_array_len((const char **)array_added); i++) { - if (add_one_remote_overlay_layer(data, array_added[i]) != 0) { - ERROR("Failed to add remote overlay layer: %s", array_added[i]); -+ map_remove(overlay_byid_new, (void *)array_added[i]); - ret = -1; - } - } -@@ -245,6 +295,7 @@ static int remote_support_add(void *data) - for (i = 0; i < util_array_len((const char **)array_deleted); i++) { - if (remove_one_remote_overlay_layer(data, array_deleted[i]) != 0) { - ERROR("Failed to delete remote overlay layer: %s", array_deleted[i]); -+ map_insert(overlay_byid_new, array_deleted[i], (void *)&exist); - ret = -1; - } - } -@@ -252,7 +303,7 @@ static int remote_support_add(void *data) - tmp_map = overlay_byid_old; - overlay_byid_old = overlay_byid_new; - overlay_byid_new = tmp_map; -- empty_map(overlay_byid_new); -+ map_clear(overlay_byid_new); - - util_free_array(array_added); - util_free_array(array_deleted); -@@ -260,23 +311,19 @@ static int remote_support_add(void *data) - return ret; - } - --remote_support *overlay_driver_impl_remote_support(void) -+void remote_overlay_refresh(struct remote_overlay_data *data) - { -- remote_support *rs = util_common_calloc_s(sizeof(remote_support)); -- if (rs == NULL) { -- ERROR("Failed to calloc overlay supporter"); -- return NULL; -+ if (remote_dir_scan(data) != 0) { -+ ERROR("remote overlay failed to scan dir, skip refresh"); -+ return; - } - -- rs->create = remote_support_create; -- rs->destroy = remote_support_destroy; -- rs->scan_remote_dir = remote_support_scan; -- rs->load_item = remote_support_add; -- -- return rs; -+ if (remote_image_add(data) != 0) { -+ ERROR("refresh overlay failed"); -+ } - } - --bool overlay_remote_layer_valid(const char *layer_id) -+bool remote_overlay_layer_valid(const char *layer_id) - { - return map_search(overlay_byid_old, (void *)layer_id) != NULL; - } -diff --git a/src/daemon/modules/image/oci/storage/remote_layer_support/remote_support.c b/src/daemon/modules/image/oci/storage/remote_layer_support/remote_support.c -index 9dc096f7..3c7d0f54 100644 ---- a/src/daemon/modules/image/oci/storage/remote_layer_support/remote_support.c -+++ b/src/daemon/modules/image/oci/storage/remote_layer_support/remote_support.c -@@ -15,108 +15,107 @@ - - #include "remote_support.h" - --#include "layer_store.h" --#include "image_store.h" -+#include -+ - #include "isula_libutils/log.h" --#include "driver_overlay2.h" - #include "utils.h" - --remote_supporter *create_layer_supporter(const char *remote_home, const char *remote_ro) --{ -- remote_support *handlers = layer_store_impl_remote_support(); -- if (handlers == NULL || handlers->create == NULL) { -- return NULL; -- } -+struct supporters { -+ struct remote_image_data *image_data; -+ struct remote_layer_data *layer_data; -+ struct remote_overlay_data *overlay_data; -+}; - -- remote_supporter *supporter = (remote_supporter *)util_common_calloc_s(sizeof(remote_supporter)); -- if (supporter == NULL) { -- goto err_out; -- } -+static struct supporters supporters; -+ -+static void *remote_refresh_ro_symbol_link(void *arg) -+{ -+ struct supporters *refresh_supporters = (struct supporters *)arg; -+ prctl(PR_SET_NAME, "RoLayerRefresh"); - -- supporter->handlers = handlers; -- supporter->data = handlers->create(remote_home, remote_ro); -+ while (true) { -+ util_usleep_nointerupt(5 * 1000 * 1000); -+ DEBUG("remote refresh start\n"); - -- return supporter; -+ remote_overlay_refresh(refresh_supporters->overlay_data); -+ remote_layer_refresh(refresh_supporters->layer_data); -+ remote_image_refresh(refresh_supporters->image_data); - --err_out: -- free(handlers); -- free(supporter); -+ DEBUG("remote refresh end\n"); -+ } - return NULL; - } - --remote_supporter *create_image_supporter(const char *remote_home, const char *remote_ro) -+int remote_start_refresh_thread(void) - { -- remote_support *handlers = image_store_impl_remote_support(); -- if (handlers == NULL || handlers->create == NULL) { -- return NULL; -- } -+ int res = 0; -+ pthread_t a_thread; -+ maintain_context ctx = get_maintain_context(); - -- remote_supporter *supporter = (remote_supporter *)util_common_calloc_s(sizeof(remote_supporter)); -- if (supporter == NULL) { -- goto err_out; -+ supporters.image_data = remote_image_create(ctx.image_home, NULL); -+ if (supporters.image_data == NULL) { -+ goto free_out; - } - -- supporter->handlers = handlers; -- supporter->data = handlers->create(remote_home, remote_ro); -- -- return supporter; -- --err_out: -- free(handlers); -- free(supporter); -- return NULL; --} -+ supporters.layer_data = remote_layer_create(ctx.layer_home, ctx.layer_ro_dir); -+ if (supporters.layer_data == NULL) { -+ goto free_out; -+ } - --remote_supporter *create_overlay_supporter(const char *remote_home, const char *remote_ro) --{ -- remote_support *handlers = overlay_driver_impl_remote_support(); -- if (handlers == NULL || handlers->create == NULL) { -- return NULL; -+ supporters.overlay_data = remote_overlay_create(ctx.overlay_home, ctx.overlay_ro_dir); -+ if (supporters.overlay_data == NULL) { -+ goto free_out; - } - -- remote_supporter *supporter = (remote_supporter *)util_common_calloc_s(sizeof(remote_supporter)); -- if (supporter == NULL) { -- goto err_out; -+ res = pthread_create(&a_thread, NULL, remote_refresh_ro_symbol_link, (void *)&supporters); -+ if (res != 0) { -+ CRIT("Thread creation failed"); -+ return -1; - } - -- supporter->handlers = handlers; -- supporter->data = handlers->create(remote_home, remote_ro); -+ if (pthread_detach(a_thread) != 0) { -+ SYSERROR("Failed to detach 0x%lx", a_thread); -+ return -1; -+ } - -- return supporter; -+ return 0; - --err_out: -- free(handlers); -- free(supporter); -- return NULL; -+free_out: -+ remote_image_destroy(supporters.image_data); -+ remote_layer_destroy(supporters.layer_data); -+ remote_overlay_destroy(supporters.overlay_data); - -+ return -1; - } - --void destroy_suppoter(remote_supporter *supporter) -+// this function calculate map_a - map_b => diff_list -+// diff_list contains keys inside map_a but not inside map_b -+static char **map_diff(const map_t *map_a, const map_t *map_b) - { -- if (supporter->handlers->destroy == NULL) { -- ERROR("destroy_supporter operation not supported"); -- return; -+ char **array = NULL; -+ map_itor *itor = map_itor_new(map_a); -+ bool *found = NULL; -+ -+ // iter new_map, every item not in old, append them to new_layers -+ for (; map_itor_valid(itor); map_itor_next(itor)) { -+ char *id = map_itor_key(itor); -+ found = map_search(map_b, id); -+ if (found == NULL) { -+ util_array_append(&array, util_strdup_s(id)); -+ } - } - -- supporter->handlers->destroy(supporter->data); -- free(supporter->handlers); -- free(supporter); -+ map_itor_free(itor); -+ -+ return array; - } - --int scan_remote_dir(remote_supporter *supporter) -+char **remote_deleted_layers(const map_t *old, const map_t *new) - { -- if (supporter->handlers->scan_remote_dir == NULL) { -- ERROR("scan_remote_dir operation not supported"); -- return -1; -- } -- return supporter->handlers->scan_remote_dir(supporter->data); -+ return map_diff(old, new); - } - --int load_item(remote_supporter *supporter) -+char **remote_added_layers(const map_t *old, const map_t *new) - { -- if (supporter->handlers->scan_remote_dir == NULL) { -- ERROR("load_item operation not supported"); -- return -1; -- } -- return supporter->handlers->load_item(supporter->data); -+ return map_diff(new, old); - } -diff --git a/src/daemon/modules/image/oci/storage/remote_layer_support/remote_support.h b/src/daemon/modules/image/oci/storage/remote_layer_support/remote_support.h -index d1f7af35..892a9155 100644 ---- a/src/daemon/modules/image/oci/storage/remote_layer_support/remote_support.h -+++ b/src/daemon/modules/image/oci/storage/remote_layer_support/remote_support.h -@@ -17,39 +17,59 @@ - #define DAEMON_MODULES_IMAGE_OCI_STORAGE_LAYER_STORE_REMOTE_LAYER_SUPPORT_REMOTE_SUPPORT_H - - #include "linked_list.h" --#define REMOTE_RO_LAYER_DIR "RO" --#define OVERLAY_RO_DIR "RO" -+#include "map.h" -+#include "ro_symlink_maintain.h" - - #ifdef __cplusplus - extern "C" { - #endif - --typedef struct { -- void *(*create)(const char *remote_home, const char *remote_ro); -- void (*destroy)(void *data); -- // populate the list contains all dirs -- int (*scan_remote_dir)(void *data); -- // consume the list contains all dirs -- int (*load_item)(void *data); --} remote_support; -+struct remote_overlay_data { -+ const char *overlay_home; -+ const char *overlay_ro; -+}; - --typedef struct { -- void *data; -- remote_support *handlers; --} remote_supporter; -+struct remote_layer_data { -+ const char *layer_home; -+ const char *layer_ro; -+}; - --// RemoteSupport *impl_remote_support(); --remote_supporter *create_image_supporter(const char *remote_home, const char *remote_ro); -+struct remote_image_data { -+ const char *image_home; -+}; - --remote_supporter *create_layer_supporter(const char *remote_home, const char *remote_ro); -+// image impl -+struct remote_image_data *remote_image_create(const char *image_home, const char *image_ro); - --remote_supporter *create_overlay_supporter(const char *remote_home, const char *remote_ro); -+void remote_image_destroy(struct remote_image_data *data); - --void destroy_suppoter(remote_supporter *supporter); -+void remote_image_refresh(struct remote_image_data *data); - --int scan_remote_dir(remote_supporter *supporter); -+// layer impl -+struct remote_layer_data *remote_layer_create(const char *layer_home, const char *layer_ro); - --int load_item(remote_supporter *supporter); -+void remote_layer_destroy(struct remote_layer_data *data); -+ -+void remote_layer_refresh(struct remote_layer_data *data); -+ -+bool remote_layer_layer_valid(const char *layer_id); -+ -+// overlay impl -+struct remote_overlay_data *remote_overlay_create(const char *overlay_home, const char *overlay_ro); -+ -+void remote_overlay_destroy(struct remote_overlay_data *data); -+ -+void remote_overlay_refresh(struct remote_overlay_data *data); -+ -+bool remote_overlay_layer_valid(const char *layer_id); -+ -+// start refresh remote -+int remote_start_refresh_thread(void); -+ -+// extra map utils -+char **remote_deleted_layers(const map_t *old, const map_t *new_l); -+ -+char **remote_added_layers(const map_t *old, const map_t *new_l); - - #ifdef __cplusplus - } -diff --git a/src/daemon/modules/image/oci/storage/remote_layer_support/ro_symlink_maintain.c b/src/daemon/modules/image/oci/storage/remote_layer_support/ro_symlink_maintain.c -index 7df7a221..a3aa3aa4 100644 ---- a/src/daemon/modules/image/oci/storage/remote_layer_support/ro_symlink_maintain.c -+++ b/src/daemon/modules/image/oci/storage/remote_layer_support/ro_symlink_maintain.c -@@ -17,19 +17,15 @@ - - #include - #include -+#include - #include - #include --#include "map.h" -+ - #include "path.h" - #include "linked_list.h" --#include "layer_store.h" --#include "layer.h" - #include "isula_libutils/log.h" --#include "image_store.h" --#include "remote_support.h" - #include "utils.h" - #include "utils_file.h" --#include "stdlib.h" - - #define REMOTE_RO_LAYER_DIR "RO" - -@@ -43,14 +39,6 @@ static char *layer_home; - static char *overlay_ro_dir; - static char *overlay_home; - --struct supporters { -- remote_supporter *image_supporter; -- remote_supporter *layer_supporter; -- remote_supporter *overlay_supporter; --}; -- --static struct supporters supporters; -- - int remote_image_init(const char *root_dir) - { - if (root_dir == NULL) { -@@ -134,75 +122,11 @@ void remote_maintain_cleanup(void) - overlay_ro_dir = NULL; - } - --// to maintain the symbol links, add new symbol link and delete invalid symbol link --// arg is const char *driver_home --// scanning driver->home/RO/ directory, build symlink in driver->home --static void *remote_refresh_ro_symbol_link(void *arg) --{ -- struct supporters *supporters = (struct supporters *)arg; -- prctl(PR_SET_NAME, "RoLayerRefresh"); -- -- while (true) { -- util_usleep_nointerupt(5 * 1000 * 1000); -- DEBUG("remote refresh start\n"); -- scan_remote_dir(supporters->overlay_supporter); -- load_item(supporters->overlay_supporter); -- scan_remote_dir(supporters->layer_supporter); -- load_item(supporters->layer_supporter); -- scan_remote_dir(supporters->image_supporter); -- load_item(supporters->image_supporter); -- DEBUG("remote refresh end\n"); -- } -- return NULL; --} -- --int start_refresh_thread(void) --{ -- int res = 0; -- pthread_t a_thread; -- -- supporters.image_supporter = create_image_supporter(image_home, NULL); -- if (supporters.image_supporter == NULL) { -- goto free_out; -- } -- -- supporters.layer_supporter = create_layer_supporter(layer_home, layer_ro_dir); -- if (supporters.layer_supporter == NULL) { -- goto free_out; -- } -- -- supporters.overlay_supporter = create_overlay_supporter(overlay_home, overlay_ro_dir); -- if (supporters.overlay_supporter == NULL) { -- goto free_out; -- } -- -- res = pthread_create(&a_thread, NULL, remote_refresh_ro_symbol_link, (void *)&supporters); -- if (res != 0) { -- CRIT("Thread creation failed"); -- return -1; -- } -- -- if (pthread_detach(a_thread) != 0) { -- SYSERROR("Failed to detach 0x%lx", a_thread); -- return -1; -- } -- -- return 0; -- --free_out: -- destroy_suppoter(supporters.image_supporter); -- destroy_suppoter(supporters.layer_supporter); -- destroy_suppoter(supporters.overlay_supporter); -- -- return -1; --} -- - static int do_build_ro_dir(const char *home, const char *id) - { - char *ro_symlink = NULL; - char *ro_layer_dir = NULL; - int nret = 0; -- // bool ret = true; - int ret = 0; - - nret = asprintf(&ro_symlink, "%s/%s", home, id); -@@ -305,43 +229,15 @@ int remote_overlay_remove_ro_dir(const char *id) - return do_remove_ro_dir(overlay_home, id); - } - --static char **map_diff(map_t *map_a, map_t *map_b) --{ -- char **array = NULL; -- map_itor *itor = map_itor_new(map_a); -- bool *found = NULL; -- -- // iter new_map, every item not in old, append them to new_layers -- for (; map_itor_valid(itor); map_itor_next(itor)) { -- char *id = map_itor_key(itor); -- found = map_search(map_b, id); -- if (found == NULL) { -- util_array_append(&array, util_strdup_s(id)); -- } -- } -- -- map_itor_free(itor); -- -- return array; --} -- --char **deleted_layers(map_t *old, map_t *new) --{ -- return map_diff(old, new); --} -- --char **added_layers(map_t *old, map_t *new) -+maintain_context get_maintain_context(void) - { -- return map_diff(new, old); --} -+ maintain_context ctx = {0x0}; - --int empty_map(map_t *mp) --{ -- if (mp == NULL) { -- return -1; -- } -+ ctx.image_home = image_home; -+ ctx.layer_ro_dir = layer_ro_dir; -+ ctx.layer_home = layer_home; -+ ctx.overlay_ro_dir = overlay_ro_dir; -+ ctx.overlay_home = overlay_home; - -- map_clear(mp); -- mp->store->root = mp->store->nil; -- return 0; -+ return ctx; - } -diff --git a/src/daemon/modules/image/oci/storage/remote_layer_support/ro_symlink_maintain.h b/src/daemon/modules/image/oci/storage/remote_layer_support/ro_symlink_maintain.h -index 25712d40..aa2036ea 100644 ---- a/src/daemon/modules/image/oci/storage/remote_layer_support/ro_symlink_maintain.h -+++ b/src/daemon/modules/image/oci/storage/remote_layer_support/ro_symlink_maintain.h -@@ -15,12 +15,21 @@ - #ifndef DAEMON_MODULES_IMAGE_OCI_STORAGE_LAYER_STORE_REMOTE_LAYER_SUPPORT_RO_SYMLINK_MAINTAIN_H - #define DAEMON_MODULES_IMAGE_OCI_STORAGE_LAYER_STORE_REMOTE_LAYER_SUPPORT_RO_SYMLINK_MAINTAIN_H - --#include "map.h" -+#define REMOTE_RO_LAYER_DIR "RO" -+#define OVERLAY_RO_DIR "RO" - - #ifdef __cplusplus - extern "C" { - #endif - -+typedef struct { -+ const char *image_home; -+ const char *layer_ro_dir; -+ const char *layer_home; -+ const char *overlay_ro_dir; -+ const char *overlay_home; -+} maintain_context; -+ - int remote_image_init(const char *root_dir); - - int remote_layer_init(const char *root_dir); -@@ -29,8 +38,6 @@ int remote_overlay_init(const char *driver_home); - - void remote_maintain_cleanup(void); - --int start_refresh_thread(void); -- - int remote_layer_build_ro_dir(const char *id); - - int remote_overlay_build_ro_dir(const char *id); -@@ -39,11 +46,7 @@ int remote_layer_remove_ro_dir(const char *id); - - int remote_overlay_remove_ro_dir(const char *id); - --char **deleted_layers(map_t *old, map_t *new); -- --char **added_layers(map_t *old, map_t *new); -- --int empty_map(map_t *mp); -+maintain_context get_maintain_context(void); - - #ifdef __cplusplus - } -diff --git a/src/daemon/modules/image/oci/storage/storage.c b/src/daemon/modules/image/oci/storage/storage.c -index 31812a22..f9830ac3 100644 ---- a/src/daemon/modules/image/oci/storage/storage.c -+++ b/src/daemon/modules/image/oci/storage/storage.c -@@ -43,7 +43,7 @@ - #include "utils_verify.h" - #include "sha256.h" - #ifdef ENABLE_REMOTE_LAYER_STORE --#include "ro_symlink_maintain.h" -+#include "remote_support.h" - #endif - - static pthread_rwlock_t g_storage_rwlock; -@@ -1874,7 +1874,7 @@ int storage_module_init(struct storage_module_init_options *opts) - } - - #ifdef ENABLE_REMOTE_LAYER_STORE -- if (opts->enable_remote_layer && start_refresh_thread() != 0) { -+ if (opts->enable_remote_layer && remote_start_refresh_thread() != 0) { - ERROR("Failed to start remote refresh thread"); - } - #endif -diff --git a/src/utils/cutils/map/rb_tree.c b/src/utils/cutils/map/rb_tree.c -index e933003a..b85371e3 100644 ---- a/src/utils/cutils/map/rb_tree.c -+++ b/src/utils/cutils/map/rb_tree.c -@@ -134,6 +134,7 @@ void rbtree_clear(rb_tree_t *tree) - return; - } - rbtree_destroy_all(tree, tree->root); -+ tree->root = tree->nil; - } - - void rbtree_free(rb_tree_t *tree) -diff --git a/test/image/oci/registry/CMakeLists.txt b/test/image/oci/registry/CMakeLists.txt -index 13ed95b2..5475b7b5 100644 ---- a/test/image/oci/registry/CMakeLists.txt -+++ b/test/image/oci/registry/CMakeLists.txt -@@ -26,6 +26,7 @@ add_executable(${EXE} - ${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/daemon/modules/image/oci/registry_type.c - ${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/daemon/common/sysinfo.c - ${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/daemon/modules/image/oci/storage/image_store/image_store.c -+ ${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/daemon/modules/image/oci/storage/remote_layer_support/ro_symlink_maintain.c - ${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/daemon/modules/image/oci/registry/registry.c - ${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/daemon/modules/image/oci/registry/registry_apiv2.c - ${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/daemon/modules/image/oci/registry/registry_apiv1.c -@@ -57,6 +58,7 @@ target_include_directories(${EXE} PUBLIC - ${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/daemon - ${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/daemon/modules/image/oci/storage - ${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/daemon/modules/image/oci/storage/image_store -+ ${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/daemon/modules/image/oci/storage/remote_layer_support - ${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/daemon/modules/image/oci/registry - ${CMAKE_CURRENT_SOURCE_DIR}/../../../mocks - ) -diff --git a/test/image/oci/storage/CMakeLists.txt b/test/image/oci/storage/CMakeLists.txt -index feb81b14..7a9d77fe 100644 ---- a/test/image/oci/storage/CMakeLists.txt -+++ b/test/image/oci/storage/CMakeLists.txt -@@ -3,3 +3,6 @@ project(iSulad_UT) - add_subdirectory(images) - add_subdirectory(rootfs) - add_subdirectory(layers) -+IF (ENABLE_REMOTE_LAYER_STORE) -+add_subdirectory(remote_layer_support) -+ENDIF() -diff --git a/test/image/oci/storage/images/CMakeLists.txt b/test/image/oci/storage/images/CMakeLists.txt -index 3e6b69a4..8446ebba 100644 ---- a/test/image/oci/storage/images/CMakeLists.txt -+++ b/test/image/oci/storage/images/CMakeLists.txt -@@ -21,6 +21,7 @@ add_executable(${EXE} - ${CMAKE_CURRENT_SOURCE_DIR}/../../../../../src/daemon/modules/image/oci/storage/image_store/image_type.c - ${CMAKE_CURRENT_SOURCE_DIR}/../../../../../src/daemon/modules/image/oci/registry_type.c - ${CMAKE_CURRENT_SOURCE_DIR}/../../../../../src/daemon/modules/image/oci/storage/image_store/image_store.c -+ ${CMAKE_CURRENT_SOURCE_DIR}/../../../../../src/daemon/modules/image/oci/storage/remote_layer_support/ro_symlink_maintain.c - ${CMAKE_CURRENT_SOURCE_DIR}/../../../../mocks/storage_mock.cc - ${CMAKE_CURRENT_SOURCE_DIR}/../../../../mocks/isulad_config_mock.cc - storage_images_ut.cc) -@@ -39,6 +40,7 @@ target_include_directories(${EXE} PUBLIC - ${CMAKE_CURRENT_SOURCE_DIR}/../../../../../src/daemon/modules/image/oci - ${CMAKE_CURRENT_SOURCE_DIR}/../../../../../src/daemon/modules/image/oci/storage - ${CMAKE_CURRENT_SOURCE_DIR}/../../../../../src/daemon/modules/image/oci/storage/image_store -+ ${CMAKE_CURRENT_SOURCE_DIR}/../../../../../src/daemon/modules/image/oci/storage/remote_layer_support - ${CMAKE_CURRENT_SOURCE_DIR}/../../../../../src/daemon/modules/image/oci/registry - ${CMAKE_CURRENT_SOURCE_DIR}/../../../../mocks - ) -diff --git a/test/image/oci/storage/layers/CMakeLists.txt b/test/image/oci/storage/layers/CMakeLists.txt -index 952e9483..ae0ac9c3 100644 ---- a/test/image/oci/storage/layers/CMakeLists.txt -+++ b/test/image/oci/storage/layers/CMakeLists.txt -@@ -30,6 +30,7 @@ add_executable(${DRIVER_EXE} - ${CMAKE_CURRENT_SOURCE_DIR}/../../../../../src/daemon/modules/image/oci/storage/layer_store/graphdriver/devmapper/metadata_store.c - ${CMAKE_CURRENT_SOURCE_DIR}/../../../../../src/daemon/modules/image/oci/storage/layer_store/graphdriver/devmapper/wrapper_devmapper.c - ${CMAKE_CURRENT_SOURCE_DIR}/../../../../../src/daemon/modules/image/oci/storage/layer_store/graphdriver/overlay2/driver_overlay2.c -+ ${CMAKE_CURRENT_SOURCE_DIR}/../../../../../src/daemon/modules/image/oci/storage/remote_layer_support/ro_symlink_maintain.c - ${CMAKE_CURRENT_SOURCE_DIR}/../../../../../src/daemon/modules/image/oci/storage/layer_store/graphdriver/quota/project_quota.c - ${CMAKE_CURRENT_SOURCE_DIR}/../../../../mocks/driver_quota_mock.cc - storage_driver_ut.cc) -@@ -52,6 +53,7 @@ target_include_directories(${DRIVER_EXE} PUBLIC - ${CMAKE_CURRENT_SOURCE_DIR}/../../../../../src/daemon/modules/image/oci/storage/layer_store/graphdriver - ${CMAKE_CURRENT_SOURCE_DIR}/../../../../../src/daemon/modules/image/oci/storage/layer_store/graphdriver/devmapper - ${CMAKE_CURRENT_SOURCE_DIR}/../../../../../src/daemon/modules/image/oci/storage/layer_store/graphdriver/overlay2 -+ ${CMAKE_CURRENT_SOURCE_DIR}/../../../../../src/daemon/modules/image/oci/storage/remote_layer_support - ${CMAKE_CURRENT_SOURCE_DIR}/../../../../../src/daemon/modules/image/oci/storage/layer_store/graphdriver/quota - ${CMAKE_CURRENT_SOURCE_DIR}/../../../../mocks - ) -@@ -105,6 +107,7 @@ add_executable(${LAYER_EXE} - ${CMAKE_CURRENT_SOURCE_DIR}/../../../../../src/daemon/modules/image/oci/storage/layer_store/graphdriver/devmapper/wrapper_devmapper.c - ${CMAKE_CURRENT_SOURCE_DIR}/../../../../../src/daemon/modules/image/oci/storage/layer_store/graphdriver/overlay2/driver_overlay2.c - ${CMAKE_CURRENT_SOURCE_DIR}/../../../../../src/daemon/modules/image/oci/storage/layer_store/graphdriver/quota/project_quota.c -+ ${CMAKE_CURRENT_SOURCE_DIR}/../../../../../src/daemon/modules/image/oci/storage/remote_layer_support/ro_symlink_maintain.c - ${CMAKE_CURRENT_SOURCE_DIR}/../../../../mocks/driver_quota_mock.cc - storage_layers_ut.cc) - -@@ -129,6 +132,7 @@ target_include_directories(${LAYER_EXE} PUBLIC - ${CMAKE_CURRENT_SOURCE_DIR}/../../../../../src/daemon/modules/image/oci/storage/layer_store/graphdriver/devmapper - ${CMAKE_CURRENT_SOURCE_DIR}/../../../../../src/daemon/modules/image/oci/storage/layer_store/graphdriver/overlay2 - ${CMAKE_CURRENT_SOURCE_DIR}/../../../../../src/daemon/modules/image/oci/storage/layer_store/graphdriver/quota -+ ${CMAKE_CURRENT_SOURCE_DIR}/../../../../../src/daemon/modules/image/oci/storage/remote_layer_support - ${CMAKE_CURRENT_SOURCE_DIR}/../../../../mocks - ) - -diff --git a/test/image/oci/storage/remote_layer_support/CMakeLists.txt b/test/image/oci/storage/remote_layer_support/CMakeLists.txt -new file mode 100644 -index 00000000..c36d9049 ---- /dev/null -+++ b/test/image/oci/storage/remote_layer_support/CMakeLists.txt -@@ -0,0 +1,44 @@ -+project(iSulad_UT) -+ -+SET(EXE remote_layer_support_ut) -+ -+add_executable(${EXE} -+ ${CMAKE_CURRENT_SOURCE_DIR}/../../../../mocks/remote_store_mock.cc -+ ${CMAKE_CURRENT_SOURCE_DIR}/../../../../../src/utils/cutils/map/map.c -+ ${CMAKE_CURRENT_SOURCE_DIR}/../../../../../src/daemon/modules/image/oci/storage/remote_layer_support/ro_symlink_maintain.c -+ ${CMAKE_CURRENT_SOURCE_DIR}/../../../../../src/daemon/modules/image/oci/storage/remote_layer_support/remote_support.c -+ ${CMAKE_CURRENT_SOURCE_DIR}/../../../../../src/daemon/modules/image/oci/storage/remote_layer_support/overlay_remote_impl.c -+ ${CMAKE_CURRENT_SOURCE_DIR}/../../../../../src/daemon/modules/image/oci/storage/remote_layer_support/image_remote_impl.c -+ ${CMAKE_CURRENT_SOURCE_DIR}/../../../../../src/daemon/modules/image/oci/storage/remote_layer_support/layer_remote_impl.c -+ ${CMAKE_CURRENT_SOURCE_DIR}/../../../../../src/utils/cutils/utils_file.c -+ remote_layer_ut.cc -+ ) -+ -+target_include_directories(${EXE} PUBLIC -+ ${GTEST_INCLUDE_DIR} -+ ${CMAKE_CURRENT_SOURCE_DIR}/../../../../include -+ ${CMAKE_CURRENT_SOURCE_DIR}/../../../../../src/daemon/config -+ ${CMAKE_CURRENT_SOURCE_DIR}/../../../../../src/daemon/common -+ ${CMAKE_CURRENT_SOURCE_DIR}/../../../../../src/daemon/modules/api -+ ${CMAKE_CURRENT_SOURCE_DIR}/../../../../../src/daemon/modules/image -+ ${CMAKE_CURRENT_SOURCE_DIR}/../../../../../src/daemon/modules/image/oci/storage -+ ${CMAKE_CURRENT_SOURCE_DIR}/../../../../../src/daemon/modules/image/oci/storage/remote_layer_support -+ ${CMAKE_CURRENT_SOURCE_DIR}/../../../../../src/daemon/modules/image/oci/storage/image_store -+ ${CMAKE_CURRENT_SOURCE_DIR}/../../../../../src/daemon/modules/image/oci/storage/layer_store -+ ${CMAKE_CURRENT_SOURCE_DIR}/../../../../../src/daemon/modules/image/oci/storage/layer_store/graphdriver/overlay2 -+ ${CMAKE_CURRENT_SOURCE_DIR}/../../../../../src/daemon/modules/image/oci/storage/layer_store/graphdriver/devmapper -+ ${CMAKE_CURRENT_SOURCE_DIR}/../../../../../src/daemon/modules/image/oci/storage/layer_store/graphdriver -+ ${CMAKE_CURRENT_SOURCE_DIR}/../../../../../src/utils/cutils -+ ${CMAKE_CURRENT_SOURCE_DIR}/../../../../mocks -+ ) -+ -+target_link_libraries(${EXE} -+ ${GTEST_BOTH_LIBRARIES} -+ ${GMOCK_LIBRARY} -+ ${GMOCK_MAIN_LIBRARY} -+ ${CMAKE_THREAD_LIBS_INIT} -+ ${ISULA_LIBUTILS_LIBRARY} -+ -lgtest -lgtest_main libutils_ut -lcrypto -lyajl -lz) -+ -+add_test(NAME ${EXE} COMMAND ${EXE} --gtest_output=xml:${EXE}-Results.xml) -+set_tests_properties(${EXE} PROPERTIES TIMEOUT 120) -diff --git a/test/image/oci/storage/remote_layer_support/remote_layer_ut.cc b/test/image/oci/storage/remote_layer_support/remote_layer_ut.cc -new file mode 100644 -index 00000000..5f5e92fb ---- /dev/null -+++ b/test/image/oci/storage/remote_layer_support/remote_layer_ut.cc -@@ -0,0 +1,93 @@ -+/****************************************************************************** -+ * Copyright (c) Huawei Technologies Co., Ltd. 2020-2020. All rights reserved. -+ * iSulad licensed under the Mulan PSL v2. -+ * You can use this software according to the terms and conditions of the Mulan PSL v2. -+ * You may obtain a copy of Mulan PSL v2 at: -+ * http://license.coscl.org.cn/MulanPSL2 -+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR -+ * IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR -+ * PURPOSE. -+ * See the Mulan PSL v2 for more details. -+ * Author: wangrunze -+ * Create: 2023-03-16 -+ * Description: provide remote layer support ut -+ ******************************************************************************/ -+#include -+ -+#include "remote_store_mock.h" -+#include "ro_symlink_maintain.h" -+#include "remote_support.h" -+#include "map.h" -+ -+using ::testing::Invoke; -+ -+bool invokeOverlayRemoteLayerValid(const char *id) -+{ -+ return true; /* currently always valid overlay layer */ -+} -+ -+bool invokeLayerRemoteLayerValid(const char *id) -+{ -+ return true; -+} -+ -+int invokeLayerLoadOneLayer(const char *id) -+{ -+ return 0; -+} -+ -+int invokeLayerRemoveOneLayer(const char *id) -+{ -+ return 0; -+} -+ -+int invokeImageAppendOneImage(const char *id) -+{ -+ return 0; -+} -+ -+int invokeImageRemoveOneImage(const char *id) -+{ -+ return 0; -+} -+ -+char *invokeImageGetTopLayer(const char *id) -+{ -+ return NULL; -+} -+ -+int invokeImageValidSchemaV1(const char *path, bool *valid) -+{ -+ return 0; -+} -+ -+void mockCommonAll(MockRemoteStore *mock) -+{ -+ EXPECT_CALL(*mock, LayerLoadOneLayer(::testing::_)).WillRepeatedly(Invoke(invokeLayerLoadOneLayer)); -+ EXPECT_CALL(*mock, LayerRemoveOneLayer(::testing::_)).WillRepeatedly(Invoke(invokeLayerRemoveOneLayer)); -+ -+ EXPECT_CALL(*mock, ImageAppendOneImage(::testing::_)).WillRepeatedly(Invoke(invokeImageAppendOneImage)); -+ EXPECT_CALL(*mock, ImageRemoveOneImage(::testing::_)).WillRepeatedly(Invoke(invokeImageRemoveOneImage)); -+ EXPECT_CALL(*mock, ImageGetTopLayer(::testing::_)).WillRepeatedly(Invoke(invokeImageGetTopLayer)); -+ EXPECT_CALL(*mock, ImageValidSchemaV1(::testing::_, ::testing::_)).WillRepeatedly(Invoke(invokeImageValidSchemaV1)); -+} -+ -+TEST(remote_Layer_ut, test_map_diff) -+{ -+ // old: a b x -+ // new: x b c -+ map_t *old_one = map_new(MAP_STR_BOOL, MAP_DEFAULT_CMP_FUNC, MAP_DEFAULT_FREE_FUNC); -+ map_t *new_one = map_new(MAP_STR_BOOL, MAP_DEFAULT_CMP_FUNC, MAP_DEFAULT_FREE_FUNC); -+ bool exist = true; -+ -+ map_insert(old_one, (void *)"a", (void *)&exist); -+ map_insert(old_one, (void *)"b", (void *)&exist); -+ map_insert(new_one, (void *)"b", (void *)&exist); -+ map_insert(new_one, (void *)"c", (void *)&exist); -+ -+ char **added = remote_added_layers(old_one, new_one); -+ char **deleted = remote_deleted_layers(old_one, new_one); -+ -+ ASSERT_EQ(added[0][0], 'c'); -+ ASSERT_EQ(deleted[0][0], 'a'); -+} -diff --git a/test/image/oci/storage/rootfs/CMakeLists.txt b/test/image/oci/storage/rootfs/CMakeLists.txt -index 4d7d3533..5383fbac 100644 ---- a/test/image/oci/storage/rootfs/CMakeLists.txt -+++ b/test/image/oci/storage/rootfs/CMakeLists.txt -@@ -22,6 +22,7 @@ add_executable(${EXE} - ${CMAKE_CURRENT_SOURCE_DIR}/../../../../../src/daemon/modules/image/oci/utils_images.c - ${CMAKE_CURRENT_SOURCE_DIR}/../../../../../src/daemon/modules/image/oci/storage/rootfs_store/rootfs.c - ${CMAKE_CURRENT_SOURCE_DIR}/../../../../../src/daemon/modules/image/oci/storage/rootfs_store/rootfs_store.c -+ ${CMAKE_CURRENT_SOURCE_DIR}/../../../../../src/daemon/modules/image/oci/storage/remote_layer_support/ro_symlink_maintain.c - ${CMAKE_CURRENT_SOURCE_DIR}/../../../../mocks/storage_mock.cc - ${CMAKE_CURRENT_SOURCE_DIR}/../../../../mocks/isulad_config_mock.cc - storage_rootfs_ut.cc) -@@ -41,6 +42,7 @@ target_include_directories(${EXE} PUBLIC - ${CMAKE_CURRENT_SOURCE_DIR}/../../../../../src/daemon/modules/image/oci - ${CMAKE_CURRENT_SOURCE_DIR}/../../../../../src/daemon/modules/image/oci/storage - ${CMAKE_CURRENT_SOURCE_DIR}/../../../../../src/daemon/modules/image/oci/storage/rootfs_store -+ ${CMAKE_CURRENT_SOURCE_DIR}/../../../../../src/daemon/modules/image/oci/storage/remote_layer_support - ) - - target_link_libraries(${EXE} ${GTEST_BOTH_LIBRARIES} ${GMOCK_LIBRARY} ${GMOCK_MAIN_LIBRARY} ${CMAKE_THREAD_LIBS_INIT} ${ISULA_LIBUTILS_LIBRARY} -lcrypto -lyajl -lz) -diff --git a/test/mocks/remote_store_mock.cc b/test/mocks/remote_store_mock.cc -new file mode 100644 -index 00000000..c6428623 ---- /dev/null -+++ b/test/mocks/remote_store_mock.cc -@@ -0,0 +1,68 @@ -+/****************************************************************************** -+ * Copyright (c) Huawei Technologies Co., Ltd. 2023. All rights reserved. -+ * iSulad licensed under the Mulan PSL v2. -+ * You can use this software according to the terms and conditions of the Mulan PSL v2. -+ * You may obtain a copy of Mulan PSL v2 at: -+ * http://license.coscl.org.cn/MulanPSL2 -+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR -+ * IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR -+ * PURPOSE. -+ * See the Mulan PSL v2 for more details. -+ * Author: wangrunze -+ * Create: 2023-03-09 -+ * Description: provide mock for image store, layer store and driver overlay -+ ******************************************************************************/ -+ -+#include "remote_store_mock.h" -+ -+namespace { -+MockRemoteStore *g_remote_store_mock = nullptr; -+} -+ -+int remote_load_one_layer(const char *id) -+{ -+ if (g_remote_store_mock != nullptr) { -+ return g_remote_store_mock->LayerLoadOneLayer(id); -+ } -+ return -1; -+} -+ -+int remote_layer_remove_memory_stores_with_lock(const char *id) -+{ -+ if (g_remote_store_mock != nullptr) { -+ return g_remote_store_mock->LayerRemoveOneLayer(id); -+ } -+ return -1; -+} -+ -+int image_store_validate_manifest_schema_version_1(const char *path, bool *valid) -+{ -+ if (g_remote_store_mock != nullptr) { -+ return g_remote_store_mock->ImageValidSchemaV1(path, valid); -+ } -+ return -1; -+} -+ -+int remote_append_image_by_directory_with_lock(const char *image_dir) -+{ -+ if (g_remote_store_mock != nullptr) { -+ return g_remote_store_mock->ImageAppendOneImage(image_dir); -+ } -+ return -1; -+} -+ -+int remote_remove_image_from_memory_with_lock(const char *id) -+{ -+ if (g_remote_store_mock != nullptr) { -+ return g_remote_store_mock->ImageRemoveOneImage(id); -+ } -+ return -1; -+} -+ -+char *remote_image_get_top_layer_from_json(const char *img_id) -+{ -+ if (g_remote_store_mock != nullptr) { -+ return g_remote_store_mock->ImageGetTopLayer(img_id); -+ } -+ return nullptr; -+} -diff --git a/test/mocks/remote_store_mock.h b/test/mocks/remote_store_mock.h -new file mode 100644 -index 00000000..e8d73ef1 ---- /dev/null -+++ b/test/mocks/remote_store_mock.h -@@ -0,0 +1,40 @@ -+/****************************************************************************** -+ * Copyright (c) Huawei Technologies Co., Ltd. 2023. All rights reserved. -+ * iSulad licensed under the Mulan PSL v2. -+ * You can use this software according to the terms and conditions of the Mulan PSL v2. -+ * You may obtain a copy of Mulan PSL v2 at: -+ * http://license.coscl.org.cn/MulanPSL2 -+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR -+ * IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR -+ * PURPOSE. -+ * See the Mulan PSL v2 for more details. -+ * Author: wangrunze -+ * Create: 2023-03-09 -+ * Description: provide mock for image store, layer store and driver overlay -+ ******************************************************************************/ -+ -+#ifndef _ISULAD_TEST_MOCKS_REMOTE_STORE_MOCK_H -+#define _ISULAD_TEST_MOCKS_REMOTE_STORE_MOCK_H -+ -+#include -+ -+#include "image_store.h" -+#include "layer_store.h" -+#include "driver_overlay2.h" -+ -+class MockRemoteStore { -+public: -+ virtual ~MockRemoteStore() = default; -+ // MOCK_METHOD1(OverlayRemoteLayerValid, bool(const char *)); -+ -+ // MOCK_METHOD1(LayerRemoteLayerValid, bool(const char *)); -+ MOCK_METHOD1(LayerLoadOneLayer, int(const char *)); -+ MOCK_METHOD1(LayerRemoveOneLayer, int(const char *)); -+ -+ MOCK_METHOD1(ImageAppendOneImage, int(const char *)); -+ MOCK_METHOD1(ImageRemoveOneImage, int(const char *)); -+ MOCK_METHOD1(ImageGetTopLayer, char *(const char *)); -+ MOCK_METHOD2(ImageValidSchemaV1, int(const char *, bool *)); -+}; -+ -+#endif // _ISULAD_TEST_MOCKS_IMAGE_MOCK_H --- -2.25.1 - diff --git a/0052-add-ci-for-runc.patch b/0052-add-ci-for-runc.patch deleted file mode 100644 index 24c4194..0000000 --- a/0052-add-ci-for-runc.patch +++ /dev/null @@ -1,1666 +0,0 @@ -From b7b26805535a73eb647111d247d0e7c5f2c81856 Mon Sep 17 00:00:00 2001 -From: zhongtao -Date: Wed, 22 Mar 2023 09:50:56 +0800 -Subject: [PATCH 52/53] add ci for runc - -Signed-off-by: zhongtao ---- - CI/test_cases/container_cases/annotaion.sh | 31 ++-- - .../container_cases/bind_special_dir.sh | 10 +- - .../check_fd_leakage_of_isulad.sh | 31 +++- - .../container_cases/cleanup_leftover.sh | 49 ++++--- - .../container_cases/cni_bridge_test.sh | 14 +- - CI/test_cases/container_cases/cpu_rt.sh | 88 ++++++----- - CI/test_cases/container_cases/create.sh | 41 ++++-- - .../container_cases/cri_default_namespace.sh | 28 ++-- - CI/test_cases/container_cases/cri_pod_ip.sh | 18 ++- - CI/test_cases/container_cases/cri_stream.sh | 58 ++++++-- - CI/test_cases/container_cases/kill.sh | 19 ++- - CI/test_cases/container_cases/log_test.sh | 138 ++++++++++-------- - CI/test_cases/container_cases/pause.sh | 21 ++- - CI/test_cases/container_cases/resume.sh | 25 ++-- - CI/test_cases/container_cases/rm.sh | 29 ++-- - CI/test_cases/container_cases/start.sh | 39 +++-- - CI/test_cases/container_cases/stats.sh | 16 +- - CI/test_cases/container_cases/ulimit.sh | 24 +-- - CI/test_cases/container_cases/update.sh | 46 ++++-- - CI/test_cases/helpers.sh | 5 +- - 20 files changed, 472 insertions(+), 258 deletions(-) - -diff --git a/CI/test_cases/container_cases/annotaion.sh b/CI/test_cases/container_cases/annotaion.sh -index 65c474e8..93b432e5 100755 ---- a/CI/test_cases/container_cases/annotaion.sh -+++ b/CI/test_cases/container_cases/annotaion.sh -@@ -21,13 +21,12 @@ - - declare -r curr_path=$(dirname $(readlink -f "$0")) - source ../helpers.sh --test="annotation test => test_annotation" - - function test_label() - { - local ret=0 - -- isula run -tid --name annotation --label "test_long_label=111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111" busybox sh -+ isula run -tid --name annotation --runtime $1 --label "test_long_label=111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111" busybox sh - [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to run container for long label" && ((ret++)) - - isula inspect annotation -@@ -52,7 +51,7 @@ function test_annotation() - { - local ret=0 - -- isula run -tid --name annotation --annotation "test_long_label=111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111" busybox sh -+ isula run -tid --name annotation --runtime $1 --annotation "test_long_label=111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111" busybox sh - [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to run container for long label" && ((ret++)) - - isula inspect annotation -@@ -73,14 +72,28 @@ function test_annotation() - return ${ret} - } - --declare -i ans=0 -+function do_test_t() -+{ -+ local ret=0 -+ local runtime=$1 -+ local test="annotation test => $runtime" -+ msg_info "${test} starting..." - --msg_info "${test} starting..." --[[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - start isulad failed" && ((ret++)) -+ test_label $runtime || ((ret++)) -+ test_annotation $runtime || ((ret++)) - --test_label || ((ans++)) --test_annotation || ((ans++)) -+ msg_info "${test} finished with return ${ret}..." -+ return $ret -+} -+ -+declare -i ans=0 - --msg_info "${test} finished with return ${ans}..." -+for element in ${RUNTIME_LIST[@]}; -+do -+ do_test_t $element -+ if [ $? -ne 0 ];then -+ let "ans=$ans + 1" -+ fi -+done - - show_result ${ans} "${curr_path}/${0}" -diff --git a/CI/test_cases/container_cases/bind_special_dir.sh b/CI/test_cases/container_cases/bind_special_dir.sh -index e855404b..e2653685 100755 ---- a/CI/test_cases/container_cases/bind_special_dir.sh -+++ b/CI/test_cases/container_cases/bind_special_dir.sh -@@ -25,8 +25,9 @@ source ../helpers.sh - function test_bind_special_dir() - { - local ret=0 -+ local runtime=$1 - local image="busybox" -- local test="container bind special directory test => (${FUNCNAME[@]})" -+ local test="container bind special directory test with ($runtime) => (${FUNCNAME[@]})" - - msg_info "${test} starting..." - -@@ -36,7 +37,7 @@ function test_bind_special_dir() - isula images | grep busybox - [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - missing list image: ${image}" && ((ret++)) - -- c_id=`isula run -itd -v -itd -v /sys/fs:/sys/fs:rw,rshared -v /proc:/proc -v /dev:/dev:ro -v /dev/pts:/dev/pts:rw busybox sh` -+ c_id=`isula run --runtime=$runtime -itd -v -itd -v /sys/fs:/sys/fs:rw,rshared -v /proc:/proc -v /dev:/dev:ro -v /dev/pts:/dev/pts:rw busybox sh` - [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to run container with image: ${image}" && ((ret++)) - - isula exec -it $c_id sh -c "ls -al /sys/fs" | grep "cgroup" -@@ -51,6 +52,9 @@ function test_bind_special_dir() - - declare -i ans=0 - --test_bind_special_dir || ((ans++)) -+for element in ${RUNTIME_LIST[@]}; -+do -+ test_bind_special_dir $element || ((ans++)) -+done - - show_result ${ans} "${curr_path}/${0}" -diff --git a/CI/test_cases/container_cases/check_fd_leakage_of_isulad.sh b/CI/test_cases/container_cases/check_fd_leakage_of_isulad.sh -index 39c9f49f..1978b587 100755 ---- a/CI/test_cases/container_cases/check_fd_leakage_of_isulad.sh -+++ b/CI/test_cases/container_cases/check_fd_leakage_of_isulad.sh -@@ -26,6 +26,10 @@ connect="grpc" - - function do_test_t_grpc() - { -+ local runtime=$1 -+ local test="do_test_t_grpc test => $runtime" -+ msg_info "${test} starting..." -+ - if [ $connect != "grpc" ];then - echo "this test is designed for grpc version" - return 0 -@@ -34,7 +38,7 @@ function do_test_t_grpc() - containername=test_fds - isulad_pid=`cat /var/run/isulad.pid` - precount=`ls /proc/$isulad_pid/fd | wc -l` -- isula create -t --name $containername busybox -+ isula create -t --name $containername --runtime $runtime busybox - fn_check_eq "$?" "0" "create failed" - testcontainer $containername inited - -@@ -61,11 +65,15 @@ function do_test_t_grpc() - curcount=`ls /proc/$isulad_pid/fd | wc -l` - fn_check_eq "$precount" "$curcount" "test failed" - -+ msg_info "${test} finished with return ${TC_RET_T}..." - return $TC_RET_T - } - - function do_test_t_rest() - { -+ local runtime=$1 -+ local test="do_test_t_rest test => $runtime" -+ msg_info "${test} starting..." - if [ $connect != "rest" ];then - echo "this test is designed for rest version" - return 0 -@@ -76,7 +84,7 @@ function do_test_t_rest() - isulad_pid=`cat /var/run/isulad.pid` - precount=`ls /proc/$isulad_pid/fd | wc -l` - -- isula create -t --name $containername busybox -+ isula create -t --name $containername --runtime $runtime busybox - fn_check_eq "$?" "0" "create failed" - testcontainer $containername inited - -@@ -118,15 +126,24 @@ function do_test_t_rest() - TC_RET_T=$(($TC_RET_T+1)) - fi - -+ msg_info "${test} finished with return ${TC_RET_T}..." - return $TC_RET_T - } - - ret=0 - --do_test_t_grpc --do_test_t_rest --if [ $? -ne 0 ];then -- let "ret=$ret + 1" --fi -+for element in ${RUNTIME_LIST[@]}; -+do -+ do_test_t_grpc $element -+ if [ $? -ne 0 ];then -+ let "ret=$ret + 1" -+ fi -+ do_test_t_rest $element -+ if [ $? -ne 0 ];then -+ let "ret=$ret + 1" -+ fi -+done -+ -+ - - show_result $ret "basic check fd leak" -diff --git a/CI/test_cases/container_cases/cleanup_leftover.sh b/CI/test_cases/container_cases/cleanup_leftover.sh -index 054f7d48..6f29180c 100755 ---- a/CI/test_cases/container_cases/cleanup_leftover.sh -+++ b/CI/test_cases/container_cases/cleanup_leftover.sh -@@ -5,26 +5,41 @@ - declare -r curr_path=$(dirname $(readlink -f "$0")) - source ../helpers.sh - --containerid=$(isula run -tid busybox ls) -+function test_cleanup() -+{ -+ local runtime=$1 -+ local test="cleanup_test => (${runtime})" -+ msg_info "${test} starting..." - --check_valgrind_log --rm -rf "$LCR_ROOT_PATH/$containerid" -+ containerid=$(isula run -tid --runtime $runtime busybox ls) - --start_isulad_with_valgrind --wait_isulad_running -+ check_valgrind_log -+ rm -rf "$RUNTIME_ROOT_PATH/$runtime/$containerid" -+ -+ start_isulad_with_valgrind -+ wait_isulad_running - --ret=0 --ls "/var/lib/isulad/storage/overlay-containers/$containerid" --if [ $? != 0 ]; then -- echo "ls can't access which is expected" - ret=0 --else -- ret=1; --fi --check_valgrind_log --[[ $? -ne 0 ]] && msg_err "cleanup leftover - memory leak, please check...." && ((ret++)) -- --start_isulad_with_valgrind --wait_isulad_running -+ ls "/var/lib/isulad/storage/overlay-containers/$containerid" -+ if [ $? != 0 ]; then -+ echo "ls can't access which is expected" -+ ret=0 -+ else -+ ret=1; -+ fi -+ check_valgrind_log -+ [[ $? -ne 0 ]] && msg_err "cleanup leftover - memory leak, please check...." && ((ret++)) -+ -+ start_isulad_with_valgrind -+ wait_isulad_running -+ msg_info "${test} finished with return ${ret}..." -+} -+ -+declare -i ret=0 -+ -+for element in ${RUNTIME_LIST[@]}; -+do -+ test_cleanup $element || ((ret++)) -+done - - show_result $ret "${curr_path}/${0}" -\ No newline at end of file -diff --git a/CI/test_cases/container_cases/cni_bridge_test.sh b/CI/test_cases/container_cases/cni_bridge_test.sh -index 369b284d..55c6e37c 100755 ---- a/CI/test_cases/container_cases/cni_bridge_test.sh -+++ b/CI/test_cases/container_cases/cni_bridge_test.sh -@@ -72,8 +72,9 @@ function do_post() - function do_test_help() - { - local ret=0 -+ local runtime=$4 - -- msg_info "this is $0 do_test" -+ msg_info "this is $0 do_test with runtime $runtime" - - crictl pull busybox - [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - Failed to pull busybox image" && ((ret++)) -@@ -81,14 +82,14 @@ function do_test_help() - crictl images | grep "mirrorgooglecontainers/pause-amd64" - [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - Failed to find mirrorgooglecontainers/pause-amd64 image" && ((ret++)) - -- sid1=`crictl runp ${data_path}/$1` -+ sid1=`crictl runp --runtime $runtime ${data_path}/$1` - [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - Failed to run sandbox1" && ((ret++)) - - spid1=`isula inspect -f '{{json .State.Pid}}' $sid1` - nsenter -t $spid1 -n ifconfig eth0 - [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - Sandbox1 network config failed" && ((ret++)) - -- sid2=`crictl runp ${data_path}/$2` -+ sid2=`crictl runp --runtime $runtime ${data_path}/$2` - [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - Failed to run sandbox2" && ((ret++)) - - spid2=`isula inspect -f '{{json .State.Pid}}' $sid2` -@@ -123,7 +124,7 @@ function do_test_help() - crictl rmp $sid1 $sid2 - [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - rm sandbox failed" && ((ret++)) - -- msg_info "$0 do_test finished with return ${ret}..." -+ msg_info "$0 do_test with runtime $runtime finished with return ${ret}..." - return ${ret} - } - -@@ -131,7 +132,10 @@ declare -i ans=0 - - do_pre || ((ans++)) - --do_test_help "sandbox-config.json" "sandbox-config2.json" "10\.2\." || ((ans++)) -+for element in ${RUNTIME_LIST[@]}; -+do -+ do_test_help "sandbox-config.json" "sandbox-config2.json" "10\.2\." $element || ((ans++)) -+done - - do_post - -diff --git a/CI/test_cases/container_cases/cpu_rt.sh b/CI/test_cases/container_cases/cpu_rt.sh -index 39c0b427..bdc43a5e 100755 ---- a/CI/test_cases/container_cases/cpu_rt.sh -+++ b/CI/test_cases/container_cases/cpu_rt.sh -@@ -47,10 +47,9 @@ function test_isula_update_normal() - msg_info "${test} starting..." - - #start isulad with cpu_rt -- isulad --cpu-rt-period 1000000 --cpu-rt-runtime 950000 -l DEBUG > /dev/null 2>&1 & -- wait_isulad_running -+ start_isulad_without_valgrind --cpu-rt-period 1000000 --cpu-rt-runtime 950000 - -- c_id=`isula run -itd --cpu-rt-period 1000000 --cpu-rt-runtime 1000 ${image} sh` -+ c_id=`isula run -itd --cpu-rt-period 1000000 --cpu-rt-runtime 1000 --runtime $1 ${image} sh` - [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to run container with image: ${image}" && ((ret++)) - - isula update --cpu-rt-period 900000 --cpu-rt-runtime 2000 $c_id -@@ -67,8 +66,7 @@ function test_isula_update_normal() - - stop_isulad_without_valgrind - #set cpu-rt to the initial state -- isulad --cpu-rt-period 1000000 --cpu-rt-runtime 0 -l DEBUG > /dev/null 2>&1 & -- wait_isulad_running -+ start_isulad_without_valgrind --cpu-rt-period 1000000 --cpu-rt-runtime 0 - - msg_info "${test} finished with return ${ret}..." - return ${ret} -@@ -84,23 +82,18 @@ function test_isula_update_abnormal() - isulad --cpu-rt-period 1000000 --cpu-rt-runtime 950000 -l DEBUG > /dev/null 2>&1 & - wait_isulad_running - -- c_id=`isula run -itd --cpu-rt-period 1000000 --cpu-rt-runtime 1000 ${image} sh` -+ c_id=`isula run -itd --cpu-rt-period 1000000 --cpu-rt-runtime 1000 --runtime $1 ${image} sh` - [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to run container with image: ${image}" && ((ret++)) - - isula update --cpu-rt-period 800000 --cpu-rt-runtime 900000 $c_id 2>&1 | grep "Invalid --cpu-rt-runtime: rt runtime cannot be higher than rt period" - [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to update container cpu-rt-runtime" && ((ret++)) - -- isula update --cpu-rt-runtime 1000000 $c_id 2>&1 | grep "updating cgroup cpu.rt_runtime_us to 1000000: Invalid argument" -+ isula update --cpu-rt-runtime 1000000 $c_id 2>&1 | grep -i "invalid argument" - [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to update container cpu-rt-runtime" && ((ret++)) - - isula rm -f $c_id - [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to rm container ${c_id}" && ((ret++)) - -- stop_isulad_without_valgrind -- #set cpu-rt to the initial state -- isulad --cpu-rt-period 1000000 --cpu-rt-runtime 0 -l DEBUG > /dev/null 2>&1 & -- wait_isulad_running -- - msg_info "${test} finished with return ${ret}..." - return ${ret} - } -@@ -113,8 +106,7 @@ function test_kernel_without_cpurt() - - msg_info "${test} starting..." - -- isulad --cpu-rt-period 1000000 --cpu-rt-runtime 950000 -l DEBUG > /dev/null 2>&1 & -- wait_isulad_running -+ start_isulad_without_valgrind --cpu-rt-period 1000000 --cpu-rt-runtime 950000 - - isula pull ${image} - [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to pull image: ${image}" && return ${FAILURE} -@@ -122,7 +114,7 @@ function test_kernel_without_cpurt() - isula images | grep busybox - [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - missing list image: ${image}" && ((ret++)) - -- isula run -itd --cpu-rt-period 1000000 --cpu-rt-runtime 900000 $image /bin/sh 2>&1 | grep "Your kernel does not support cgroup rt" -+ isula run -itd --cpu-rt-period 1000000 --cpu-rt-runtime 900000 --runtime $1 $image /bin/sh 2>&1 | grep "Your kernel does not support cgroup rt" - [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - kernel does not support cpu-rt" && ((ret++)) - - msg_info "${test} finished with return ${ret}..." -@@ -137,9 +129,8 @@ function test_isula_run_abnormal() - - msg_info "${test} starting..." - -- #start isulad without cpu_rt -- isulad --cpu-rt-period 1000000 --cpu-rt-runtime 950000 -l DEBUG > /dev/null 2>&1 & -- wait_isulad_running -+ #start isulad with cpu_rt -+ start_isulad_without_valgrind --cpu-rt-period 1000000 --cpu-rt-runtime 950000 - - isula pull ${image} - [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to pull image: ${image}" && return ${FAILURE} -@@ -147,25 +138,25 @@ function test_isula_run_abnormal() - isula images | grep busybox - [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - missing list image: ${image}" && ((ret++)) - -- isula run -itd --cpu-rt-period 1000000 --cpu-rt-runtime -1 $image /bin/sh 2>&1 | grep "failed to write -1" | grep "cpu.rt_runtime_us: Invalid argument" -+ isula run -itd --cpu-rt-period 1000000 --cpu-rt-runtime -1 --runtime $1 $image /bin/sh 2>&1 | grep "failed to write" | grep -i "cpu.rt_runtime_us: Invalid argument" - [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - Invalid argument for cpu-rt-runtime" && ((ret++)) - -- isula run -itd --cpu-rt-period xx --cpu-rt-runtime 10000 $image /bin/sh 2>&1 | grep 'Invalid value "xx" for flag --cpu-rt-period: Invalid argument' -+ isula run -itd --cpu-rt-period xx --cpu-rt-runtime 10000 --runtime $1 $image /bin/sh 2>&1 | grep 'Invalid value "xx" for flag --cpu-rt-period: Invalid argument' - [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - Invalid argument for cpu-rt-period" && ((ret++)) - -- isula run -itd --cpu-rt-period 1000000 --cpu-rt-runtime xx $image /bin/sh 2>&1 | grep 'Invalid value "xx" for flag --cpu-rt-runtime: Invalid argument' -+ isula run -itd --cpu-rt-period 1000000 --cpu-rt-runtime xx --runtime $1 $image /bin/sh 2>&1 | grep 'Invalid value "xx" for flag --cpu-rt-runtime: Invalid argument' - [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - Invalid argument for cpu-rt-runtime" && ((ret++)) - -- isula run -itd --cpu-rt-period xx --cpu-rt-runtime xx $image /bin/sh 2>&1 | grep 'Invalid value "xx" for flag --cpu-rt-period: Invalid argument' -+ isula run -itd --cpu-rt-period xx --cpu-rt-runtime xx --runtime $1 $image /bin/sh 2>&1 | grep 'Invalid value "xx" for flag --cpu-rt-period: Invalid argument' - [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - Invalid argument for cpu-rt-period" && ((ret++)) - -- isula run -itd --cpu-rt-period -1 --cpu-rt-runtime 10000 $image /bin/sh 2>&1 | grep "Invalid --cpu-rt-runtime: rt runtime cannot be higher than rt period" -+ isula run -itd --cpu-rt-period -1 --cpu-rt-runtime 10000 --runtime $1 $image /bin/sh 2>&1 | grep "Invalid --cpu-rt-runtime: rt runtime cannot be higher than rt period" - [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - cpu-rt-runtime cannot be higher than cpu-rt-period" && ((ret++)) - -- isula run -itd --cpu-rt-period 100 --cpu-rt-runtime 10000 $image /bin/sh 2>&1 | grep "Invalid --cpu-rt-runtime: rt runtime cannot be higher than rt period" -+ isula run -itd --cpu-rt-period 100 --cpu-rt-runtime 10000 --runtime $1 $image /bin/sh 2>&1 | grep "Invalid --cpu-rt-runtime: rt runtime cannot be higher than rt period" - [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - cpu-rt-runtime cannot be higher than cpu-rt-period" && ((ret++)) - -- isula run -itd --cpu-rt-period 1000000 --cpu-rt-runtime 960000 $image /bin/sh 2>&1 | grep "failed to write 960000" | grep "cpu.rt_runtime_us: Invalid argument" -+ isula run -itd --cpu-rt-period 1000000 --cpu-rt-runtime 960000 --runtime $1 $image /bin/sh 2>&1 | grep "failed to write" | grep -i "cpu.rt_runtime_us: Invalid argument" - [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - Invalid argument for cpu-rt-runtime" && ((ret++)) - - msg_info "${test} finished with return ${ret}..." -@@ -177,7 +168,7 @@ function test_isula_run_normal() - local ret=0 - local image="busybox" - -- isula run -itd -n box --cpu-rt-period 1000000 --cpu-rt-runtime 1000 $image /bin/sh 2>&1 -+ isula run -itd -n box --cpu-rt-period 1000000 --cpu-rt-runtime 1000 --runtime $1 $image /bin/sh 2>&1 - [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to run container" && ((ret++)) - - isula rm -f box -@@ -187,18 +178,41 @@ function test_isula_run_normal() - return ${ret} - } - -+function do_test() -+{ -+ local ret=0 -+ local runtime=$1 -+ local test="cpu_rt_test => (${runtime})" -+ msg_info "${test} starting..." -+ -+ if [ -f "/sys/fs/cgroup/cpu/cpu.rt_runtime_us" ];then -+ test_isula_run_abnormal $runtime|| ((ret++)) -+ test_isula_run_normal $runtime || ((ret++)) -+ test_cpurt_isulad_abnormal $runtime || ((ret++)) -+ test_isula_update_normal $runtime || ((ret++)) -+ test_isula_update_abnormal $runtime || ((ret++)) -+ else -+ test_kernel_without_cpurt $runtime || ((ans++)) -+ fi -+ -+ msg_info "${test} finished with return ${ret}..." -+ -+ return ${ret} -+} -+ - declare -i ans=0 - --if [ -f "/sys/fs/cgroup/cpu/cpu.rt_runtime_us" ];then -- test_isula_run_abnormal || ((ans++)) -- test_isula_run_normal || ((ans++)) -- test_cpurt_isulad_abnormal || ((ans++)) -- test_isula_update_normal || ((ans++)) -- test_isula_update_abnormal || ((ans++)) --else -- test_kernel_without_cpurt || ((ans++)) --fi -- --isula rm -f $(isula ps -aq) -+for element in ${RUNTIME_LIST[@]}; -+do -+ check_valgrind_log -+ -+ do_test $element || ((ans++)) -+ -+ stop_isulad_without_valgrind -+ # set cpu-rt to the initial state -+ start_isulad_with_valgrind --cpu-rt-period 1000000 --cpu-rt-runtime 0 -+ -+ isula rm -f $(isula ps -aq) -+done - - show_result ${ans} "${curr_path}/${0}" -diff --git a/CI/test_cases/container_cases/create.sh b/CI/test_cases/container_cases/create.sh -index 2c28a4fa..868a9b22 100755 ---- a/CI/test_cases/container_cases/create.sh -+++ b/CI/test_cases/container_cases/create.sh -@@ -23,8 +23,12 @@ source ../helpers.sh - - function do_test_t() - { -+ local runtime=$1 -+ local test="create_test => (${runtime})" -+ msg_info "${test} starting..." -+ - containername=test_create -- isula run -itd --name $containername busybox -+ isula run -itd --name $containername --runtime $runtime busybox - fn_check_eq "$?" "0" "create failed" - testcontainer $containername running - -@@ -34,44 +38,44 @@ function do_test_t() - isula inspect $containername - fn_check_ne "$?" "0" "inspect should fail" - -- containerid=`isula run -itd --name $containername --cpu-shares 1024 busybox` -+ containerid=`isula run -itd --name $containername --cpu-shares 1024 --runtime $runtime busybox` - fn_check_eq "$?" "0" "create failed" - -- cat "$LCR_ROOT_PATH/$containerid/config" | grep "cpu.shares = 1024" -+ cat "$RUNTIME_ROOT_PATH/$runtime/$containerid/config.json" | grep "\"shares\": 1024" - fn_check_eq "$?" "0" "create failed" - - isula rm -f $containername - fn_check_eq "$?" "0" "rm failed" - -- containerid=`isula run -itd --name $containername --cpu-quota 50000 busybox` -+ containerid=`isula run -itd --name $containername --cpu-quota 50000 --runtime $runtime busybox` - fn_check_eq "$?" "0" "create failed" - -- cat "$LCR_ROOT_PATH/$containerid/config" | grep "cpu.cfs_quota_us = 50000" -+ cat "$RUNTIME_ROOT_PATH/$runtime/$containerid/config.json" | grep "\"quota\": 50000" - fn_check_eq "$?" "0" "create failed" - - isula rm -f $containername - fn_check_eq "$?" "0" "rm failed" - -- containerid=`isula run -itd --name $containername --cpuset-cpus 0-1 busybox` -+ containerid=`isula run -itd --name $containername --cpuset-cpus 0-1 --runtime $runtime busybox` - fn_check_eq "$?" "0" "create failed" - -- cat "$LCR_ROOT_PATH/$containerid/config" | grep "cpuset.cpus = 0-1" -+ cat "$RUNTIME_ROOT_PATH/$runtime/$containerid/config.json" | grep "\"cpus\": \"0-1\"" - fn_check_eq "$?" "0" "create failed" - - isula rm -f $containername - fn_check_eq "$?" "0" "rm failed" - -- containerid=`isula run -itd --name $containername --memory 1000000000 busybox` -+ containerid=`isula run -itd --name $containername --memory 1000000000 --runtime $runtime busybox` - fn_check_eq "$?" "0" "create failed" - -- cat "$LCR_ROOT_PATH/$containerid/config" | grep "memory.limit_in_bytes = 1000000000" -+ cat "$RUNTIME_ROOT_PATH/$runtime/$containerid/config.json" | grep "\"limit\": 1000000000" - fn_check_eq "$?" "0" "create failed" - - isula rm -f $containername - fn_check_eq "$?" "0" "rm failed" - - # validate --label -- containerid=`isula run -itd --name $containername --label "iSulad=lcrd" busybox` -+ containerid=`isula run -itd --name $containername --label "iSulad=lcrd" --runtime $runtime busybox` - fn_check_eq "$?" "0" "create failed" - - isula inspect -f "{{.Config.Labels}}" ${containerid} | grep iSulad | grep lcrd -@@ -82,7 +86,7 @@ function do_test_t() - - # validate --label-file - echo "iSulad=lcrd\n abc=kkk" > ./label_file -- containerid=`isula run -itd --name $containername --label-file ./label_file busybox` -+ containerid=`isula run -itd --name $containername --label-file ./label_file --runtime $runtime busybox` - fn_check_eq "$?" "0" "create failed" - - isula inspect -f "{{.Config.Labels}}" ${containerid} | grep iSulad | grep lcrd -@@ -97,7 +101,7 @@ function do_test_t() - fn_check_eq "$?" "0" "rm failed" - - # validate --dns --dns-search --dns-opt -- containerid=`isula run -itd --name $containername --dns 8.8.8.8 --dns-opt debug --dns-search example.com busybox` -+ containerid=`isula run -itd --name $containername --dns 8.8.8.8 --dns-opt debug --dns-search example.com --runtime $runtime busybox` - fn_check_eq "$?" "0" "create failed" - - isula exec -it ${containerid} cat /etc/resolv.conf | grep "nameserver 8.8.8.8" -@@ -112,14 +116,19 @@ function do_test_t() - isula rm -f $containername - fn_check_eq "$?" "0" "rm failed" - -+ msg_info "${test} finished with return ${TC_RET_T}..." -+ - return $TC_RET_T - } - - ret=0 - --do_test_t --if [ $? -ne 0 ];then -- let "ret=$ret + 1" --fi -+for element in ${RUNTIME_LIST[@]}; -+do -+ do_test_t $element -+ if [ $? -ne 0 ];then -+ let "ret=$ret + 1" -+ fi -+done - - show_result $ret "basic create" -diff --git a/CI/test_cases/container_cases/cri_default_namespace.sh b/CI/test_cases/container_cases/cri_default_namespace.sh -index 6a17289b..d013c6fa 100755 ---- a/CI/test_cases/container_cases/cri_default_namespace.sh -+++ b/CI/test_cases/container_cases/cri_default_namespace.sh -@@ -43,10 +43,11 @@ function set_up() - function test_cri_default_namespace_in_pod_fun() - { - local ret=0 -- local test="test_cri_default_namespace_in_pod_fun => (${FUNCNAME[@]})" -+ local runtime=$1 -+ local test="test_cri_default_namespace_in_pod_fun => (${runtime})" - msg_info "${test} starting..." - -- sid=$(crictl runp ${data_path}/sandbox-config.json) -+ sid=$(crictl runp --runtime $runtime ${data_path}/sandbox-config.json) - [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to run sandbox" && ((ret++)) - - cid=$(crictl create $sid ${data_path}/container-config-default-namespace.json ${data_path}/sandbox-config.json) -@@ -73,14 +74,6 @@ function test_cri_default_namespace_in_pod_fun() - [[ x"$sandboxns" == x"$conatainerns" ]] && msg_err "${FUNCNAME[0]}:${LINENO} - $element namespace should be not shared in pod" && ((ret++)) - done - -- msg_info "${test} finished with return ${ret}..." -- return ${ret} --} -- --function tear_down() --{ -- local ret=0 -- - crictl stop $cid - [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to stop container" && ((ret++)) - -@@ -93,19 +86,26 @@ function tear_down() - crictl rmp $sid - [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to rm sandbox" && ((ret++)) - -+ msg_info "${test} finished with return ${ret}..." -+ return ${ret} -+} -+ -+function tear_down() -+{ - cp -f /etc/isulad/daemon.bak /etc/isulad/daemon.json - check_valgrind_log - start_isulad_with_valgrind -- -- return ${ret} - } - - declare -i ans=0 - - set_up || ((ans++)) - --test_cri_default_namespace_in_pod_fun || ((ans++)) -+for element in ${RUNTIME_LIST[@]}; -+do -+ test_cri_default_namespace_in_pod_fun $element || ((ans++)) -+done - --tear_down || ((ans++)) -+tear_down - - show_result ${ans} "${curr_path}/${0}" -diff --git a/CI/test_cases/container_cases/cri_pod_ip.sh b/CI/test_cases/container_cases/cri_pod_ip.sh -index 4048ed74..7bf7833b 100755 ---- a/CI/test_cases/container_cases/cri_pod_ip.sh -+++ b/CI/test_cases/container_cases/cri_pod_ip.sh -@@ -7,7 +7,6 @@ - curr_path=$(dirname $(readlink -f "$0")) - data_path=$(realpath $curr_path/criconfigs) - pause_img_path=$(realpath $curr_path/test_data) --work_path="/var/lib/isulad/engines/lcr" - pod_config="sandbox-config.json" - source ../helpers.sh - -@@ -41,7 +40,7 @@ function do_post() - - function do_test() - { -- msg_info "this is $0 do_test" -+ msg_info "this is $0 do_test -> ($1)" - - crictl pull busybox - if [ $? -ne 0 ]; then -@@ -55,7 +54,7 @@ function do_test() - TC_RET_T=$(($TC_RET_T+1)) - fi - -- pod_id=`crictl runp ${data_path}/$pod_config` -+ pod_id=`crictl runp --runtime $1 ${data_path}/$pod_config` - if [ $? -ne 0 ]; then - msg_err "Failed to run sandbox" - TC_RET_T=$(($TC_RET_T+1)) -@@ -83,7 +82,7 @@ function do_test() - TC_RET_T=$(($TC_RET_T+1)) - fi - -- cat ${work_path}/${pod_id}/network_settings.json | grep "$ip" -+ cat ${RUNTIME_ROOT_PATH}/${1}/${pod_id}/network_settings.json | grep "$ip" - if [ $? -ne 0 ];then - msg_err "expect ip: $ip, network_settings.json cannot get it" - TC_RET_T=$(($TC_RET_T+1)) -@@ -112,10 +111,13 @@ if [ $? -ne 0 ];then - let "ret=$ret + 1" - fi - --do_test --if [ $? -ne 0 ];then -- let "ret=$ret + 1" --fi -+for element in ${RUNTIME_LIST[@]}; -+do -+ do_test $element -+ if [ $? -ne 0 ];then -+ let "ret=$ret + 1" -+ fi -+done - - do_post - -diff --git a/CI/test_cases/container_cases/cri_stream.sh b/CI/test_cases/container_cases/cri_stream.sh -index 6c89ab38..6124c783 100755 ---- a/CI/test_cases/container_cases/cri_stream.sh -+++ b/CI/test_cases/container_cases/cri_stream.sh -@@ -8,8 +8,9 @@ curr_path=$(dirname $(readlink -f "$0")) - data_path=$(realpath $curr_path/criconfigs) - pause_img_path=$(realpath $curr_path/test_data) - source ../helpers.sh -+export CONTAINER_RUNTIME_ENDPOINT=unix:///var/run/isulad.sock - --function set_up() -+function do_pre() - { - local ret=0 - local image="busybox" -@@ -21,7 +22,8 @@ function set_up() - cp /etc/isulad/daemon.json /etc/isulad/daemon.bak - sed -i "s#\"pod-sandbox-image\": \"\"#\"pod-sandbox-image\": \"mirrorgooglecontainers/pause-amd64:3.0\"#g" /etc/isulad/daemon.json - -- check_valgrind_log -+ # check_valgrind_log -+ stop_isulad_without_valgrind - [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to stop isulad" && return ${FAILURE} - - start_isulad_without_valgrind -@@ -36,7 +38,13 @@ function set_up() - crictl images | grep ${podimage} - [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - missing list image: ${podimage}" && ((ret++)) - -- sid=$(crictl runp ${data_path}/sandbox-config.json) -+ return ${ret} -+} -+ -+function set_up() -+{ -+ local ret=0 -+ sid=$(crictl runp --runtime $1 ${data_path}/sandbox-config.json) - [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to run sandbox" && ((ret++)) - - cid=$(crictl create $sid ${data_path}/container-config.json ${data_path}/sandbox-config.json) -@@ -135,22 +143,50 @@ function tear_down() - crictl rmp $sid - [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to rm sandbox" && ((ret++)) - -+ return ${ret} -+} -+ -+function do_post() -+{ - cp -f /etc/isulad/daemon.bak /etc/isulad/daemon.json -+ # check_valgrind_log -+ - stop_isulad_without_valgrind -- start_isulad_with_valgrind -+ start_isulad_without_valgrind -+} - -- return ${ret} -+function do_test_t() -+{ -+ local ret=0 -+ local runtime=$1 -+ local test="cri_stream_test => (${runtime})" -+ msg_info "${test} starting..." -+ -+ set_up $runtime || ((ret++)) -+ -+ test_cri_exec_fun || ((ret++)) -+ test_cri_exec_abn || ((ret++)) -+ -+ # runc attach not support -+ if [ $runtime == "lcr" ]; then -+ test_cri_attach || ((ret++)) -+ fi -+ tear_down || ((ret++)) -+ -+ msg_info "${test} finished with return ${ret}..." -+ -+ return $ret - } - - declare -i ans=0 - --set_up || ((ans++)) -- --test_cri_exec_fun || ((ans++)) --test_cri_exec_abn || ((ans++)) -+do_pre || ((ans++)) - --test_cri_attach || ((ans++)) -+for element in ${RUNTIME_LIST[@]}; -+do -+ do_test_t $element || ((ans++)) -+done - --tear_down || ((ans++)) -+do_post - - show_result ${ans} "${curr_path}/${0}" -diff --git a/CI/test_cases/container_cases/kill.sh b/CI/test_cases/container_cases/kill.sh -index b31714a7..7b50b094 100755 ---- a/CI/test_cases/container_cases/kill.sh -+++ b/CI/test_cases/container_cases/kill.sh -@@ -25,8 +25,12 @@ source ../helpers.sh - - function do_test_t() - { -+ local runtime=$1 -+ local test="kill_test => (${runtime})" -+ msg_info "${test} starting..." -+ - containername=test_kill -- isula create -t --name $containername busybox -+ isula create -t --name $containername --runtime $runtime busybox - fn_check_eq "$?" "0" "create failed" - testcontainer $containername inited - -@@ -42,14 +46,19 @@ function do_test_t() - isula rm $containername - fn_check_eq "$?" "0" "rm failed" - -+ msg_info "${test} finished with return ${TC_RET_T}..." -+ - return $TC_RET_T - } - - ret=0 - --do_test_t --if [ $? -ne 0 ];then -- let "ret=$ret + 1" --fi -+for element in ${RUNTIME_LIST[@]}; -+do -+ do_test_t $element -+ if [ $? -ne 0 ];then -+ let "ret=$ret + 1" -+ fi -+done - - show_result $ret "basic kill" -diff --git a/CI/test_cases/container_cases/log_test.sh b/CI/test_cases/container_cases/log_test.sh -index 119a005a..d13dd702 100755 ---- a/CI/test_cases/container_cases/log_test.sh -+++ b/CI/test_cases/container_cases/log_test.sh -@@ -24,10 +24,10 @@ function do_post() - - function do_check_item() - { -- cat ${ISULAD_ROOT_PATH}/engines/lcr/$1/config | grep console | grep "$2" -+ cat ${RUNTIME_ROOT_PATH}/$1/$2/config.json | grep console | grep "$3" - if [ $? -ne 0 ]; then -- cat ${ISULAD_ROOT_PATH}/engines/lcr/$1/config | grep console -- msg_err "expect $2" -+ cat ${RUNTIME_ROOT_PATH}/$1/$2/config.json | grep console -+ msg_err "expect $3" - TC_RET_T=$(($TC_RET_T+1)) - fi - } -@@ -42,16 +42,16 @@ function do_test_syslog_helper() - TC_RET_T=$(($TC_RET_T+1)) - fi - -- cid=`isula run -tid busybox sh` -+ cid=`isula run -tid --runtime $2 busybox sh` - if [ $? -ne 0 ]; then - msg_err "Failed to run container" - TC_RET_T=$(($TC_RET_T+1)) - fi - -- do_check_item ${cid} "logdriver = syslog" -+ do_check_item $2 ${cid} "driver\": \"syslog" - - if [ "x$1" != "x" ]; then -- do_check_item ${cid} "syslog_tag = $1" -+ do_check_item $2 ${cid} "tag\": \"$1" - fi - - isula rm -f ${cid} -@@ -74,91 +74,91 @@ function do_test_syslog_tag() - TC_RET_T=$(($TC_RET_T+1)) - fi - -- isula run -ti --log-opt="syslog-tag={{.xxx}}" busybox date -+ isula run -ti --log-opt="syslog-tag={{.xxx}}" --runtime $1 busybox date - if [ $? -eq 0 ]; then - msg_err "run container success with invalid syslog-tag" - TC_RET_T=$(($TC_RET_T+1)) - fi - -- isula run -ti --log-opt="syslog-tag={{" busybox date -+ isula run -ti --log-opt="syslog-tag={{" --runtime $1 busybox date - if [ $? -eq 0 ]; then - msg_err "run container success with invalid syslog-tag" - TC_RET_T=$(($TC_RET_T+1)) - fi - -- isula run -ti --log-opt="syslog-tag=aab{{cd" busybox date -+ isula run -ti --log-opt="syslog-tag=aab{{cd" --runtime $1 busybox date - if [ $? -eq 0 ]; then - msg_err "run container success with invalid syslog-tag" - TC_RET_T=$(($TC_RET_T+1)) - fi - -- cid=$(isula run -tid --log-opt="syslog-tag={{.DaemonName}}" busybox sh) -+ cid=$(isula run -tid --log-opt="syslog-tag={{.DaemonName}}" --runtime $1 busybox sh) - if [ $? -ne 0 ]; then - msg_err "Failed to run container" - TC_RET_T=$(($TC_RET_T+1)) - fi -- do_check_item ${cid} "logdriver = syslog" -- do_check_item ${cid} "syslog_tag = iSulad" -+ do_check_item $1 ${cid} "driver\": \"syslog" -+ do_check_item $1 ${cid} "tag\": \"iSulad" - -- cid=`isula run -tid --log-opt="syslog-tag={{.ID}}" busybox sh` -+ cid=`isula run -tid --log-opt="syslog-tag={{.ID}}" --runtime $1 busybox sh` - if [ $? -ne 0 ]; then - msg_err "Failed to run container" - TC_RET_T=$(($TC_RET_T+1)) - fi -- do_check_item ${cid} "logdriver = syslog" -- do_check_item ${cid} "syslog_tag = ${cid: 0: 12}" -+ do_check_item $1 ${cid} "driver\": \"syslog" -+ do_check_item $1 ${cid} "tag\": \"${cid: 0: 12}" - -- cid=`isula run -tid --name=haozi --log-opt="syslog-tag={{.ID}}xx{{.Name}}" busybox sh` -+ cid=`isula run -tid --name=haozi --log-opt="syslog-tag={{.ID}}xx{{.Name}}" --runtime $1 busybox sh` - if [ $? -ne 0 ]; then - msg_err "Failed to run container" - TC_RET_T=$(($TC_RET_T+1)) - fi -- do_check_item ${cid} "logdriver = syslog" -- do_check_item ${cid} "syslog_tag = ${cid: 0: 12}xxhaozi" -+ do_check_item $1 ${cid} "driver\": \"syslog" -+ do_check_item $1 ${cid} "tag\": \"${cid: 0: 12}xxhaozi" - isula rm -f haozi - -- cid=`isula run -tid --log-opt="syslog-tag={{.FullID}}" busybox sh` -+ cid=`isula run -tid --log-opt="syslog-tag={{.FullID}}" --runtime $1 busybox sh` - if [ $? -ne 0 ]; then - msg_err "Failed to run container" - TC_RET_T=$(($TC_RET_T+1)) - fi -- do_check_item ${cid} "logdriver = syslog" -- do_check_item ${cid} "syslog_tag = ${cid}" -+ do_check_item $1 ${cid} "driver\": \"syslog" -+ do_check_item $1 ${cid} "tag\": \"${cid}" - -- cid=`isula run -tid --name haozi --log-opt="syslog-tag={{.Name}}" busybox sh` -+ cid=`isula run -tid --name haozi --log-opt="syslog-tag={{.Name}}" --runtime $1 busybox sh` - if [ $? -ne 0 ]; then - msg_err "Failed to run container" - TC_RET_T=$(($TC_RET_T+1)) - fi -- do_check_item ${cid} "logdriver = syslog" -- do_check_item ${cid} "syslog_tag = haozi" -+ do_check_item $1 ${cid} "driver\": \"syslog" -+ do_check_item $1 ${cid} "tag\": \"haozi" - isula rm -f haozi - -- cid=`isula run -tid --name haozi --log-opt="syslog-tag=xx{{.Name}}yy" busybox sh` -+ cid=`isula run -tid --name haozi --log-opt="syslog-tag=xx{{.Name}}yy" --runtime $1 busybox sh` - if [ $? -ne 0 ]; then - msg_err "Failed to run container" - TC_RET_T=$(($TC_RET_T+1)) - fi -- do_check_item ${cid} "logdriver = syslog" -- do_check_item ${cid} "syslog_tag = xxhaoziyy" -+ do_check_item $1 ${cid} "driver\": \"syslog" -+ do_check_item $1 ${cid} "tag\": \"xxhaoziyy" - isula rm -f haozi - -- cid=`isula run -tid --log-opt="syslog-tag={{.ImageName}}" busybox sh` -+ cid=`isula run -tid --log-opt="syslog-tag={{.ImageName}}" --runtime $1 busybox sh` - if [ $? -ne 0 ]; then - msg_err "Failed to run container" - TC_RET_T=$(($TC_RET_T+1)) - fi -- do_check_item ${cid} "logdriver = syslog" -- do_check_item ${cid} "syslog_tag = busybox" -+ do_check_item $1 ${cid} "driver\": \"syslog" -+ do_check_item $1 ${cid} "tag\": \"busybox" - -- cid=`isula run -tid --log-opt="syslog-tag={{.ImageID}}" busybox sh` -+ cid=`isula run -tid --log-opt="syslog-tag={{.ImageID}}" --runtime $1 busybox sh` - if [ $? -ne 0 ]; then - msg_err "Failed to run container" - TC_RET_T=$(($TC_RET_T+1)) - fi - img_id=`isula inspect -f '{{.image.id}}' busybox` -- do_check_item ${cid} "logdriver = syslog" -- do_check_item ${cid} "syslog_tag = sha256:${img_id:0:5}" -+ do_check_item $1 ${cid} "driver\": \"syslog" -+ do_check_item $1 ${cid} "tag\": \"sha256:${img_id:0:5}" - - isula rm -f `isula ps -aq` - if [ $? -ne 0 ]; then -@@ -182,15 +182,15 @@ function do_test_json_file_helper() - file_size=$2 - fi - -- cid=`isula run -tid busybox sh` -+ cid=`isula run -tid --runtime $3 busybox sh` - if [ $? -ne 0 ]; then - msg_err "Failed to run container" - TC_RET_T=$(($TC_RET_T+1)) - fi - -- do_check_item ${cid} "logdriver = json-file" -- do_check_item ${cid} "rotate = $file_cnt" -- do_check_item ${cid} "size = $file_size" -+ do_check_item $3 ${cid} "driver\": \"json-file" -+ do_check_item $3 ${cid} "rotate\": \"$file_cnt" -+ do_check_item $3 ${cid} "size\": \"$file_size" - - isula rm -f ${cid} - if [ $? -ne 0 ]; then -@@ -207,40 +207,40 @@ function do_test_container_log() - cat /etc/isulad/daemon.json - ps aux | grep -i isulad - -- cid=`isula run -tid --log-driver=json-file busybox sh` -+ cid=`isula run -tid --log-driver=json-file --runtime $1 busybox sh` - if [ $? -ne 0 ]; then - msg_err "Failed to run container" - TC_RET_T=$(($TC_RET_T+1)) - fi -- do_check_item ${cid} "logdriver = json-file" -- do_check_item ${cid} "rotate = 7" -- do_check_item ${cid} "size = 1MB" -+ do_check_item $1 ${cid} "driver\": \"json-file" -+ do_check_item $1 ${cid} "rotate\": \"7" -+ do_check_item $1 ${cid} "size\": \"1MB" - -- cid=`isula run -tid --log-driver=json-file --log-opt="max-file=8" busybox sh` -+ cid=`isula run -tid --log-driver=json-file --log-opt="max-file=8" --runtime $1 busybox sh` - if [ $? -ne 0 ]; then - msg_err "Failed to run container" - TC_RET_T=$(($TC_RET_T+1)) - fi -- do_check_item ${cid} "logdriver = json-file" -- do_check_item ${cid} "rotate = 8" -- do_check_item ${cid} "size = 1MB" -+ do_check_item $1 ${cid} "driver\": \"json-file" -+ do_check_item $1 ${cid} "rotate\": \"8" -+ do_check_item $1 ${cid} "size\": \"1MB" - -- cid=`isula run -tid --log-driver=json-file --log-opt="max-size=128KB" busybox sh` -+ cid=`isula run -tid --log-driver=json-file --log-opt="max-size=128KB" --runtime $1 busybox sh` - if [ $? -ne 0 ]; then - msg_err "Failed to run container" - TC_RET_T=$(($TC_RET_T+1)) - fi -- do_check_item ${cid} "logdriver = json-file" -- do_check_item ${cid} "rotate = 7" -- do_check_item ${cid} "size = 128KB" -+ do_check_item $1 ${cid} "driver\": \"json-file" -+ do_check_item $1 ${cid} "rotate\": \"7" -+ do_check_item $1 ${cid} "size\": \"128KB" - -- cid=`isula run -tid --log-driver=json-file --log-opt="disable-log=true" busybox sh` -+ cid=`isula run -tid --log-driver=json-file --log-opt="disable-log=true" --runtime $1 busybox sh` - if [ $? -ne 0 ]; then - msg_err "Failed to run container" - TC_RET_T=$(($TC_RET_T+1)) - fi -- cat ${ISULAD_ROOT_PATH}/engines/lcr/${cid}/config | grep console | grep "logfile =" -- if [ $? -eq 0 ]; then -+ cat ${RUNTIME_ROOT_PATH}/$1/$cid/config.json | grep console | grep "\"log.console.file\": \"none\"" -+ if [ $? -ne 0 ]; then - msg_err "Failed to disable log" - TC_RET_T=$(($TC_RET_T+1)) - fi -@@ -250,32 +250,48 @@ function do_test_container_log() - } - - function do_test_container_syslog() { -- do_test_syslog_helper "xxxx" -+ do_test_syslog_helper "xxxx" $1 - -- do_test_syslog_tag -+ do_test_syslog_tag $1 - } - - function do_test() { -+ local runtime=$1 -+ local test="log_test => (${runtime})" -+ msg_info "${test} starting..." -+ - check_valgrind_log - start_isulad_with_valgrind --container-log-opts="syslog-tag=xxxx" - -- do_test_container_syslog -+ do_test_container_syslog $runtime - - check_valgrind_log - start_isulad_with_valgrind --container-log-driver=json-file --container-log-opts="max-size=10MB" --container-log-opts="max-file=3" -- do_test_json_file_helper "3" "10MB" -+ -+ do_test_json_file_helper "3" "10MB" $runtime - - check_valgrind_log - start_isulad_with_valgrind -- do_test_container_log --} - --ret=0 -+ do_test_container_log $runtime -+ -+ msg_info "${test} finished with return ${TC_RET_T}..." -+ -+ return $TC_RET_T -+} - - do_pre - --do_test -+ret=0 -+ -+for element in ${RUNTIME_LIST[@]}; -+do -+ do_test $element -+ if [ $? -ne 0 ];then -+ let "ret=$ret + 1" -+ fi -+done - - do_post - --show_result $TC_RET_T "container log test" -+show_result $ret "container log test" -diff --git a/CI/test_cases/container_cases/pause.sh b/CI/test_cases/container_cases/pause.sh -index fe749cd1..5778642b 100755 ---- a/CI/test_cases/container_cases/pause.sh -+++ b/CI/test_cases/container_cases/pause.sh -@@ -25,10 +25,12 @@ source ../helpers.sh - - function do_test_t() - { -- echo "Do not support pause function now" -- return 0 -+ local runtime=$1 -+ local test="rm_test => (${runtime})" -+ msg_info "${test} starting..." -+ - containername=test_pause -- isula create -t --name $containername busybox -+ isula create -t --name $containername --runtime $runtime busybox - fn_check_eq "$?" "0" "create failed" - testcontainer $containername inited - -@@ -48,14 +50,19 @@ function do_test_t() - isula rm -f $containername - fn_check_eq "$?" "0" "rm failed" - -+ msg_info "${test} finished with return ${TC_RET_T}..." -+ - return $TC_RET_T - } - - ret=0 - --do_test_t --if [ $? -ne 0 ];then -- let "ret=$ret + 1" --fi -+for element in ${RUNTIME_LIST[@]}; -+do -+ do_test_t $element -+ if [ $? -ne 0 ];then -+ let "ret=$ret + 1" -+ fi -+done - - show_result $ret "basic pause" -diff --git a/CI/test_cases/container_cases/resume.sh b/CI/test_cases/container_cases/resume.sh -index d0b6ba98..e7de41bb 100755 ---- a/CI/test_cases/container_cases/resume.sh -+++ b/CI/test_cases/container_cases/resume.sh -@@ -25,14 +25,16 @@ source ../helpers.sh - - function do_test_t() - { -- echo "Do not support resume function now" -- return 0 -+ local runtime=$1 -+ local test="kill_test => (${runtime})" -+ msg_info "${test} starting..." -+ - containername=test_resume -- isula create -t --name $containername busybox -+ isula create -t --name $containername --runtime $runtime busybox - fn_check_eq "$?" "0" "create failed" - testcontainer $containername inited - -- isula resume $containername -+ isula unpause $containername - fn_check_ne "$?" "0" "resume should fail" - testcontainer $containername inited - -@@ -45,21 +47,26 @@ function do_test_t() - - testcontainer $containername paused - -- isula resume $containername -+ isula unpause $containername - fn_check_eq "$?" "0" "resume failed" - testcontainer $containername running - - isula rm -f $containername - fn_check_eq "$?" "0" "rm failed" - -+ msg_info "${test} finished with return ${TC_RET_T}..." -+ - return $TC_RET_T - } - - ret=0 - --do_test_t --if [ $? -ne 0 ];then -- let "ret=$ret + 1" --fi -+for element in ${RUNTIME_LIST[@]}; -+do -+ do_test_t $element -+ if [ $? -ne 0 ];then -+ let "ret=$ret + 1" -+ fi -+done - - show_result $ret "basic resume" -diff --git a/CI/test_cases/container_cases/rm.sh b/CI/test_cases/container_cases/rm.sh -index 2903edab..3deae453 100755 ---- a/CI/test_cases/container_cases/rm.sh -+++ b/CI/test_cases/container_cases/rm.sh -@@ -26,7 +26,7 @@ source ../helpers.sh - function rm_stopped_container() - { - containername=test_rm_stopped -- isula create -t --name $containername busybox -+ isula create -t --name $containername --runtime $1 busybox - fn_check_eq "$?" "0" "create failed" - testcontainer $containername inited - -@@ -40,7 +40,7 @@ function rm_stopped_container() - function rm_running_container() - { - containername=test_rm_running -- isula run -td --name $containername busybox -+ isula run -td --name $containername --runtime $1 busybox - fn_check_eq "$?" "0" "run failed" - testcontainer $containername running - -@@ -61,7 +61,7 @@ function rm_running_container() - function rm_running_container_force() - { - containername=test_rm_running_force -- conID=$(isula run -td --name $containername busybox) -+ conID=$(isula run -td --name $containername --runtime $1 busybox) - fn_check_eq "$?" "0" "run failed" - testcontainer $containername running - -@@ -83,18 +83,27 @@ function rm_running_container_force() - - function do_test_t() - { -- rm_stopped_container -- rm_running_container -- rm_running_container_force -+ local runtime=$1 -+ local test="rm_test => (${runtime})" -+ msg_info "${test} starting..." -+ -+ rm_stopped_container $runtime -+ rm_running_container $runtime -+ rm_running_container_force $runtime -+ -+ msg_info "${test} finished with return ${TC_RET_T}..." - - return $TC_RET_T - } - - ret=0 - --do_test_t --if [ $? -ne 0 ];then -- let "ret=$ret + 1" --fi -+for element in ${RUNTIME_LIST[@]}; -+do -+ do_test_t $element -+ if [ $? -ne 0 ];then -+ let "ret=$ret + 1" -+ fi -+done - - show_result $ret "basic rm" -diff --git a/CI/test_cases/container_cases/start.sh b/CI/test_cases/container_cases/start.sh -index c3dc9c27..c2d0d02f 100755 ---- a/CI/test_cases/container_cases/start.sh -+++ b/CI/test_cases/container_cases/start.sh -@@ -26,7 +26,7 @@ source ../helpers.sh - function do_test_t() - { - containername=test_start -- isula create -t --name $containername busybox -+ isula create -t --name $containername --runtime $1 busybox - fn_check_eq "$?" "0" "create failed" - testcontainer $containername inited - -@@ -51,7 +51,7 @@ function do_attach_local_test_t() - local test="container start with --attach local test => (${FUNCNAME[@]})" - - containername=start_attach -- isula create -ti --name $containername busybox /bin/sh -c 'echo "hello"' -+ isula create -ti --name $containername --runtime $1 busybox /bin/sh -c 'echo "hello"' - [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to create ${containername}" && ((ret++)) - testcontainer $containername inited - -@@ -62,7 +62,7 @@ function do_attach_local_test_t() - isula rm -f $containername - [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to rm container" && ((ret++)) - -- id=`isula create -ti busybox /bin/sh -c 'ech "hello"'` -+ id=`isula create -ti --runtime $1 busybox /bin/sh -c 'ech "hello"'` - [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to create container" && ((ret++)) - - isula start -a $id -@@ -88,19 +88,19 @@ function do_attach_remote_test_t() - start_isulad_with_valgrind -H "$config" - - containername=start_attach -- isula create -ti -H "$config" --name $containername busybox /bin/sh -c 'echo "hello"' -+ isula create -ti -H "$config" --name $containername --runtime $1 busybox /bin/sh -c 'echo "hello"' - [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to create ${containername} remote" && ((ret++)) -- testcontainer $containername inited -+ testcontainer $containername inited "-H $config" - - result=`isula start -a -H "$config" $containername` - [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to start -a ${containername} remote" && ((ret++)) -- testcontainer $containername exited -+ testcontainer $containername exited "-H $config" - - isula rm -f -H "$config" $containername - [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to rm container remote" && ((ret++)) - - containername=start_exit -- isula run -it -H "$config" --name $containername busybox /bin/sh -c 'exit 5' -+ isula run -it -H "$config" --name $containername --runtime $1 busybox /bin/sh -c 'exit 5' - [[ $? -ne 5 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - invalid exit code with remote start" && ((ret++)) - - isula start -a -H "$config" $containername -@@ -119,12 +119,29 @@ function do_attach_remote_test_t() - return ${ret} - } - --declare -i ans=0 -+function test_start() -+{ -+ local ret=0 -+ local runtime=$1 -+ local test="start_test => (${runtime})" -+ msg_info "${test} starting..." -+ -+ do_test_t $runtime || ((ret++)) - --do_test_t || ((ans++)) -+ do_attach_local_test_t $runtime || ((ret++)) - --do_attach_local_test_t || ((ans++)) -+ do_attach_remote_test_t $runtime || ((ret++)) -+ -+ msg_info "${test} finished with return ${ret}..." -+ -+ return $ret -+} -+ -+declare -i ans=0 - --do_attach_remote_test_t || ((ans++)) -+for element in ${RUNTIME_LIST[@]}; -+do -+ test_start $element || ((ans++)) -+done - - show_result ${ans} "${curr_path}/${0}" -diff --git a/CI/test_cases/container_cases/stats.sh b/CI/test_cases/container_cases/stats.sh -index 705f7a7c..df241b90 100755 ---- a/CI/test_cases/container_cases/stats.sh -+++ b/CI/test_cases/container_cases/stats.sh -@@ -26,7 +26,8 @@ function test_stats_spec() - { - local ret=0 - local image="busybox" -- local test="container stats test => (${FUNCNAME[@]})" -+ local runtime=$1 -+ local test="container stats test with (${runtime}) => (${FUNCNAME[@]})" - statslog=/tmp/stats.log - - msg_info "${test} starting..." -@@ -44,11 +45,11 @@ function test_stats_spec() - [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to run container with image: ${image}" && ((ret++)) - - container_name_init=stats_inited -- id_init=`isula create -t -n $container_name_init $image /bin/sh` -+ id_init=`isula create -t -n $container_name_init --runtime $runtime $image /bin/sh` - [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to run container with image: ${image}" && ((ret++)) - - container_name_running=stats_running -- id_running=`isula run -td -n $container_name_running $image /bin/sh` -+ id_running=`isula run -td -n $container_name_running --runtime $runtime $image /bin/sh` - [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to run container with image: ${image}" && ((ret++)) - - isula stats --no-stream > $statslog -@@ -73,14 +74,14 @@ function test_stats_spec() - [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to run container with image: ${image}" && ((ret++)) - - container_name_pause=stats_paused -- id_pause=`isula run -td -n $container_name_pause $image /bin/sh` -+ id_pause=`isula run -td -n $container_name_pause --runtime $runtime $image /bin/sh` - [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to run container with image: ${image}" && ((ret++)) - - isula pause $id_pause - [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to pause running container" && ((ret++)) - - container_name_stop=stats_stopped -- id_stop=`isula run -td -n $container_name_stop $image /bin/sh` -+ id_stop=`isula run -td -n $container_name_stop --runtime $runtime $image /bin/sh` - [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to run container with image: ${image}" && ((ret++)) - - isula stop -t 0 $id_stop -@@ -129,6 +130,9 @@ function test_stats_spec() - - declare -i ans=0 - --test_stats_spec || ((ans++)) -+for element in ${RUNTIME_LIST[@]}; -+do -+ test_stats_spec $element || ((ans++)) -+done - - show_result ${ans} "${curr_path}/${0}" -diff --git a/CI/test_cases/container_cases/ulimit.sh b/CI/test_cases/container_cases/ulimit.sh -index c134a71a..29868041 100755 ---- a/CI/test_cases/container_cases/ulimit.sh -+++ b/CI/test_cases/container_cases/ulimit.sh -@@ -26,10 +26,11 @@ source ../helpers.sh - function test_ulimit() - { - local ret=0 -+ local runtime=$1 - local image="busybox" - ulimitlog=/tmp/ulimit.log - -- local test="ulimit test => (${FUNCNAME[@]})" -+ local test="ulimit test with (${runtime})=> (${FUNCNAME[@]})" - msg_info "${test} starting..." - - check_valgrind_log -@@ -38,37 +39,37 @@ function test_ulimit() - start_isulad_with_valgrind --default-ulimit nproc=2048:4096 --default-ulimit nproc=2048:8192 --default-ulimit nofile=1024:4096 - [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - start isulad failed" && ((ret++)) - -- isula run --ulimit nproc= $image /bin/sh > $ulimitlog 2>&1 -+ isula run --ulimit nproc= $image --runtime $runtime /bin/sh > $ulimitlog 2>&1 - cat $ulimitlog | grep "delimiter '=' can't be the first or the last character" - [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - check failed" && ((ret++)) - -- isula run --ulimit nproc=1024: $image /bin/sh > $ulimitlog 2>&1 -+ isula run --ulimit nproc=1024: --runtime $runtime $image /bin/sh > $ulimitlog 2>&1 - cat $ulimitlog | grep "delimiter ':' can't be the first or the last character" - [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - check failed" && ((ret++)) - -- isula run --ulimit npro=1024:2048 $image /bin/sh > $ulimitlog 2>&1 -+ isula run --ulimit npro=1024:2048 --runtime $runtime $image /bin/sh > $ulimitlog 2>&1 - cat $ulimitlog | grep "Invalid ulimit type" - [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - check failed" && ((ret++)) - -- isula run --ulimit nproc=4096:2048 $image /bin/sh > $ulimitlog 2>&1 -+ isula run --ulimit nproc=4096:2048 --runtime $runtime $image /bin/sh > $ulimitlog 2>&1 - cat $ulimitlog | grep "Ulimit soft limit must be less than or equal to hard limit" - [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - check failed" && ((ret++)) - -- isula run --ulimit nproc=2048:4096.5 $image /bin/sh > $ulimitlog 2>&1 -+ isula run --ulimit nproc=2048:4096.5 --runtime $runtime $image /bin/sh > $ulimitlog 2>&1 - cat $ulimitlog | grep "Invalid ulimit hard value" - [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - check failed" && ((ret++)) - -- isula run --ulimit nproc==2048:4096 $image /bin/sh > $ulimitlog 2>&1 -+ isula run --ulimit nproc==2048:4096 --runtime $runtime $image /bin/sh > $ulimitlog 2>&1 - cat $ulimitlog | grep "Invalid ulimit argument" - [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - check failed" && ((ret++)) - -- isula run --ulimit nproc=2048::4096 $image /bin/sh > $ulimitlog 2>&1 -+ isula run --ulimit nproc=2048::4096 --runtime $runtime $image /bin/sh > $ulimitlog 2>&1 - cat $ulimitlog | grep "Too many limit value arguments" - [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - check failed" && ((ret++)) - - container_name="ulimit_test" - -- isula run -td -n $container_name --ulimit nofile=20480:40960 --ulimit core=1024:2048 $image /bin/sh -+ isula run -td -n $container_name --ulimit nofile=20480:40960 --ulimit core=1024:2048 --runtime $runtime $image /bin/sh - [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - check failed" && ((ret++)) - - isula exec $container_name /bin/sh -c "cat /proc/self/limits" | grep "Max open files" |awk '{ print $(NF-1) }' |grep 40960 -@@ -106,6 +107,9 @@ function test_ulimit() - - declare -i ans=0 - --test_ulimit || ((ans++)) -+for element in ${RUNTIME_LIST[@]}; -+do -+ test_ulimit $element || ((ans++)) -+done - - show_result ${ans} "${curr_path}/${0}" -diff --git a/CI/test_cases/container_cases/update.sh b/CI/test_cases/container_cases/update.sh -index 1e1e9cdc..d379acc2 100755 ---- a/CI/test_cases/container_cases/update.sh -+++ b/CI/test_cases/container_cases/update.sh -@@ -26,7 +26,7 @@ source ../helpers.sh - function do_test_t() - { - containername=test_update -- containerid=`isula create -t --name $containername busybox` -+ containerid=`isula create -t --runtime $1 --name $containername busybox` - fn_check_eq "$?" "0" "create failed" - testcontainer $containername inited - -@@ -101,7 +101,24 @@ function do_test_t() - - main=$(uname -r | awk -F . '{print $1}') - minor=$(uname -r | awk -F . '{print $2}') -- if [[ ${main} -lt 5 ]] || [[ ${main} -eq 5 ]] && [[ ${minor} -lt 11 ]]; then -+ enable=1 -+ if [ $1 == "runc" ]; then -+ version=$(runc --version | grep runc) -+ # Runc does not support '--kernel-memory' options from v1.0.0-rc94 version -+ limit=(1 0 0 93) -+ array=`echo $version |egrep -o "[0-9]*"` -+ index=0 -+ for i in $(echo $array| awk '{print $1,$2}') -+ do -+ echo $i -+ if [[ $i -gt ${limit[index]} ]]; then -+ enable=0 -+ break -+ fi -+ let "index+=1" -+ done -+ fi -+ if [[ ${main} -lt 5 ]] || [[ ${main} -eq 5 ]] && [[ ${minor} -lt 11 ]] && [[ ${enable} -eq 1 ]]; then - isula update --kernel-memory 2000000000 $containername - fn_check_eq "$?" "0" "update failed" - -@@ -124,7 +141,7 @@ function do_test_t() - function do_test_t1() - { - containername=test_update1 -- containerid=`isula run -itd --memory 500M --name $containername busybox` -+ containerid=`isula run -itd --runtime $1 --memory 500M --name $containername busybox` - fn_check_eq "$?" "0" "run failed" - - isula inspect $containerid | grep "MemorySwap" | grep "1048576000" -@@ -146,16 +163,23 @@ function do_test_t1() - - ret=0 - --do_test_t --if [ $? -ne 0 ];then -- let "ret=$ret + 1" --fi -+for element in ${RUNTIME_LIST[@]}; -+do -+ test="update test => (${element})" -+ msg_info "${test} starting..." - --if [ -f "/sys/fs/cgroup/memory/memory.memsw.usage_in_bytes" ];then -- do_test_t1 -+ do_test_t $element - if [ $? -ne 0 ];then -- let "ret=$ret + 1" -+ let "ret=$ret + 1" -+ fi -+ -+ if [ -f "/sys/fs/cgroup/memory/memory.memsw.usage_in_bytes" ];then -+ do_test_t1 $element -+ if [ $? -ne 0 ];then -+ let "ret=$ret + 1" -+ fi - fi --fi -+ msg_info "${test} finished with return ${ret}..." -+done - - show_result $ret "basic update" -diff --git a/CI/test_cases/helpers.sh b/CI/test_cases/helpers.sh -index 5ea4ff94..6b4eea24 100755 ---- a/CI/test_cases/helpers.sh -+++ b/CI/test_cases/helpers.sh -@@ -21,11 +21,14 @@ declare -a lines - - # Root directory of integration tests. - LCR_ROOT_PATH="/var/lib/isulad/engines/lcr" -+RUNTIME_ROOT_PATH="/var/lib/isulad/engines" - valgrind_log="/tmp/valgrind.log" - ISUALD_LOG="/var/lib/isulad/isulad.log" - ISULAD_ROOT_PATH="/var/lib/isulad" - ISULAD_RUN_ROOT_PATH="/var/run/isulad" - -+RUNTIME_LIST=(lcr runc) -+ - enable_native_network=0 - - declare -r -i FAILURE=1 -@@ -60,7 +63,7 @@ function fn_check_ne() { - } - - function testcontainer() { -- st=`isula inspect -f '{{json .State.Status}}' "$1"` -+ st=`isula inspect -f '{{json .State.Status}}' $3 "$1"` - if ! [[ "${st}" =~ "$2" ]];then - echo "expect status $2, but get ${st}" - TC_RET_T=$(($TC_RET_T+1)) --- -2.25.1 - diff --git a/0053-bugfix-when-refresh-can-t-load-or-pull-images.patch b/0053-bugfix-when-refresh-can-t-load-or-pull-images.patch deleted file mode 100644 index da4bffe..0000000 --- a/0053-bugfix-when-refresh-can-t-load-or-pull-images.patch +++ /dev/null @@ -1,319 +0,0 @@ -From 9d6df0b3065867d5ca1a597bedb10eab5a1c9235 Mon Sep 17 00:00:00 2001 -From: "Neil.wrz" -Date: Mon, 20 Mar 2023 23:47:25 -0700 -Subject: [PATCH 53/53] bugfix when refresh can't load or pull images - -Signed-off-by: Neil.wrz ---- - src/daemon/modules/image/oci/oci_image.c | 105 +++++++++++++++++- - .../remote_layer_support/remote_support.c | 34 +++++- - .../remote_layer_support/remote_support.h | 4 +- - .../modules/image/oci/storage/storage.c | 2 +- - .../modules/image/oci/storage/storage.h | 2 + - 5 files changed, 143 insertions(+), 4 deletions(-) - -diff --git a/src/daemon/modules/image/oci/oci_image.c b/src/daemon/modules/image/oci/oci_image.c -index fa92a861..40e9a88f 100644 ---- a/src/daemon/modules/image/oci/oci_image.c -+++ b/src/daemon/modules/image/oci/oci_image.c -@@ -44,6 +44,39 @@ - - struct oci_image_module_data g_oci_image_module_data = { 0 }; - -+#ifdef ENABLE_REMOTE_LAYER_STORE -+// intend to make remote refresh and oci ops exlusive -+static bool g_enable_remote; -+static pthread_rwlock_t g_remote_lock = PTHREAD_RWLOCK_INITIALIZER; -+ -+static inline bool oci_remote_lock(pthread_rwlock_t *remote_lock, bool writable) -+{ -+ int nret = 0; -+ -+ if (writable) { -+ nret = pthread_rwlock_wrlock(remote_lock); -+ } else { -+ nret = pthread_rwlock_rdlock(remote_lock); -+ } -+ if (nret != 0) { -+ ERROR("Lock memory store failed: %s", strerror(nret)); -+ return false; -+ } -+ -+ return true; -+} -+ -+static inline void oci_remote_unlock(pthread_rwlock_t *remote_lock) -+{ -+ int nret = 0; -+ -+ nret = pthread_rwlock_unlock(remote_lock); -+ if (nret != 0) { -+ FATAL("Unlock memory store failed: %s", strerror(nret)); -+ } -+} -+#endif -+ - static void free_oci_image_data(void) - { - free(g_oci_image_module_data.root_dir); -@@ -220,6 +253,7 @@ static int storage_module_init_helper(const isulad_daemon_configs *args) - - #ifdef ENABLE_REMOTE_LAYER_STORE - storage_opts->enable_remote_layer = args->storage_enable_remote_layer; -+ storage_opts->remote_lock = &g_remote_lock; - #endif - - if (util_dup_array_of_strings((const char **)args->storage_opts, args->storage_opts_len, &storage_opts->driver_opts, -@@ -303,6 +337,10 @@ int oci_init(const isulad_daemon_configs *args) - goto out; - } - -+#ifdef ENABLE_REMOTE_LAYER_STORE -+ g_enable_remote = args->storage_enable_remote_layer; -+#endif -+ - if (storage_module_init_helper(args) != 0) { - ret = -1; - goto out; -@@ -321,6 +359,7 @@ void oci_exit() - - int oci_pull_rf(const im_pull_request *request, im_pull_response *response) - { -+ int ret = 0; - if (request == NULL || request->image == NULL || response == NULL) { - ERROR("Invalid NULL param"); - return -1; -@@ -331,8 +370,24 @@ int oci_pull_rf(const im_pull_request *request, im_pull_response *response) - isulad_try_set_error_message("Invalid image name: %s", request->image); - return -1; - } -+#ifdef ENABLE_REMOTE_LAYER_STORE -+ // read lock here because pull have exclusive access against remote refresh -+ // pull can work concurrently with other oci operations. -+ if (g_enable_remote && !oci_remote_lock(&g_remote_lock, false)) { -+ ERROR("Failed to lock oci remote lock when load image"); -+ return -1; -+ } -+#endif -+ -+ ret = oci_do_pull_image(request, response); -+ -+#ifdef ENABLE_REMOTE_LAYER_STORE -+ if (g_enable_remote) { -+ oci_remote_unlock(&g_remote_lock); -+ } -+#endif - -- return oci_do_pull_image(request, response); -+ return ret; - } - - int oci_prepare_rf(const im_prepare_request *request, char **real_rootfs) -@@ -441,6 +496,15 @@ int oci_rmi(const im_rmi_request *request) - return -1; - } - -+#ifdef ENABLE_REMOTE_LAYER_STORE -+ // read lock here because load have exclusive access against remote refresh -+ // load can work concurrently with other oci operations. -+ if (g_enable_remote && !oci_remote_lock(&g_remote_lock, false)) { -+ ERROR("Failed to lock oci remote lock when load image"); -+ return -1; -+ } -+#endif -+ - if (!util_valid_image_name(request->image.image)) { - ERROR("Invalid image name: %s", request->image.image); - isulad_try_set_error_message("Invalid image name: %s", request->image.image); -@@ -502,6 +566,11 @@ int oci_rmi(const im_rmi_request *request) - } - - out: -+#ifdef ENABLE_REMOTE_LAYER_STORE -+ if (g_enable_remote) { -+ oci_remote_unlock(&g_remote_lock); -+ } -+#endif - free(real_image_name); - free(image_ID); - util_free_array_by_len(image_names, image_names_len); -@@ -527,7 +596,24 @@ int oci_import(const im_import_request *request, char **id) - goto err_out; - } - -+#ifdef ENABLE_REMOTE_LAYER_STORE -+ // read lock here because import have exclusive access against remote refresh -+ // import can work concurrently with other oci operations. -+ if (g_enable_remote && !oci_remote_lock(&g_remote_lock, false)) { -+ ERROR("Failed to lock oci remote lock when load image"); -+ ret = -1; -+ goto err_out; -+ } -+#endif -+ - ret = oci_do_import(request->file, dest_name, id); -+ -+#ifdef ENABLE_REMOTE_LAYER_STORE -+ if (g_enable_remote) { -+ oci_remote_unlock(&g_remote_lock); -+ } -+#endif -+ - if (ret != 0) { - goto err_out; - } -@@ -677,7 +763,24 @@ int oci_load_image(const im_load_request *request) - goto out; - } - -+#ifdef ENABLE_REMOTE_LAYER_STORE -+ // read lock here because load have exclusive access against remote refresh -+ // load can work concurrently with other oci operations. -+ if (g_enable_remote && !oci_remote_lock(&g_remote_lock, false)) { -+ ERROR("Failed to lock oci remote lock when load image"); -+ ret = -1; -+ goto out; -+ } -+#endif -+ - ret = oci_do_load(request); -+ -+#ifdef ENABLE_REMOTE_LAYER_STORE -+ if (g_enable_remote) { -+ oci_remote_unlock(&g_remote_lock); -+ } -+#endif -+ - if (ret != 0) { - ERROR("Failed to load image"); - goto out; -diff --git a/src/daemon/modules/image/oci/storage/remote_layer_support/remote_support.c b/src/daemon/modules/image/oci/storage/remote_layer_support/remote_support.c -index 3c7d0f54..7d457755 100644 ---- a/src/daemon/modules/image/oci/storage/remote_layer_support/remote_support.c -+++ b/src/daemon/modules/image/oci/storage/remote_layer_support/remote_support.c -@@ -24,10 +24,38 @@ struct supporters { - struct remote_image_data *image_data; - struct remote_layer_data *layer_data; - struct remote_overlay_data *overlay_data; -+ pthread_rwlock_t *remote_lock; - }; - - static struct supporters supporters; - -+static inline bool remote_refresh_lock(pthread_rwlock_t *remote_lock, bool writable) -+{ -+ int nret = 0; -+ -+ if (writable) { -+ nret = pthread_rwlock_wrlock(remote_lock); -+ } else { -+ nret = pthread_rwlock_rdlock(remote_lock); -+ } -+ if (nret != 0) { -+ ERROR("Lock memory store failed: %s", strerror(nret)); -+ return false; -+ } -+ -+ return true; -+} -+ -+static inline void remote_refresh_unlock(pthread_rwlock_t *remote_lock) -+{ -+ int nret = 0; -+ -+ nret = pthread_rwlock_unlock(remote_lock); -+ if (nret != 0) { -+ FATAL("Unlock memory store failed: %s", strerror(nret)); -+ } -+} -+ - static void *remote_refresh_ro_symbol_link(void *arg) - { - struct supporters *refresh_supporters = (struct supporters *)arg; -@@ -37,16 +65,18 @@ static void *remote_refresh_ro_symbol_link(void *arg) - util_usleep_nointerupt(5 * 1000 * 1000); - DEBUG("remote refresh start\n"); - -+ remote_refresh_lock(supporters.remote_lock, true); - remote_overlay_refresh(refresh_supporters->overlay_data); - remote_layer_refresh(refresh_supporters->layer_data); - remote_image_refresh(refresh_supporters->image_data); -+ remote_refresh_unlock(supporters.remote_lock); - - DEBUG("remote refresh end\n"); - } - return NULL; - } - --int remote_start_refresh_thread(void) -+int remote_start_refresh_thread(pthread_rwlock_t *remote_lock) - { - int res = 0; - pthread_t a_thread; -@@ -67,6 +97,8 @@ int remote_start_refresh_thread(void) - goto free_out; - } - -+ supporters.remote_lock = remote_lock; -+ - res = pthread_create(&a_thread, NULL, remote_refresh_ro_symbol_link, (void *)&supporters); - if (res != 0) { - CRIT("Thread creation failed"); -diff --git a/src/daemon/modules/image/oci/storage/remote_layer_support/remote_support.h b/src/daemon/modules/image/oci/storage/remote_layer_support/remote_support.h -index 892a9155..30e3ebb0 100644 ---- a/src/daemon/modules/image/oci/storage/remote_layer_support/remote_support.h -+++ b/src/daemon/modules/image/oci/storage/remote_layer_support/remote_support.h -@@ -16,6 +16,8 @@ - #ifndef DAEMON_MODULES_IMAGE_OCI_STORAGE_LAYER_STORE_REMOTE_LAYER_SUPPORT_REMOTE_SUPPORT_H - #define DAEMON_MODULES_IMAGE_OCI_STORAGE_LAYER_STORE_REMOTE_LAYER_SUPPORT_REMOTE_SUPPORT_H - -+#include -+ - #include "linked_list.h" - #include "map.h" - #include "ro_symlink_maintain.h" -@@ -64,7 +66,7 @@ void remote_overlay_refresh(struct remote_overlay_data *data); - bool remote_overlay_layer_valid(const char *layer_id); - - // start refresh remote --int remote_start_refresh_thread(void); -+int remote_start_refresh_thread(pthread_rwlock_t *remote_lock); - - // extra map utils - char **remote_deleted_layers(const map_t *old, const map_t *new_l); -diff --git a/src/daemon/modules/image/oci/storage/storage.c b/src/daemon/modules/image/oci/storage/storage.c -index f9830ac3..836ccf4d 100644 ---- a/src/daemon/modules/image/oci/storage/storage.c -+++ b/src/daemon/modules/image/oci/storage/storage.c -@@ -1874,7 +1874,7 @@ int storage_module_init(struct storage_module_init_options *opts) - } - - #ifdef ENABLE_REMOTE_LAYER_STORE -- if (opts->enable_remote_layer && remote_start_refresh_thread() != 0) { -+ if (opts->enable_remote_layer && remote_start_refresh_thread(opts->remote_lock) != 0) { - ERROR("Failed to start remote refresh thread"); - } - #endif -diff --git a/src/daemon/modules/image/oci/storage/storage.h b/src/daemon/modules/image/oci/storage/storage.h -index 7404ee54..df9fd761 100644 ---- a/src/daemon/modules/image/oci/storage/storage.h -+++ b/src/daemon/modules/image/oci/storage/storage.h -@@ -18,6 +18,7 @@ - #include - #include - #include -+#include - #include - #include - -@@ -72,6 +73,7 @@ struct storage_module_init_options { - bool integration_check; - #ifdef ENABLE_REMOTE_LAYER_STORE - bool enable_remote_layer; -+ pthread_rwlock_t *remote_lock; - #endif - }; - --- -2.25.1 - diff --git a/iSulad.spec b/iSulad.spec index 8779b85..8a78bc3 100644 --- a/iSulad.spec +++ b/iSulad.spec @@ -1,5 +1,5 @@ -%global _version 2.1.1 -%global _release 6 +%global _version 2.1.2 +%global _release 1 %global is_systemd 1 %global enable_shimv2 1 %global is_embedded 1 @@ -13,60 +13,6 @@ URL: https://gitee.com/openeuler/iSulad Source: https://gitee.com/openeuler/iSulad/repository/archive/v%{version}.tar.gz BuildRoot: {_tmppath}/iSulad-%{version} -Patch0001: 0001-modify-dependence-from-lcr-to-libisula.patch -Patch0002: 0002-Add-unified-memory_swap_limit_in_bytes-fields-into-C.patch -Patch0003: 0003-Add-macro-for-protoc-cmake.patch -Patch0004: 0004-fix-design-typo.patch -Patch0005: 0005-fix-cpu-rt-review-comments.patch -Patch0006: 0006-fix-inspect.sh-failed.patch -Patch0007: 0007-add-CRI-ContainerStats-Service.patch -Patch0008: 0008-fix-isula-cpu-rt-CI.patch -Patch0009: 0009-fix-cpu-rt-CI.patch -Patch0010: 0010-fix-cpu-rt-CI.patch -Patch0011: 0011-Bugfix-in-config-and-executor.patch -Patch0012: 0012-fix-cpu-rt-disable-after-reboot-machine.patch -Patch0013: 0013-fix-selinux_label_ut-timeout-and-add-timeout-for-all.patch -Patch0014: 0014-add-retry-for-read-write.patch -Patch0015: 0015-support-pull-image-with-digest.patch -Patch0016: 0016-isulad-shim-support-execSync-with-timeout.patch -Patch0017: 0017-Refine-the-commit-info.patch -Patch0018: 0018-Refine-typo-of-word-container.patch -Patch0019: 0019-cleancode-for-read-write.patch -Patch0020: 0020-add-crictl-timeout-and-sync-for-CI.patch -Patch0021: 0021-unlock-m_podsLock-if-new-failed.patch -Patch0022: 0022-Update-CRI.patch -Patch0023: 0023-add-cgroup-cpu-ut.patch -Patch0024: 0024-remove-temp-variables.patch -Patch0025: 0025-fix-read-member-error-from-struct.patch -Patch0026: 0026-Fix-PR-runc.patch -Patch0027: 0027-allow-the-paused-container-to-be-stopped.patch -Patch0028: 0028-Refine.patch -Patch0029: 0029-support-isula-update-when-runtime-is-runc.patch -Patch0030: 0030-Refine-as-others-feedback.patch -Patch0031: 0031-fix-CRI-SetupPod-and-TearDownPod-deadlock.patch -Patch0032: 0032-remote-layer-store-demo.patch -Patch0033: 0033-add-ci-for-remote-ro.patch -Patch0034: 0034-change-sleep-to-usleep-to-avoid-lossing-of-accuracy.patch -Patch0035: 0035-fix-compile-error-when-not-enable-remote-ro.patch -Patch0036: 0036-adapt-to-repo-of-openeuler-url-changed.patch -Patch0037: 0037-change-goto-branch.patch -Patch0038: 0038-CI-not-enable-remote-ro-for-ut.patch -Patch0039: 0039-use-auto-free-to-proc_t.patch -Patch0040: 0040-modifying-cpurt-file-permissions.patch -Patch0041: 0041-use-CURLOPT_XFERINFOFUNCTION-instead-of-deprecated-C.patch -Patch0042: 0042-bugfix-remote-ro-try-add-or-remove-image-layer-twice.patch -Patch0043: 0043-bugfix-can-t-delete-layers-under-dir-overlay-layers.patch -Patch0044: 0044-doc-add-document-about-support-remote-ro-directory.patch -Patch0045: 0045-Refine-a-minor-log-message.patch -Patch0046: 0046-modify-the-return-value-of-the-util_waitpid_with_tim.patch -Patch0047: 0047-fix-util_getgrent_r-overflow.patch -Patch0048: 0048-add-ut-for-runc.patch -Patch0049: 0049-add-runc-doc.patch -Patch0050: 0050-fix-isula_rt_ops_ut-bugs.patch -Patch0051: 0051-refactor-remote-ro-code.patch -Patch0052: 0052-add-ci-for-runc.patch -Patch0053: 0053-bugfix-when-refresh-can-t-load-or-pull-images.patch - %ifarch x86_64 aarch64 Provides: libhttpclient.so()(64bit) Provides: libisula_client.so()(64bit) @@ -133,15 +79,15 @@ mkdir -p build cd build %if 0%{?enable_shimv2} %if %{defined openeuler} -%cmake -DDEBUG=ON -DCMAKE_SKIP_RPATH=TRUE -DLIB_INSTALL_DIR=%{_libdir} -DCMAKE_INSTALL_PREFIX=/usr -DENABLE_SHIM_V2=ON -DENABLE_UT=ON ../ +%cmake -DDEBUG=ON -DCMAKE_SKIP_RPATH=TRUE -DLIB_INSTALL_DIR=%{_libdir} -DCMAKE_INSTALL_PREFIX=/usr -DENABLE_SHIM_V2=ON -DENABLE_UT=ON -DENABLE_GRPC_REMOTE_ACCESS=ON ../ %else -%cmake -DDEBUG=ON -DCMAKE_SKIP_RPATH=TRUE -DLIB_INSTALL_DIR=%{_libdir} -DCMAKE_INSTALL_PREFIX=/usr -DENABLE_SHIM_V2=ON ../ +%cmake -DDEBUG=ON -DCMAKE_SKIP_RPATH=TRUE -DLIB_INSTALL_DIR=%{_libdir} -DCMAKE_INSTALL_PREFIX=/usr -DENABLE_SHIM_V2=ON -DENABLE_GRPC_REMOTE_ACCESS=ON ../ %endif %else %if %{defined openeuler} -%cmake -DDEBUG=ON -DCMAKE_SKIP_RPATH=TRUE -DLIB_INSTALL_DIR=%{_libdir} -DCMAKE_INSTALL_PREFIX=/usr -DENABLE_UT=ON ../ +%cmake -DDEBUG=ON -DCMAKE_SKIP_RPATH=TRUE -DLIB_INSTALL_DIR=%{_libdir} -DCMAKE_INSTALL_PREFIX=/usr -DENABLE_UT=ON -DENABLE_GRPC_REMOTE_ACCESS=ON ../ %else -%cmake -DDEBUG=ON -DCMAKE_SKIP_RPATH=TRUE -DLIB_INSTALL_DIR=%{_libdir} -DCMAKE_INSTALL_PREFIX=/usr ../ +%cmake -DDEBUG=ON -DCMAKE_SKIP_RPATH=TRUE -DLIB_INSTALL_DIR=%{_libdir} -DCMAKE_INSTALL_PREFIX=/usr -DENABLE_GRPC_REMOTE_ACCESS=ON ../ %endif %endif %make_build @@ -308,6 +254,12 @@ fi %endif %changelog +* Thu May 11 2023 zhangxiaoyu - 2.1.2-1 +- Type: bugfix +- ID: NA +- SUG: NA +- DESC: update from upstream to update cri + * Fri Mar 24 2023 wangrunze - 2.1.1-6 - Type: bugfix - ID: NA diff --git a/v2.1.1.tar.gz b/v2.1.2.tar.gz similarity index 59% rename from v2.1.1.tar.gz rename to v2.1.2.tar.gz index dac52fb43fac0a8e289b0ba870a5150bc53337fc..05d616b6729e2cabb9fc113c82dc61c0b44fda38 100644 GIT binary patch delta 9360603 zcmV(}K+wO_mW2hs;E)B791`ipQL3gC2}(FqBuh|sT-)V9kuDy8lHBy}LniIz$25|h ze{s+50wf5Mk{!#6?;>O(0ngj+KJN>x?CSfij!kxSyVb?IiM{7e|H{C%yu8eR!~dytB@giI;!-a6T<0mwW#S5`uX`}0M~HtM-AVZ5;{K0ZOF3kaUJpC| z+O+nEJZse14tYWodz}n^Hd~ zXXRY_>5ReRVP$1$cKpMABL4H)eEzwmr!$@L>l+^bt&US@`v7#Yv+n7}F2iuJKo*HZu@U%I9~USE0IM!^6}5Gn;t7%x2A}hE z-vZDWjY19G#by=n*_ML=SHW#xpkQQAcT9l!UJ#NuJ>3GrPEk~|p{$EAHJj|gkAl|; zII8AU@xEVw0jWa)f}#!+>0wwJt+iwGnxG%aWD5b1;S*1FEZ@>?>mFmDI)c_Ep1*Dr zV;2Yt8cf#4f+kvaL{tQeRP-HepF~&=9D}PaL02VCoJ?(NzV732^;0B-A9zl4;ErZEPI?@{I)=1_w*uQ| zcE+0T!N_#VpiSI!ZCLHNXWhaywQf0e@YkUugvJTMBkMYM^GzlY)?-6^b{sdZaf?fg?nKYb42(7}@s0;HM2iJC9F2>fG5T$X~OaQl? zNkV0RAAUI8HAfhs@S^S;-6T+fhY?J5OjsG$R&4p2Yg<0|nu!&SPz`Jl&zyott~cfa zU@qMo@EibPM?+7E6NED0H7qZd#@f?sJV1 z`IZy#RV7ibo6T~gnH7urVI2~(OJJ`)t`p1g*+jx>GQ?U`-?4F-_bU-l*$3NMj7+zG z3xQ8c5YvVq204r5kgja)4>d5V8r<6;A2#(}?4Y(sdaLk+P{;C7$HOj?x}eaDCQE7< z-TvY2RpF+0?_LF)wywb6VB$2o!zI0npxmN4x-gV-=km#N?p(PnU%j+| zkc8&%Wak&=M$#Y~!>_=xUP*x_6yV%{(hZMLma>2vvgIx|TQ;b+6^U+9y^ZH*lnK{6ERPx1;5#alB0WmtsQAZ$mXi%pmp4_Aji$m$6$(MhLHV{ zuqI)`nPP_iC)N<=aMf|Jmtv_ss!Sg7i9u`@9nfllPYWy?A)yQg*O)|}QGgL*ff<3X zX^0g0XI$*0<1?S1r^pLzsGW6x?C7>X5ZP+j*1;k&V<;iHYp zZRl{4O{B(pDB;9oux$#{nbyIMOi<+M44m5^^;#org>)=Kx2wdTp4cJ~{zTbdM#ahS-VXDIe zg-i3hkaNa$8rIs$Za*91Rj0rj(gc^vwj4fWA6B`>%jb|_XsDTEtIjbf?Ug_my$5WF zMp#gpsWaXkxMk+CE9%qJM*g!ez0#cVcd|CPmT=KTH78C(}HqT8irI%=B` zYs%6^Vq$3M`WD{13oQZA-0bQ;f-FTD4QV6cHVASX+Ur_I7wvd|P#U@jG9Vg|00pct zzL<(J6JDYKis*nsWk8pq7zg_c=%(eEWREUD{=32jhQqvw1fv0)70brnF|tj|=Fzg`6Q(Hx()F)U5^s~_qtNC`UEN9r1;N4ZAixdN`C1){?Fiou=wl! ze>(W{{euT@J-q*a&ptT%x7Q9oxc~6?Kl$tZw?r&) zzd8E(&ko=D_b)zw|M0bs4<5Y!<@=u={pO>CpZ(M9yw-v2<3T?ni@t@BpzyIelOXv0fOfD8w zB~1BC5GcAL${LvMJ58ig%HIh9i0z_T;WxT$2bW4o2(1SlRJQinZ58jKGS*?cjX8$x z)mf=83Tgm?^zj7OJV*OuE*8f~KlRuCDv$%MT<`q{&(ZP@Z^zgN} ztx@2A@%cxGZ-099pPwDP`vwntQKbQV@VhtJ^Wm>WJ~{gNr-%1{FPaDj5*-87@56V0 z#7Tbf;lYCs4j%ma@HhV@Sblo={s-^?yu;uQ(V}bMoyXDJfB52m-Uti-AOG>;$CLgD z9z@FKvgh%C2G>qt*=Fjh><)~SY+{$fPxc00@3|>)8puq^eQH4YPHof+&CS$CqgmL{ zQXBjycOS{Nb^_nBX)4^Sx7d?l2^4>pVYPfH=PfAU`gwSt;WZxrMfGVM0c7#;xaa>C zbLa1W&*GY}KQ!RG(3L|JO9u4egg*Hg$LIfCE|Z^l|FgW3&7bH0Gq^6E&ILW11baMp z;IXf$=(2GIZ3g-twqTcLbRA-oj)f^u$P1|An=;B}vd_!x&>7+!6otnNOgVpb5lP54 zJY-wofb6J5;F#D$eix%Ha8?J^wF&}<<%G9LfDC{I6a$4t5hZPZkG(3^4R*AM?LvLR znPIcpqx=Q2K^&7GNTX~^J6mv1A0V>BJ{uw(nA`y)kCP(ZU***7>iWLBnoft)mJLD; zTP9vdHk>qP0-hYFZf>d?(rSO@=FLJwL2zGh)NZIHrG#o#RH&l4f(Fnzv|i9uZ2{d> zo13-mCIae4q1sdx4b{p(cMDxttEB~`0A6Vz<)wN<(E!)rgQ&1=Qx!m~)naA4q*gc3 zItZ!Ony8{~sZAKIS%b%_q*lufKr35HwYh+{ltytAhAFJ86}5Q_#G!w(+C*jeT|o6h zqp23RD+Mt|eY;VwX^PO8hVg_hQJZ+E2mK^6G3e2zGWV44#a=nABGTtyG`MCmEW2?t0LZQAxYxDCEe?Ar)jw!*&nRks%kN~>DfQjpX}axBp!Ih9J48?~(q zBIB>F$jfr}8t8GWpn@Z)Rq(EgRR)ct?+DE=U;AE{$2Yin@4J7gRAak}AkYb#bJ&p< z7ResECiDO1(05T9`$ifEw+T~yW+_mKpt}PV-J!W zvBPws2uMA4BF&3We*a!VwZnnLeFAF)-q_mj0c=bcj7AcFw-+vgfOk_mt}(+H-blu` zzbziRg!+Fh>OyCE#kPDr#^rV*B)^U0!f&U7Q}}lr9f6oZLkUFuE^a%K`S@*|YbTtg zYndeU_P%a+Jj)5a7U$X&%-0EJ+6L(lHKkLCT=CHFuhEl<@OU3BCXf{gs)S)(zi&1b*-X%Q#jkQ%eqgAX`%j!mpy$e}O2hy1L=)-?I6;t_5xB?wOvA2E*TY*VIWYE2yp<`6(vIg~Dzcbk&HGoU^9pa@gRB6s-`Fa7OiZA%^%m2!OA^f2;_ed zB<+XY10<`z4{y2dZO9=*9r4dOtVK&x&yZMcz=4guG?&F*_Kt*bP+Slzc2Fykw8PHs zI0|Ewav3?3mnuz7^7YP4xRAnXo3wwg-xji^yqslk82~JI?j;5eks(x0LzCgN2F7KO zXlDF(qz*x8nBPqlboK?P&)) zGK60Q8ik&KaI;A-qf3_^5Mo@3gJ)ZF==QMT!BhnB6DHwslv4;FKBq+daM%gc3Lq|A z%F5ZLlWq_z0ojw95Ho*b#V4DUDBllGSYSHY+2uJte%E)OL5snxrdSN1Pt#%`o&|)Q zU7l{L5k5q?>^TWk zMX?m_tjCzxrowB7uk}K6??RI|27wumJqkZ5A?3zqv))?YR-u2H*ES0crL;zz5u&7O zh4qTk(zFVL!(>jy&zQv}SNCA|_-wgaY+~cy7DGHGhl`B>;r~2%Rnp}qC=#|PmMet~ zZEa4v=@1Ef9`WYl6w}a;loIyvPPiw2wv074wTa{~LY-`|EHg}wpZLmWW+SHLh|wt0 zB9zqJWL2F;^mu<^3O5jtm77|NeT3n!*>h{PY7DN{Z!8N4+vbf?|3Iy`%C)*S1FhAH z*R`b?$VQ>Mq0Hhe6t|QasEWG2ePgXwF3&(J$0L<$a~8hboHd>1Wa|*Bl3=^4 zzQk8LgLm}3V+H}F!Ry6BadYN^Z)%0&B(9=XueX|t)+~S2>sqUHt6JDnr;vr8)_4|f zs@2wp(p1ZZQmHXzt=pOcbk$NtDYbq8+M1!LxHw4b*;&?a7Mg5EGi4Mj>TGK;0!?Y$ zP#VV&M9V*cWGHBsa$-a+<)vo5R+(bxG2*&f-8g|HT3!_@+o=?`4m&`U?(`tqpRHWU zCzjY{FwlRg7qk5~3O`6eXLN1KtCkKS9UHT;r7^-|TOdAHK_@wZZA-5B)9FX(o&;;X zk-e6GUMgGrQa$`q5;kOyEJBP9_6q+t>@gX2)0BD^Wq&s&4Gj(|cqOpdK0Yo?)CI|X zlnyT5y0P@B32#1~K8=0U@Qkk2$EWDcD7@lM9l?J_z8ygxs~rd@JM#0G+!6XTeLfn1 zHwE|hMN<%tBjx4AL;y^kkDwbTnC?$8p1`q&e=l!JeccXl+=pTV#k^(+4V|aBRk*J3 znxfs(n#xxAK3`SFy(nUv?o4CYF`tSsBiFi7t88y6=r)>TA3oA;nigM7=g{3$ajS%G zi#LD&bjNbiY<+Wg&kth$|G$nq|JTMQ@$@GjKl}$xYn!)}d^!ur!4S02b0dd{83KQWQoS*JT+8NGWa#JQtYBsT9D^4)sHn1I zG_bkw{+GQ!Z)_XM5eLxs@Ay-&8D*SwM+YSzi8Jb%Op@;LZ_-I#;@;iacAi2@l+Cdu zszu7N+oS#L4?rC(-lRmyazgHGM<(k)p-?CQg#yfp9A9FFN`I!BKxo zxJgCszqjH58V|S;;tR!xP;olMFVe|rN7i1^;jr)j^bgXNzu95BE8Ad4D?#rz#WbgU zP%W)$tEA4UFHq4BwI~F188}YJ{g&tU%Oq||0?_6lJ>tZ^MBhh_kY`U^cmW(tba@1|79Hi2<3x4)dKk6^Z$nn z=`RfJ`>mk;4-IZ7|J!}x+Gg`3MrgY*Z6>gfU}JPatYsS#I+{2C04d0x44r1}Be!(ouRC~>)DF6vz@hwx*E=6{Zuq`TJiQ20x#wFh%Wt{te z^8#VJldw4tqyqV zbqQ6^uvHk^3t4jId-Xn+KT>W*4!ro`2mh68eJ=z%1Vc&C7nf!fx!p5vFAy z6TTfeU<=!k>zG}y89P@NDb1B}qPi$rSvx9gM`i7}3u^}&I*^@J9&5#)i2a9%q2XSX z*hhN&zrA+rpc9Gz**br$;(u=9dGMWFKILi6#ce^Y6k8C_HBy;_z7ccKIYNWOF-@*N|$1nwNZ`tbwa&3yC0kmA_yD7A&?;xD<#RZCKC{*_4G4?LHf-?FJ zszrSORB1wmiyE5ECv{QIrG{iJ{1ID+uEPY1V$|QR-t@-PrfiH}>N{`#=VkBByO;k2 zN#g^`rOY4&g`t1v=IENNN0-g9GoN@p{28k8k9QwWc*{_@$I1a9`p!RJzkcsG__6om z&GCP|?hz8GxU}fGtXaIY^zy~W*S!}XKOX=57Dq-nTS$<5CgtPPccd919{GHVda@WH z1GJ>e?%QAAyxG|qI|C4wP-FUi4t#m&?x5TU3Jl0y{?C8W4wv?z@gQuA-uI{vJoqr5 zFeXSwzArXjk`ilcU=7Xr$U~m;nwbWP6{22CzIfceImdWiI6xO0L?+0?q5ys4;>KMO zCDsc{3Pp9EP(#oLvciTcQtSX`FjXQ*geGu-0p*pHug-lVYHuJia@SVt=T768j zKHx}+G&y?0!gC-7c$1Voi(!RAX#@OMdY4ZGuA5a8&3J#k7(&#TlC-MOJ59szVIY1-k=*G3(NJ}=h#29P6 zZ_`-c0*wJZO=$Dxi!D-bz;Se`$>$^C^@eavUjQq8+Aa9pf*NK|rj8RC54Bi_^`$&7 zXlZ{in~#De6H|3cuxRbL^FAgejevN8AR@)gO-Q4+kd?|8ey2m!pRtAO5lX_!H3n-*oNAKew?Rb9U}_Kc8D3tOc#^ zXyc>N(d6j-$UYhzfudOlP5qox-q90IWk-Kc0`zh8M48*8CvtkI{N>RTg1=tZbm;c; zjy*)Lt-osDb+wlENqdeHFyWA&fYfDAC=pzv(I6P1fOQRQ#(*C~d&jymN6gTG?IG~` z&d!$$WMP;k6n(o06NGNPX5dYFsW;Zg{}GGtvD7jdr|H&i+Y9JI{Q0PM%YQbTT2p^p zJce)Xg+25%fatm3;^;qe?TID@GvY1A)tdY#w8S2V*;`8G^Zx`E6LzbL9w{~L|0s)x zf$Iw?DfI?yke3o^G|0=eDi{A@#H>^yUM!}w6)0U-it&dv`dmB1Y(Z+_@1tdL4QRSO zxxyqr#D*xVur4~Q8=?WrHTydQIx&AjI{Z!3uWPpo_7*yN6YAIR-s;+?PmDI9VrX)V z9iYS=e{<~WJW&DdWj$cEN3~l{1`A!;*j@;BxdVcnFEo(RO>YSCr$-_V)I-KdyE8D? z+M^-b>6PsqYb}75fd8F7((1I&?l!(}qG+@We*?3zwA06-5_-6WCJS4}J5_({%`g|Y zhpC;Wj%#1n;SW5y8t^Zg-uV8s@yNY+tZV<_+0U;uoe8ZZ?(y{Fk9YW@G(EN-;c|O~ z%36J*?RKWSS`A0}n99g$@eA`g!5Kk6PWb#C4#O{iv-W?Q?!P#q+2fPPo`ztwKB!^J1)0$XEc7)z5f z0hz#iezQ_Qz_t-K)*Q5DEIuU>lS)Ppc=$I3Q7Ftj@kJXne+)rs*VtxEX;?LPWLYS> z_{9cuiv%s%409T$T%^J# zVoDGz=F&e52bTMH0*8QqT`;&X-Zg>hg&Y}*KAf0?Lx}duW}7$gDKKr~C7&J(?F*uz z_#xzP4A95ON$S77m6tlT|QF* ztO8QwVMiQukN*HahfyR{PzDvZ1H@2xWc@0{*HT&$EJ|I$NSAdzo;xXRcETKrQ7Pf0 z_UIA&rTw5(;jEFSgXWoWS5|TnPy+@|&o?!IGQ#Z*V|Dej82~ZDy6zhB6Oa%2e3C&l z8*z)4_~}!;k5+#Ub*R#U9al!I6Yp!cA;MFTPoM*?=m((6h}k^o8{0AV6SfQ$1>y-) zJMX>)RX435U8D)L*tH}pTpaifee#b2-wR2GpW(X9N zcB`eucOF9bs)R%1S>rmu zJMA$Vi|K!_);MJE#s(-#YI1cWQl0s;{{*TjH?%1?nN(Zd`D@%YP+}7nT^3v?sQEVGR)28H2L1BZzj8R$m$Sz`_WWJ!drN$&qL^+9&LR zrq}$VwH}UoM!SNp=_6Rc{x^8Rpzeiec9nnTz3~)tANy^y7dlPShu0rrY_DF!2IXTo z;%l&DO|IA>jjk6uf4~zSQ4VICD6p!fOopEvr_a7bb2rr?A?C@ z?Gmkobz5^CX()6x7MlefVKvtq*c0;H;v0v$BoQd6>Q+MU#TNY&PDqy^ z1J*VindeP)v&IWhi^dS0Is(-`zWi|f{^TP}=g(P{`5umA7A~u5OCNrHi{ZYrTH#*; zRj~|yWhQFEBex#&-{_|YF9J?B3u1rabW&Hl6?3zQAP}d6*AG23pWHbJzJQMN4adLH2MU|@Pzd!Y?@f4Sfgn&Du;8=2A5g~#etxWQGv3r<$8+YeFl#i= zDbu{8${`-G*ZP$fl&Ow_f8q^|@pR~FxHOJ%VxNp*33m?<5B*Q*ITZfH+~`7}V|Vb5 z@VhvYzqFd*r0kbuf2=$s-Xni?aT45k4T2wj9jSj%t)N#LvYaD-5#cK;71<4rYVq!C zRGKleqYxvz@~7dbd1cZSi6(c(q8l&v6)b~ui+CY=(oT99zJ@q%E%>)zVhY0hmx1`s z{({C}Zu;Ixn^<1Mo?ac$m7NAU4|1`ihi|(rt>z0tV#@ndEy@24s55^uRYxrFKyb~W zds=WQ2WD5UJy<(*Q2>{SxGVr%09TG*e6+3uvZS1FC~&QLJ)U92~muRs~OGH*%mWGk)MGJiYHD|ScR3x`0jiN z%mg&gkt^p}s4(H_mY#nBuQmPq-#-55{U>46s_9(SssE(y_I7=Z=j~66U8cUKu(2@H zgQ+B_IJ#okmJmM_W|!E=V|9Pr7z0ZL=Nsf@SKa2ox;n!DYy)Fc$RUln`7@R>o1EQ6 z#f&h^OQr|O{g}b_fm8*h*D#3@JfNF)HZv#v3&n|8>K^z?M^}G5{Te@zPs^YG9Iu#s z=PM?fBK$qj@Q#eaY{_vI*)I#{$Kc`W7l$rQe36CXR&2C|MJB6=sgueiHofd);48e~ znWC{h%if1)s}?^8Ybh2Wt^c{UN=8V&wRuxpCR>rtWOSq96 zuV+q>n4$WRn}~hZ9gve#tQ2DEFSL4J)8}K;z0_K*HYI(7hU+uc1cSU2rqu2Q-ZbSZ z!;aZ*wD>dI&A*tox3lsN9oV3m8W35!B6d=En8g*OxTT@I6{H%hk@Tz5^SJH5{TZ@0GQ~JVHA=JK=Q|(6I6L zCmyQQ>od!n-Dm|&uI(RDY-nOGD(%lZ*wEAlG2nl@rP#A#@D471WreE_o(nFJQ*Lto z68FyfGmx$r6yoZGt{MAUduIn;;pWuUX<;w7?PG7S5nbIHK^z$gu;po4!uP#jrKb>&bG^)PGjUC^ePb&^2KF_U>S zrj_J+5RvQD8Ss_QW~ijpGm?rYo#;qz(t7SY&OFFBiU)ic53{q@ZW52zRt;C7DT+lyDd zj~`yL0<}k|#c-=AlV5#PZ#Uo#`dIYB+j#lzJrDEwe_W{E*u5Zo-ZNCWT8qFte{VeK9}8taMAT}(Rnfq6W-o={K7mLYnRK|a(5 zcgaNh{Vqn($lq0Ji_~?wO;Qf@qAdbKB%zS<04tC*A{k49nr~s;^>$tQ6OsR9M6&Yw$dLc`+IvPM z{$qP@zmoqp@Tl@1@BwsL!k`e&M5DasBp>BTzR zp+D8T3tfF*XK%SfOjjTEXOt8`SDNu{QnIPos}R(jf4xgI$)g|XJ3$K)dgFu(FW{9u zKwl<4baX%rxa@TGkYx%BMBG!lG4UW_py%}I!Wmm+8y>pw3STo{5%zz*iRTUt`~X;> z4|HNQa-6Br+8IwgzYX?>asz^2{b2V<$c7H9PhJv|(H95WXYpHc<~V)C>zzK9o*YuL zHx|2})x)d6t)$@fmhh#dsf!^K>nP{~&*_T$6%o|yScZbgLASS!x0v!|vDoz$jrdBc z@&QnVaUpAj!D1%Mcp87eyC2~J@(VUTHt}kXN*Mx|F)gk*2G))2nOjKpVE4^jBZ<3W zBpdF}XYArEJ7XG~*RF+|gWLTKO5F^=(@wwFItQ)RXHmZAne3vhD8k#&e$b$hw2fo% zde}BT*E*lWmT;v3y2Xk`R0@&bW9ytBhVXt*d%|vz@cTG@byEg#4ZB+ zIEcH9Slh!>AoJWmqEm0GFTOsBd%K>9{O?Dn#mnAq8Hzx<{BIbC?N(U+KQua({dW@& zm;Wp4ZzZ}{qI-~#nf2FFt-m{DvP0?dvtrE^{xQm)+YRrz;=ZnEzz;F$Z;7&TKRXW{ z+|zqtQ{EioM2de>+-IVJ=d^*y+VmQhnae8n@IoZux9^Q&YO@dMSEZJo*gc*fKCX)Y zHKyKR;xbV@wjTfL*F!kT?>`JHdUM1=6#c*(T|C}VFEc9L+mrYY+-ENSBYKx6eee?| z#TN&;Om;POT<`Dm;SgBbetWO|^eJo|7!ZKp9%Fx~2*oa7FMWw~p#2~HNK3mk zn4ixtOvkg$NfYX`40@P#iPdzpE6_S{q45@F8SaI^`qZwBhVfLm*v>$xJD=DtTj(Dx z5Djhb=Kaheb3D%sh)j}Vm45_Yd*)n=VtC=!y7qYU$cM2JDk<;chRQZBOt;6Iee_r} zM_F$9+PSj-e2B{=Fy?OMjx2CxP+iHXh7g7cETF0JC6GvrJH}myaD;f34O}^uvP>;*m-%yI9e>>>Z$+uK`LrkQS5R9`+jrgHAyO-lKJU6uWQK|9 zpf>kegrD`jMhhs5yBM<1?A;D}8#bEX^XzdA@|nIenX4M!U22I>B6{;g-U{|J)BOd; z1eLfmG{s7`wOzM49H3b9@dO0S-cQGGUcY~Rhw-!JTaa7hUcdhEfxqSrwEWM8|Fg}1 z{s?bjn{1x%0;d3kP#PGzq1fo}G@2OH3WP}H8x5WvksTIu*>C4EF}XUY6M(? z)=32dEEK3gWJFro$%~&qc6Ws=$}?E+l3$7-j)1@nqULiL9+hwM?gm~ zCGB7SqP>3i(@r!G?hcUs$n0D7FE9-nsIkE`xB5;(`r92ft1VAztM6bR)UOD=1{Fq@ z2}F~R8{kGhva@+GX0HF@I8A?6Uf`J5j&LHN5cVm7Jm?Oe5aWYFh`Jo;HZgMpm+Eeu zFT3B8y@<1tlknt6-BV5EwCZG-kfQd#6#K8Aooq!LW0wDi(QZfVzk7$3|Hmet%Klr~ zf49p1D_g+zBj7%)yxa zI%dv@?V1iCY(^13{`_Z6l<;6#om(>)!kGCh@Dp)TXs);$X*vA^APFdq7}y3>btYF98V#Uq{SRvf(~Th%_Ko&G zF;Gshb4gC9oAV|q5KSDlLE9JRgxrTkIWY~P>4_m^SF1ZexYl_O)}syb=Z>OxpXx5W zG0&~j`e0@Q^rwIN>5+D-qf_$8ylJ26iAB`Q!B7m8>ROa1$gY~WEy$)o^7mZU&Tq}z z$@9Tt>DuNg`!*P#HpHL-wA1b>E}_#V2auETsYKMN{^WGxR~@>iU0hhuY~cOao}BiE zGs`;dxl@q(PrF9z^x>%<5AROpuyL=Ri2NUuNqW^jGUR{%!-M@!)c>PxRPz4@o=X0& zd%^TrmxJ=IW$d&pFCfHc*TEm1_VZf|2HSwb@a~t_Cm)Vqe#Cc;M%MWzh0v{^Xk%+k zUIhMyW@l1Iw?0t2mz=@ZZ(pU%-;M|vIGq3SNBnFiAuf6}oQ1WYe*NG7O~Qu+go3#X zAG8$#iXKj@dr`&#b)aaZ*vEf;#4RVTRg8bvC&&Eym%qP$1tMI4Hh%u_{$=;wPd~w% zSH~ae)jP_;l1(c9+R}k(aw~*>r0K3V0Fu$euTd3e28k$?G3H6pzTOmPb@j1LSH8J% zfms8@nObLLUO1hbPJUS!|r@G?XNobA_1Bj&n%k9B$gwX0gz$;**`S)Bk`YF z`_=jHCY~*c|727apvnToEI`1RRHwDYmkzvRCM_HamQ6qggu`~7X^WP(0ggFG$SCA9%5(WMX zpC+O~`t!n@iuO^|!~fKUXEpu7Tbntab2cCPRr~Xq{FlFVe;?VN`xgci>HdzXVYHh@KCUJp5e zmD;|w zZsmS6+=aZ+1pJO}>NNcTFev04PFcw>DZQ~#{>-FSCJBH1=kfdA2Qq7&eE9V>`a7>S zWT7ha?T~ygdGpO5Ha< z9x{fGE~1{sGu&(y0^WbUfBp93$2UDt+Kzt;Bj;ZqPhS7>st4O{^jj+8qeLjI5Ff3x|dE`#oDB>wNge)RnRVE?d+|FD0F$3OqC8~`fyZwu7F zEeZf3j{1ZTaM8nSapii6Q)@kRY%Q9KoLB3)4_XyBS^Nmg!5YlR)1CRq9>a!$ewyl4AyAZfRZT%j-L5OClG)lLkStGme}%%o<;0fN4%Q+ZsDQqW>fI zOO5`XssFe4I}!bV?{M$1(*HN`JorxAiUZ)v0#I21?)D0R*xcu5G7^@sgR&@CK(;(2 zR!2t<{rSklWQQzHdEaJl8ZG__1-8&9BM?ebM1*7=avx-n2lSXQHZ{LZ@f*9=Y8-zi z7Cw@aT?&{%DHmU30(8a6aXb*0-#pt8MfjFT5ehuX1ubh7JDhXN3k*lmteIxv&E_J@ zdo&h?GUzxRGf__rH9(k3Y9Lm>U~+WZS05x2n5Z8n{*9~t{U{SN1U*+1y~fA-4)Ankwo#`piU`B!A`mHJ4Zf5Ye)k^GN`=o47Uf9rn& z{(rD-pODPN(pAGR+`sMdbYx*tai*f8wb>l8lmz&d31`!p^KYx~X)li(l^9uxk>9Qu zsRZH{&MAdXUP?G_Df?;~zlv1ka++*l?waRT@PtPH72h3cwU+jqLv!VR(v^SD81C7g z%$>O#FpWKWdHh&#CJL*@4mU>qnP5I@Bkx$lN9sHLRi8egP@s%kvFG)*)t`G7Zyedi z2-Coe1&+ZU?V)W+CiiGy4NVX%yU_RJNC%@Q{7eAnoIM{bjAt{+(g^b(USV!nSL8-ol5W^NWb7}I~NJt7~_A9f%9tNw6Ye>gaK_>ZH9 zzZ^aM`0$V2$Dd$E{szSL=Qg%u&d%NLXOQ1vhA`pd^k{TsUeL&Z^>IWTJ>la#dP2a| z>lzZmXK8Bu4sY>&(wKdXgK+}<(w>-jlGbQ6s6!~g#Af(`%ET4yFJymY#r6;qeP_ql z7oH1cfz%vS)Bp=ocCSzWBj@)qf5-pq*03k{!XA1W{Ce)!8U062nWzJQ(&g)9;tmd+0tEC!7?Afg(K6i-8=*!{+yk9fj(zDM~rs z#A1Yf9ieI85+r|0Hhr7~jUmc@J}C=+$n%(^@4w5ZAaKr;M9%q%doys8UU!+ z)$UND11)&k;uD8U(KHYc*q&~on*|=ZgTVOlW9Xm|ui}3_P|G*_+Jl(-x=+7hyH5hf#*VkB@#ISy5v7q4AF`D1qKZXno@Wp)>c`*)?C}l0NXXTMIDc4k{&w!S{>Dw6AG@VUWU#3&0S-3dvgmgbb0%(*!VHztA|# z)PECF?EaXg|DzDxT$ueNzaESqwmJj;TDzR%11G(%5#RCXH>|+Sq6sH@4Z>wr$&X^1FHd_r<;E?EBqw zc4l_xi_c^smv48h$9FV#!QO5Do)FwF;freu=F|Y{O$qIaYXv``frw3)m-pS+KY#57 zHA$MoR;Q;+)VD0xd^+*@zKCCIE`d?{Iyv}9z9UI!ptTgz@u^^cDR6ko zC{7&cg!oVop7L&NGL!^onGqtzXzL7O4?))F4l}A4n9lx z>7NpD-a(!du(P|02X{%xB1Ex!pUcN|w)wdF5l6{5sw7dWS<=w6)S`$~H&v{SYdlyq zmCK|Aip$BcUcI?*P*wi=A|l(iq1NAt6&K3G^6N?^{(0s9@A`L>X9bu!JsylTFHpxh zUF{$dQN*s_5)s-h+5#{4=dyh3Zx#0z4l1oaPHzwQt8NHW5Gl)OE{vE?1v&wk;Eqxx zaH@j`ME*hN?^lpv^FP@dsE*9HOCrur{K6z6Ap)Npl@!&WoOyn-$bd!QHDV!(=Y+K{ z)@ygVcPin)H5qWt=l~(p`I9Sg#cr(`nR7L4Hoo~PNMyYIjH_wxK~^43q9 zJAfD=cq{NORcSdX$^3tpMz3;-bE1q|i8I?cWGKOdr*71DDv;p`-ffd1zkEeWL(vA`T#;p7d4*yG#T**0g{2Y#)36u&!=%2hhU#r*5`Y5yodh$pQP!Nc&uP#~=G~$Ct++@H z(S!YaGA*x&1;OT~4zNkq5DsNy*TF+8bH*TGsA5f~En4fBW}4{JJR_b!>C1;HZq0|D ztiUM2p&NwEBj}i*A@@Vj>s-F*2DIE2-wT52SoSedHlCg2pd4t*`Lo;!>jBg5gXV~A z+4x9%nLWa5j^7^GF$S_3+(6=Bwvc*u3mkPqc4VmH%o?#m7Je3evxyydDl2m;(NXJQ z77k($xEUl9*AF;x|I2zaK23RAHa2GmD$|HK~OjPEIf^bd{ynDrbh!Ys>#y(oVK)k5{bS+wEA{ z6x&;5ixss}8JTWj9GH&_BPWD6SC>3k<;Rvd3%iOx1fTuH&j`gSydL{yoS?eI5=cg> zCG09if+nGNrBOX0UKj&!Sf)@i?VNuR=XGiwV46Z3>d<;i;PP-VV^p-?oHxc*HwS+xUlja{AIgFa;o;MV=#)^vS zpChD#;iuhNy}|K2H88haJPu6s0S^RQZaC@>O3YH_$WUy$LLtNjxF*RXbLQ!>^Kqp} zMTnepK&3D(Nq;n3gBicQQG*3_?N&&)7RHG#X2JrM0wa?fk6VvA+3ZIza3=48zU{Lq z!NYUUnXmI6( zK_lzNxS$CuX)TwC({JgyORJyeJRgMyrMWGO+u38W8V*J~z&oW+J3{C^=_V{9`b?%IjdF2mrb6x2pv7j20l0tgqGn=aLZ)GvO z?pV#+PZ!j|5zqG$xRxCR9*)0uJyp2A`h5h~c%LkE+*Xn7qO^_2klIvtJ!butt9T|Z z6l&p&7m!E$NCU{pl6%q*{eG(E;Lq?cen4_!B+%A->H$Y5&6?NA)IUo%F>6BKA9P=j zXI0CVa**S|Pq82$TQ#E!$$3mdnVUmL>EHT@djjs@S28>Rj&5^JvgrCcxB^BWG->7j zxz=aT1><_6viqj_Q?&8H6I$99nt??o;2w)5s9w~y+LbQ&fw!V()soi-t5H_F?|FMd zz3%+`f;I2vADhNZLcG^=Uagw*Dvxg3R*C|h6BZ2tP=uVh{xL;sywm*N^4n7YDbf*d zKlza1!!j+M&xLs`^@MDYfDl5e#?e?rP~d9K-oo-|O^IJaf-E!f9M*Qgi+4ccLEM zNzsh7Oh|2L%v5OH#}N+84*!ifbi35Ypxk;T+5EL6@1W>B_7i%a+kwf2S!G2%RqD|(+ zpQ;Q5RGEsS{?joLr$(}#jZl>S+sek`o6&+w&h$`5U4csr7sT2eYDq7NMi5&WYX2z? z(k=jHjG==!ixP#*8t+&-%SNl((Z+&8^;~A=f~W}hXxGum7~EE7_=JfVBn)-mM!~T> zfB3Ujzpr)bh_`o*IB3H!WcMeGmUSpNp4?Sf1gHJm=z9JxtvwH(UJgk*Y*-~E`%Sk4 zJ4#(95YC(Hlr5F<-`&-Bgk9-i?+QnUwkSqG)yR(qyW`mF;a8kGWBdSOG&3vPMHDVH zS590vTr|7Ahz*yMs`hq>_O_Lt-SCd{vsy2Dr5{cEVeaOiCf&Oi-cB`1wexK(NSceU zlky>}s@cJBL`E$4=zPk#Q1Qrpv$Cayw*)ruPA;x#%`y^EwcL0UdfN5yd*)nf(tij5 z(a(J*?zc2;YXS9w2tbivWAf&jILy@v%717GRJ+K6+;dI*unP0*<57+eKMDkHm5*ZIqjhL;kfK-U_s=)^B1t_9zvJJ^Xd0_9&-tkBR~)N;T>bFyUJQ zGp6*z(6U&0tNQB!-9$S%V}zCY*xOOKa%Mjr&Dk9G2rM1EEO^A2z-20X@XJ}+{Ant7 z^(Oa^X|si0{5?(0< zF~JzJmnsP$?}PI`yXlGLHJ2P6^y9ZW*`f?I4Ri!pg1FEQDjJ()cEUmM?^Y3;&@@&< zSd!TjA2~@Y#&RVA$Mwf`?ksMni=uzEJrT4^GxkownEs49WWg6T>q{Gpg)jRGc7&tN zCZ(s@wg0B~=7aY@(?G%boweD?!Q^|CLdYAiv=Tc6%HZG4{`0A}>~(-7JRZlByb*URIy z*w&ogQiiM$F+k^aP!Rv;AFt7w`)GsFnF;zW-AW$;@I8Vvz`~4^nUEyVeW971PI+N; z-ORrRNL|kSg``X9{d!i0=iT-_RpwQqHC`P;0Vx)-cc^FQquam{%`$(M;~U=kLy6-a zRQFvIrSfLV+4#rm6{Bg)VRSikZumKj^{0aA<~}zAmbaRHUttwCFx>&o<^T$n3i`_z zEi|WhkK;fD7--n`;&k#ril;BBXOyePf-oCFelJL+E@%jfA@7I!RqNqP05WglyBUUp z@GDB%+X#e;h9510;`iywWr)77+dS4n<@+P>b*^-%Ijs}ZHg%fE4Y4Q(Uj)DdVaL$z z$sO_7HN$Ys^M4g0X0%TB^p10UhA+~TSfvXl)KArUORiP0&{}cp$^d_MW5?tbpk^yaY#fyR(sjx|YdmMcE z;HY^g0UJq5DjvFwTV6!BjFkGFK+Lz7QYNY;{fEC*q z-V28dX34#_7}DTy@f+^wqI3o^d~vwg8p8ol%c-KldKNiA<3A4^$F^rXPAw6|Tt){% zq2BZ6#eKRvAtQ;u@4lg9sxfQhBrsYzuzW*JR@4TgYSy#X40Cs#bmp?}&+AF8oxafT?&C1c&rumKD=@-WRQVwgi7T=2eVwW*32KIB`w89y% zRXxY-m5#OPT)6am={)(19FQ}CZ}KgjF_=_50>Kr+@UPi5LL7KLxIY$-5-N^AGGQR* zO~@AKI87iTTbAT7mk$9m?lpN6c#|@7SHz(NShg!f9p2eg>P}r{tB)JsKv8zJM=RL+1RyjZq9yK4_|YjaF(>3*bq@cKa5N zP!jo;)NCPz*7>h04-||bmY*WWi;!yYP-U9ge3^*`gN!Se9yz~Hy44wZv#Zks9`S}S zKsJ+q3>Qqj`QGnBFOHK*yh^gw4e6~c^)?t2tch>{u8^ikJAuyeo+e*4j8|cVUMkH5 zb&zbdmto>`VM}lY1=3ScND(0+XrZcVKt_G&1BNVXtf)PX z{f^)_iA)4&$`C5+SwzPn^yf-=$uJdh9GE^EqTpO z@{Q($q_Qv`6FChcxhIVTW_--4ES#0+yWL5x9_N?95oO^^b8*Jlf9I&c%TZdq4vI}a zP8Vo2c)hbLda)%lU?kV}kAS}Wt`IRLtz4qLe#?1+($Z9RI6niCgwkc}|A5`p>)RiE@P7kpXf- z#yUgKmANxLO``B0S1g4zI3#5e&EQn7vb?R+Z6D6e#0vP`d2+ySW6DE7{a^F@U@&2P z&jNG9Z4ibjqUywy08EL8WlzNE^6qUNd>wZILBuzzp5Lj)Fu7ClI(hYh$^{*tFaExW zm2M&WuXL7jg@uO?>35VLsN_`9K&vAA!F#I5aK2;|r?FMb>y`?PWl5`$Y&Ox{@cX5T z;EepeGXL}HQYJ92pTRrvJoGcjQABB-00sFWh9~-KoqZ*h@Su$g2CA~dssx)AJ2x?1 zQ{+4OdVjTpriL~0tjNN*D8*Xtnzn)L=k_k^b5)T#^V<88?1ic>dr#J5!6FcIH}=+) zu`$Bg;P1d^VX$vZV1PP}= zHan`2QTX#_iEEMm5!P5a?RjiDrQ`acb5r-yTtpZor}&f(?xQ!tIaAz^0TPoaO3@u| zfSLQ%id2~jMfMxIy8P!s@=Fe7D#$W~PCv4$04p%kh%Cmj4cho8F=ctZ*iKQzwWm>p zA-3C6=omm@7u4R)EHC9N)axW$H|T)=oftL`vRc%xuac|WS8}`PGv#EEBb6?*;dNCi zhOAl_fnScYi@J+w>XwAqVTBTPVI~0Eb;>sJ14EyS-3SY~%!2sXNDs%a`7H;>=8Itx z&{0A(b9Zshz|uM(iLxZK+s>~}?^=(C90U$6vI+Ew-a?t5&B0Oz)P+W^TPC^H$kg4% z5*Q+>pMBQ#hnt(YCc*~oTS-Dz3yhjFg0@{r5gT_|)^s65paNExaiATt8|iDVT7suh zy92?#1;7tuSkm<;>Z8|~D#X@l9)`Qx`hQOyh+X0;v@WOUCc)z$L6SoZ$?dC!!m-@M z4FS$dCJA?hO96io7Pu6Tk3F46k5bOG!`7U7xNI*SUpD%%f7}jA9OMj$s}bG$9c=JK4df$W+%O0}pKWV=N(`O)fDJ)V>!7CEVA zy#?3WO}=NW&~UVOXYsSS%vokfHJak=YjAfA4(*8FYsV7#OgR#+Yj96k3=27?GvK8) zKBS1VWvCh)VB|2|s-YBWRDlp|pqjAWvxMcF&@&AwSNucXK5Y|*pT>VrDB;oos~1M4 z6T05td$fuyW?v@S)!u`3(Al|9tV+65y9tV0ld<&^;RJ6(Hpme3RsysOCYRz@T@9YT zmV5*{qLRJ~sM1U|IF9> zS8IkDyKrj}8G>6KIeLurKabxY>}5ru6n?|Pi(Sl}X_XF}!hIk3J7sFO^D`l`D}y>0W2TD;nE}%}PkCQiGzy7269_`M^{2v~$p6>2{<@Im`j&(ni#b1F1dBiE zxI4j~z{NWKCwmaTG&eBpw04VUa*fo9gx0cqjKFf|M?G2K7=l=~NW<$45!d11&ky(hIGTlsL}lB8}2|Hb>wDI5`Y`kgLla`?27ICit0p&D8^=Z-C$ z@8CP^KT;E3Ma6Z9URtmgMz3?^b6ib*)quY%+55FQlkNp%4RybM1MkyuItY`>lGu9@h`Q9)bB&PI0cQt{mf1!)P=Q z{nua(sc*#te}&mcAnV&r6<6mwetYQ+P43R--}Uhy_^YzU=!YvD9_@f(AeZ?<|G41x zwRlZRyef(*HVzgz8|Lw68vet`lDvVde;mnw#W=Sv*YRW1)RUm!`iLd*O)ffiw+9!g zd^zy1KfabF6dj9ZfC2DRi#7(5`-H{cOgnolVW-ko4xidj~moTjHxS z7Nl0&q)XsV2jdnY04rxkVvJuiYpD6MDTTddsswJ!MI3D#@H72P-({vv zjXd6bZKMkC*NbFrD($wHd1CH;+4M#$Ijg!C3Ypk^v;+{@Ub0Ka@5X!H&Z1%&8DaDi z*XkLlBLpfM7g|32J>(YbXTct&r!MNH@R((IuA0}cJAbUhQjJ(97mbTf{Q$jUc|4py zS;hFBsxhOF9S7qJ9Jb0_n|4!pHhZ)EJ+o($wGcIaKMU%qk?i&NBXpJxYSYSJZs*M! z6Usv%H%(yfHktqUqch`u!IvDA=3u{6`38Lcp-g}dh}m_yCQOo8uV!f>wXqNk@ePId zVj%!UQ|P9fo}Bw4QPj_VT2JfkzYq7RtedgQcMBB32WEp`3XD^Irz72d?R>5)kO{#w zyNPdOK|+hY4Xy0RLQa+~7s>v0lH*hB>4^r>C;*!h8)~Urshm)HTZ7IdKg6`ARZy)D zcX6TiQ$}*?FSDKM7?$8A=gdFo)DR}j4aadf8mO+?bwdynLW_;`6vr6N26^MN845)c zKO_X`=+qPq8@UH?@o+79txfACXqb@+Aeg^GC-isZrHiLKqR;n09Bs)3^B@+7kvhud z*#W4}s7%AonL$$O4e*Rcc&{y}X<>`xZ>X*iQkIt2qbCgX1j>-A7We#SuF4ZL(!IKP zeSa9pAx59DNeMA#Y!J_2!6BQ%RZh8KjTuF3(Lor_n8xn;$t(sYWRN;BBTskexRi$Df_3kNA}hped{Iq%k#yJH6A z=v`TLJWZd!S#Iq3n%VRBMhh?+)tS7a_TK_Y`MaGsN+`g1NnJ70Sz<`_)?zj-7xJ<9 z&>;67(6k%J!R)koNfHX!5+X$MSNgpR+fl<;zR3s8xVO zef@<4P6sB%O7R!MKhb;TI>^I92)zCj=8hh1${jC~LLR;Vqh=^frrOaF5%|kcuS2=3 zpRxY4IJjQ&Pees}unEqK&k&hd8|?vi$2YZq2+DBKRMUS0MDpwE;TKS4FM?T#4Fn*5 z#}tzNo1AhFVPWo3kIX}*#wtL&fE6)9$>I)+X#3Gpz+I~lW+_3_2f-iqP=|A>c_B>$ zNu7=WhghjJ6ZoATTKY(X0tYZ7@LVy;HlxVKysN{Q?zJdkq;bJ1XoRhiuUO{tkKd*` z%K=zip;rvbu-+27#EVtKt;v~54P0x_(ougKHhKuhY)h`>eT}N&PVs5h_2|uc_}B2) z05&VGSsKePrK9MF&Jn`+8p#ENv?%t1`JUewHV0Fq+R$C>-#%}h`&9suO-6aMXHWU< zLhr5bc2q^;BWknP-~}N~leFL$d%FR0UHU4PystaaMYOPFqOfr;$+!T8;u7wF8Cw7~ z0q$xMgHb*$PDdS2c;ff(c$ zf;hEhXhNX61v5S??mW6IJg1@T4ieDP6pnP`X8Tg`O*U6?U$N2hIZJcnN+Gov;=x*- zzM^PH8KZ^{jWO6@9i~=ud}|Klu&f%AEJhlZOp(CcqxH6kLc9h7O4m|n(`p;bH%SvN zNu#@LM^S5^S)o8PTM1@KlS8j!!hx+kv7zO3dhV2#7T{oPbjQUMYrty|O-U+W8X1)f zGmhDL(u-cT!cn+m#o~ud99-4CDmfcz*$?n^NcPdL@AWb^M8gAc`{;v$?OeXMr=g4G zvfD|cHAA_&3N*kp2krnf&YHErHcK7;m3XbQ)y{<3SA-}2+DVCbjb0by2bjca4gJ-Y z&|^_4ZGT#R>Z(2Zp3VSuV~dW#TIS0{Tc;M1#o7I@1lLP#K|YYexX5(^155{Me8(-O zlDHf8Q=k42bQA+B!aT8y6Bnxg1(EFE!}>mx&9{+2Zc=~{ksH1a!6sdtO`_&%#{llP zCW*}B3GVPf!)fmB3oPcdx+h!_Asn;S!1W;H*2{^t!OsWj6oy3`loXbFZFu5tU1OAE zq0ld(?xLatmFRlD^TLV>{z_jwqY33k*yEX}{L^P0dbf3e6*GHN$> z*$1YF?vViX_S}2Cj69bHw2aXh4aqw}=e)Z?C;?=Bl;?04jFkncqEY`Morq1=aA5Vi zboEER=1Zr*N`+dmYIy(ye0)nIpk);Bgc zt1bY$tziJ<#Ushu4T}rhJv{1cJY1+WwwJALTmy~mOa}*hYc7V2-fkxhc^kf}cNK1gO7X%N&fkP=K|ar{J(_~*=Y38D3QAclf!8K-BP=?lDU!RJ9DT8FUd}~K>l<;Z)Zn+O6wfjBD*FICgM@-X(UkNL_ zp8y}{F~3lXfl(_v+pcd=9%Es7V%3_KZn6(bGv#x;>o&?3%R)Yn9*(jc&!q&60{umcbQM$3Wu?|pikyn>F=`^o`1Zj|sAMkrVRLuq7D&~pt$i374QRA*(BFEZOlPdQTq6)i4!0fK{P60 zcRIwAhJAU;lu?(#%2kbrM~N^v{jgE6O2SS4gJV==oohf8_v;7UvZ&bEto?hp5Xh@D%)OwCXVIJ5{IyS?;VRQf3E`oHFsN7REVee|y#4GI2$ z$Ek0Z?PJ(!n)|<<$3fnNks`;dvdsLV-yq`V$%J!|8BWH6@EoYhM-g}i*=!AOgUl3! z!W#IUW*Yn2@f_h0J-|OcX*`PPDebgyKlZ;iMceuhOY8I8%a`$Gbs>TT7;VIu@Cw8F zznn)HI;^$RT5{^5n0`d&AgFdMkoy)7>}}@{iqW6CMcY#BM2jJNlT4DiX1Xg#q~{N& z%S%)a^*zG&i`$i=X#?6hKP;f@7&~#5{6pn?D0_>e_;+G^39xt95VlAvL*St6F|Bk#AAQ{)FY+Hh`iBKSd6TAc{y3aZIX?2k3@(EB7bO#Zyz{Yag5ZX}I5Mdv z1!%9YYu7()1g+zj;oH!y!xnrtl}|Fau$=K;B(0!g4I3b;U;&)mdli@?`TN(vr5Y&S z#ptQ4hB#x%houJ`D%8o0>_>lzLfHd7*6)+$(>LlxCtdT>uxBwZ|NM2oZ3KEDYG&Em z;WOcSZt72780M5EGoSna=$zR9`GGBxG}CN&A{yC?(?^V?jAw<6L20rRf4^>gpQqO-saE-o1IV$|?}uk_^w(2HMe2 zJS*n;f1m&MsLjL)5!KNH^t7!*-9<@2&ec-F6Zv^cfGS#(xKH)21k+0z$$e@mvp9}G zZwp`)X1BNcY76z;nK6pt_{s9E9indb5yJ)eMpFLHhd@*%-q7896f`r~Oq`h^m_?Mp zkk^aTVxU8t=c|&DTvJ(Z@6}#wG99cII&;r!7p^FXqU-RtZOK#TEcqb}k^#C+g49;? z_~|z*_o!%o${cs!)s{KS0<3kx$Z*-dXoVl&ZSiUd&AJA@@pLB0$Y$4SGyP}rJPc%d zNGPW-0_f?VicbCGC})-SCgj-#LiXoCw|V1NN(6n`Sf$Q zPFtM)WnU*f2uWdeOfdzsH@MZ#;u!A6YN-R8>tc3p@&?ZbA$Inj&UZdT$^|)=Wsy7< zSIw{UGP;y&`*9yqDLwB-oCTs9QgE+?WF*TLK%KJ~a%5CNAFNRaPH>=6_*UHJe);!Az)94OKvc>mc{ zCiRwV!}G*m`rf$$io5_p4+L7A+ZgcSczL=^71)DIN)9Ns{%ZujfB<{rOqU1ex0Xd< zKKj8R4+;c>kFnWrTM_QT0by$6`H;A`jL_U@;ph~JhX~ye>B6q6#_UJ6(s}4UeCQp( zMfDyF_oZ6YOEc27FFTT{3RW~Lb$7-#sQ)St>oSPc>hdHjcpeizk{2yq$J-BLh0d!1 zfq0CG*+|f$RkC&E;@mle`-jze|HUCt$j%M(w02NT%+_n$J zQ1=UX`BB#Sc$w(*c<9KOe9I{MI4XYW&@nak_n~h7?nPNgG*&@K@P&FMFqo?dLN!A2 z*S?Tc4J8-H(M$djFJtK&z?!9S-UHr}H#78bZUJ9dL@{2f~>+iv}6~P z6PczZ+Ey6nMoGLeUrlsCkZd{me5R-Uw61NEDC$HxBq_j*bO1vhO*v zyvDBMtBYdzT})eC&z&7MBmXu5E!(;EJY>DU2cEorTA4Ao#3`=&C6GY0LOW%Vz$l_| zoeWzbf4@nlGEai=k4(fJndEpK(P8Rm6g|xV99ZR$06;D z?f(?}+z5tKZ*e5mJ!m7=1%m(jq|9(EpYs3ko97f*NMp=8Oc4)a?nMA4q*2+dd5YkE zN#+}aSDj>r1cD~OwHTkhJ0)qin@B3TEypk4Yq8>RBiHsP`)YUGc+f0ojDwk~ew8Ge z2}cuuN}WbgNpOyw?2K*5e%~XHq1wn^D1gNpOxgRr0z$=`0Dt*rz_x$Twq{BWMd(;~ zdY?(<(9-vrmx6J0v(FUvL}535#j^3wDAV77JnEC#-Je4MJPN(XZjDB;id3_Z7UWgn zlyu0zc9~P%yia%N(y3_(W>TxsV82A)lU#+~&nJNeZOcK%(RC~bp7r*28}B}Z$>_&y zS|(SxQ9d)L3tFGl_ejP9MDN;j0SIvXyPXaW7#kF><*0fj83QKGuRL=D7_p65*QN++ zB(WUPUUf>qrM0DSThSXkp8+CrJ9iG|_W;7-wB4Sc<)Gr@j*_SUAV45Wfvx#HUEl7I zS2~V2{DQ!Eq1!rp_Ikl~F#e$lihu;R8$`FTK@0L)_?{l^C&OtXPBlHklh#vF{{FYo zXy0Mdbc<9(2+h&n6l%#Aynu+p8xb=eiU#Ek#aY1hE6Wu6YfxO_oq7kN;e;pTVI-58 zpDDOEw{Eyp!ijRw3#J9{!k?b`yzG1OPF6>O5-Nc;7%eVz3N7P0nrj+Mknmt-rWflm zHY{WuE@-=&@EXLTnKAP5&!1}iBQS*6aj*AzV*kl#t>RE25w7&+P5SEXdABDueUSUZ z`2?tFZ@G3xAOsf8uL-!?kH<>sGZXv&)w-*GooxF$Y1~e_`-Nhj%Y4o3pT5Z#?M8NO zS_1B|O;TC6Y|A&_c%#Cb<=}Q5+SR=-y4Hpks9K@ zFOs@Le~VG3Io?5wAn;i{ZAzMEsAbr~NlXFiGVO(p`&u=S$&=#Wj#=M2^?#U7TXUbX zv4um#e2d40e4j(=DUXrR^M4VNtA#ld75B+QnsZ!lW#K3(YpGTDP5e4K_j_7d5)QY$ zZr{PB9X0USDC*K%Eo1Wi6oQaH=9u7FS+lQL39DN<-h5 zkc1Ihw|kt7A57+Ct((wPh(epE3f4Vgs`2h-#G;QI^+MJ}&95NxMt5tuzy-Dt1)U_U z#Zv=UqT$vDK^&P2{~>X2Z z$hd-$n`4^0C4Y4`m-QN~7eh0%AY-C#7LIU@n}{;}L@$N)-z7Jz8gkM%&4sg)yVvD; z(PZEE<&2lbm4FXxL|);dhPvxP6p+~{28Ilzq#Fl2wXE-#AKFWe25l|^txG?BAoQ67 zX6Y|;Db%#&NVtd--dbY$`9**_{y3lODDA_esza;;$igCOnC~$R5!cWkp`=dJn2R>r z!u~mG*T(dU^>HyTuDrYxn@ zb5fQ&n>bta_mOMnSB{gKMa6!${31e2loZ=XQ}PhAj+5+joIovm5gy7TR1PdubTeN0 z4!_YwUtxvbO5D6~`8TItD;Dz6{VJ6UyLxduJ?czo$z{7G`<+`+_wGjP`~mzOVaxY3 zUb!ps7Szn+%~FD<@dUgoj2AAvp_t*qPaS9+3*~_%QB9|%8BNoI@PQJBRrpPG6z{=~YXzf#s?u!z!9DKdUD2=FibHLfhje7gLFY%;ts zp5mO0N*?&?JytK#O9{3$eruOuiBhVodhn6nD+(Es{ad;EO_hxM9A&! zoP{>~fdyKUnnEt}i#B4XTSZ7Lt}qLtVQDqOx`nX)fRJ%_`n+KXmI@#6Fm~>MsJIci z8=}}>xS|?js%)n1GR93~?6dRMc8l{95=S#%0IMwtL<$IUC)F{-_tBJGvZO)sGSpbg zsv`Z@P<8^8%0H~|MRp9NTUM_&{s}esb&yr!aR1RKe@SNbfr5-e_AH2u@<{u72~9K) ze6$88V-AJPeNwt9$LNaBZJo@#xvS0ga7f_K{Fb&{1><{@K6*vfKy85u-De7oxtKCv z)a|EJ)DtMI2LEbPB>CI%stbh`GHnt)>UMZ}-9V5xqYPHn5vM_(mU0UNN)e4@c2>+D zzu|@e88EWBrQAVXLQv4RJe19>9q=)rIQn;9wiFTKJ??>bgX_{h%Uj8N*akU4B^3T{ zY(mbhOj~y?&%dVh9hW#zt!d@?kCfEX`6IR{<##v`UrN){$Jd|%^ob)?4UnGc#2%m5 zvsnd@XCrnCB5*E!1*N%{-giQsW|h6SW&O`_n-53@({1;~sH4I%#PTug0_4^iKorzv zXM~-wqvwo8JU18%p;=RI!xvF07uK0QF*U!roz4u~e})d|Fa_J)Xe5Cq&$_u~{r{}P z4707Ist0~{!9L&RDdHtw2Tp^5L#ZobfOIGwl^68N`&Iin%j zQgc$zDzESB`DH6X>Bn*E#JH!MTzrV5K*qzzhj0A{=hf9bR|6jg%ER7Eexu>@sC0p{ zj%k$M)%-{$G7(Mv6TV#fFj4dm*K3`M1-Ahsr|*7-ozLtZ0h$xAz|pVvst*%4t;u>O z?1!Om4FQ}kDPqp0i)UmN53m$7gGDb+;{#ie9MFXBjF;woMXQ{MF$x4RaUQ18Yg^T! z4?~c-MGEb*2&w8acC_!&7GpBnoovXa#AMwB03P7dCW_--+u!hhcb;Cg{=ey)mnp7&4}1 zBnXP%{k|4(m$>)lS6F`AeB`>}^fTG(?0rA^n54{%0By>C*jayK3_Q_)*L+7k<~=vdSs!z5 z5e@y#4cI z+3G)r#Y^PTH$(X%oW=|%x#gXSECHWYdYj?<$&BWk8owX!Am$yA)6_=U8^Cc*En)?v zd{*2;XoGHpeeLbD+f=v%zIwhDVsVh#R`Q2qCfh(SOB&Yr@hYvvpIIho()nXkB9yC1Doqy_ z@1E&n%F4t|ff{{fnfGHN#>;c90||)sWu`hz$~Lpy8%sy*Sc069-5XsxZ+FBRdoHj3 z@Zx(Dr6e9w2Zhwwi9LX5L4&45wxC||IsDOIcdHD4Ir)k%v+sM|(W?i9l-!@|?!|Bj z`XY-ef|i`%%%E0I3 z(TCZ89bQSsfohwThTXjr06t_f2h)voFt;S+0ix>6RAzG@wn;FfSG|}PV+af07yRAJ zgoOYXgB}(pEuH-e9>8Ne3VMOQxe`ll5q{2Osj}(1L7?mkXaOaQ!jJs{tyF})x#`!@ zKHFg^q`wVf3hI62c_7330XGL`xo_CiXy~9!+8w=q+=~Yd*Z0YGG%b)jk-tW_@{`cQ z3ycAijTzMF{zR5zZ8=JoCK@8XWfJ^^aJ*N={N{KW6WO|nhc9&IVvg7x- zAJy;c;1s>=gli@w$$KwzB)r$LG+PAUXSH8F$CrTWjm|nlD=gnXy@`^APrZ~lw(HL# zpmctvTaujk*G(boGjaVxrgQJVDbyQS{C=7J8Dt+)z6RO#ekAv0%W8nmouPlXe~?{o zA|pTkH@gny7dqi0FM9sAyFp`NHyJTjue_j$`6}esl;3Z1hdqG^8=^))W*CzhT% zs5YqWt?D5gnE(EB(YqkOc(V3XkOL$uLacF0{MFa^{qol}F~`l2J-Ih{`_U}|(#v3S zXWM1FyT^>z^}%>6C<#Hy%}zVzR%z*w>1<^niS?^t_nV78w&;tA=SxwwTbixJtIzv( z@2XpAZ^o6rD5%~NDft#t1N8Y>TolaWzO}I9Al7IGX2JeMW#NG4nWJ1kZ`z$T|MD3( z<^>V|=vZ%L;{f4J0IGOh@4Rx5OQkblsup0ovtTjSKOk_V!Iw%KGv~D^3c(U^bxbuc z`hXe>$lmbj!ds%<{s62;{q=j+pCXbN1;IZHhNIM`3o)ITvl=a2m3z z{#F5zn)weg#=XO-Q(p*FCa`J>xqqtqnOV0o)JMji5U-|3Hl0 z)lpL8kCRH}vPDqh$J2e-Y#Gk(w@G9A;8uONlED*+axJAv+1%29S)utnl^AAsc1U6n z!q_dsS?xlRi{;R;?yKyn`eU{No*cJ|U2v^9QOy9IW|jH-g?YveW|GvNQSiS-+nRM? zX#?TRw6G=3Cs->k95Y%)kx@L2yjdu3^V{eueEP=pj3#Bbc_n6^#fvdDiuuG{mYdB~ zX{Lw*+G~}Ii5wqilDb*3lh$OTi-)&@X_i zQjj2>?`?3pS1*RhcWyrD0-x=ga@qZMH80S03q70B683>pBR{tCVsH%6>L*5$gd$D* zZw4#AkOM+m#i)swU12riX3z3BVn~4mv!#P+o_d&-@Vw>!$iMmsdS?tO@W98AaHQp7 z)WWGt3Z}YYy;fGH!PNb8-#^KONQbV?PvS822sKl6dXnhHkbj1l#h)%2rPK%!LRo?t zO47qxg(!u`VSW{pd9)C(mNJK*tZ6uuv%#EfBg)4J7(`5rHM-7@1~xWeF#Z#lI52VH zn-Q-ewdlv{X5)Z+n?gWv2Y7E6o;NuX`2mXWhpir9w&MxXWB%<4!?Rv3#E-sKbB%oKb zw^mAlV_qiRb{+w4-^Yi3{D!S(r{C&`7>U!{wl=wJx>uyI%5St?q1jN6+XPf!szB-UXDM)x2hI_I zfA$-ciO@7yuKb5-0YrVOF$0|BYupH%&Z(oR7t-Yl!dJ8LM)y3}i*IE;OStAR6@m6O zzsTKuQvzTM+Jkk*q?6XtoZKWb$)LS^2$W?nZuYD!e z>+kf6LlI>Zr?YKQu}awFi*{-iYU=qFk&DUKj>Q~oKg}$4y$Lh(L}Z1l9p~K9zqMS^ zGrt7q`>33W?v(JgR$Ce%iFd%@6Km49k+Z|IMn$mM{pm|sUJ@`;6iy#SZo|v6K z&(5&mJlf8qo2-f?f~7=C1LGR|gN6<`Sh(zvLNxTu&|jrRk#$J}`wfd>wB$G2HKA5i6pB`_fmJ9!?l?~;*1hlUm(-%E;|G$1$#`>N zY~x=lX>*F2-V+~4_#XD0wkj5^4qqT81F&{|Zr92=$;$Q{Wr!oN(teudkF2e%^j{g* zF2gG<*KqU9n0l88yMlQxm-EHg0f@CF<#mfq8}9+2|P|2uy+t#TI7YDrq_{ zkc2D|{+$;3Xd)7_Rwy9<4F)QJzQQP^1&HoIg>zsdobWf4g2w%{E*Zw#O#bU(H!L9j(-#=`KRu+!T9emXpVIJc$bE*Oz`@!Qe_;&{)pqrc?>uEp zxoXNA)AOGWezEI0yt)1$@5*8mqxKwNUe-nn%N)XRZMcPjzjwWgeTMlH9kD%j16L%< zrn`C}fLas532D%GXB@~i6ToB(0QsmwozTh2l^qA8_8|t8h&JLsjM4j8LQWMVy{Kx- zPP{p{v?B+B15Ow3DG9OgpKpoVpk}mtG|KCZ^>vdJ@JE3K^(k((PpwL9KA5n?Rf&rB zHv^LEXZUp){>u)Tz|grtPxgjcEQPx0M{-?8|9^awyK?KT95M%-J{+O|kb^VoRCS;T zn(z}O&Ac*mxpQPu=N}|$K6S>0V7BXNPMjv;J6p& z+fX_d{wN%-)SD}GbYlTNa?hznc+$1xUs{jKkO7PL9(fC#k4z;K((z;8E$6Q$DXH-PY(QL35vI z6SCxj7c3pc%RZ@?Mot;PvWeyra{YvYT}xAe>ed*06C)x}o=^*a)%v%9bCJr49g<9 z+4jKg-$8rUk{7m@DEIR5Zx$85ZBtSzuPaiNJ9*}cDPw_QE!`ys#;+EyhaWE%6|YTR z&)Usf+I?zE47}efvN;X-(`c$wW10nMh(vFHmbwQ$a5m3G)Tb^BndB zjE>2DntP8Kvq2TMVymx~{4EViCsT}IbMn2-CJ6QPmx7(Toyzmk^UFWF1nx`@fU8*H zU5dBlCQsYWKsVUB!NqLl+T&7{2`3**p*TB9u{VT`idVYllnKYn-pP*U%(*wu$U^{+ zJR2fmMxL<{#&Q*GPbPf>cKsN`7~UM9Rn8wl3A5vWwm2fmg9cmR*X_SBm=t5$7s>yp zjkFptf&qnq?RKOtYh*05ALf8(p=vfgbMjMV)h$&IMEo7(ex9rCySSQXF?+4a9|-)4 z?Hn1!Fl5twc(sDzh$OLvB;9FMNar0`8R3`)oQd1A^{K~iSE4J$Lc9Vywk`MBN}074 z)D;PPXNZmr@%oK^3jiYdM0`Zkn|6rWR_&!GeU#loj+~!}39J1p`8?3@cl8_f3A}#c zzGLsSdqON6>c)rkk+==hQ5;`sXLQA1~AZv2+)h~;YV^T8t7B&q%glnIpc8(z8SYO zN!+UYLR1&*D_9v9BX=JXS3&!mPWv5Zq6B&mu|=oglk2(l0EnTHB9Zs?wId)%3bXCe z{(WoL`t9~Sc|ELfCMi=1%RfY{DR%XIbIvZq%KVXCr+@*}7oy8MG`ILe4*9CW0FdgJ z0X7`oR9aOZp<3aU~!P$-rL;!+*vWmYvD~r|APUJ^-*j;6=#y%~7q@7ija|tk+2QHwZsR@qyc`&MdD! zsMt8nz95!~kcBC;zM$BO6m+S=Y)_Qkr2cb6X}AzdN>+1q)Yx>W4yJlrL1R)?dh1p9sQ_*=qm< zt6fu)kdQ`;6XmtNlj|C?5p9_*zolg+>HfOL>VQ|r@2U32hkUguA81iA4CpXQ>f1K- z;s^6!ku3&*ff~C_%;mc7Ve3xr0!DD_A;KKb6;e83F>geWg=%ERl_|FQyn&2MB5wUl zH>g8lvZfX+x+6?b(r1LJw^|3l2@=E;! z4m6Kgk;3H^p6Nw$$ZMdcTUZx`y?EzQ<9Y7juwZb)u0Z)B;J4KI2>~-@nels zgHb4>tj>FSul&3FFZ@v}5}^hTFNa z%gUW@auKaf(zKb@rIR|`*A_^(4lMfa+D5xg1cP>t;4qcsl#Ry2##2UU6Kqf~f+MqA z>TT|O8acs_kYQ`Hd*@EMV**=g6ZB&Y-~5xND^=f)T1z6%7&kNf`hao40Si|>}S}Na)lbK&0WEy zPy}&qr{regh-nsrzdnK07;!Y|vmwV`*3_!pKmWd!&Ea2SyMaO&iu`KC%WRG)|G>QE zH^)OL9!6a3;RgV7Dz-wHbY_-nSBS>4F8k}Q=Qx-83h7zX2&@HfI`ZaQKl#sn&EE%q z)6VZAG1CK2BPSl9vog~SR9`hDl!6x$CJoe3NFAa4UJ+3b!hfL|=SI;vf%mPi-yz(G$O?P4N!PyQOvzkwsVz9S0<$qoM zMDC)^skhj(7_{eEbOyfmc#_GfHA<3ojuWAaK+{dF)Z!vDR@lk7W{RU7y#a@Y8lar$ z_oP=QoHpKlBC7jJ_CdHgA#6KhwBmvvcy;;AK*1MCiomM zWD9Xu?TnetoDA3RJn-RoS`uepi%v_5#H(YarHI7i)w}T8kW+cI4qT$?D6-NgY3+C} zgQfKUDG^|>boy|XJlt%TI6s^F0;z2%)+wsDoGHwN;qF+!?T_@8E^@d3s-nqeiiq z*?FTFG?M)@OgQyFnaPnK(Hy)H*BIeu?v-uz%yKI)G>o44Qme}(rO3lK`#wJl{W7A1S5i`Wetd_CdY7R6+%Wy@EtqPZZV!56S}tbtSY=Y1#njI3F8tBj zP^GGFfB4j%{{T-P$fkF(4f_`6a|yHArcskv*(q!T)p9;tOKX@-vIu54O9!s{P3%v9 zKj^+g*x7hJ@>*ZCpX$p<8hF;e?UUJ-Xyt5OLdhNXAI1||JJR=DE^4cuujnofF zU=BuqIIOcf84jvn_Fmm4c7RSPGgBu#R$PR?UpXn)_5URLL_*`S>g~cAMR&-*Qv53L zju@Bc(5!zf5HR=`hO-kBxoE6|{&HVjtxBu-GX~BmYU*`I(EOjv!+;rM8HqZ6^@iJ!LW!Z?TRFGv2wG9DVS`5HMPe(N6$;Cz# zvlttdR3T|C@e>G!vcq^nb6*KcAX`k@18=N5gza_4PAymLcA^OJ?}GAHHXD182f*#Y zn9ZPnmHa-?+2c%qUt+2oO7`x&YP=RDDr^6|6W+W>!$TFaX+}=iNOSwD+`+^_@8cqA zMkE+et4<0b3wMBL?*W2}j{iFfA4Yur$7GI-<{yEqi;EcCO&CyVata;XZ2S4(?ect0 z4(;N1ps53wjh+6pHD*zPOD|%ZGs#}2US-jMvl(+&Y}&a@6FDE$<#yC%-gs=|q-dU-p^chBTn;bNlu8*_zEB=tQ8x7Arpw|X zN));Q@h2i+Rw1Y{DY(dY!Zv<>X1DYFOjy|*n9N*gq!>;FL-unH`!ZPML1>Sb_n$J| z+Mj)oj@&C>W-9iv`jwUUO%deM>PIEI-)w>FhEwwls3@i~2ZloHOasv-_RH=cyPXftz3i50c+H8;9@p_o_u3uz z77cn+D388(JIvJ^%-4x#@qne|QVZ2}UNOfJbsZY06mB1vn-r=9R!w}XZwe{;$eoBt z$sUDilG9D>Tt2?*H}DDD_QM6QZ7h8ZsAULKYA4nJ#?S=EtjG(Z_UK01zXh5GJ}&cH zHa%s4{RS%4c$swWOr`DIXmefhYNOY{xDnJR=v1p@su@E+#g9} zjCi`g9D%^^O61KDbC}9nVi#TRWAzC?SX_Z8Io!5=D36F+x-^Zb;&g)zVrjnyDJu6b2JZYgAYZ@{&m*@84@k`?$hV zF#Lq1B>Qf(Rp@1ckMt#EOSUDQsg4~w-3Aqh>>SeinAYf;2cgJx3*z+3;@QCMDZ{7m zbQ}!$;?B1w|AIB%a&#jx5vk8d&Y7quidJKld}Y+hQdeJ^&~ROnKQizYk}6E+WEcmD zIF9^N>7h;wxg16Z8hv0JQ)SV*tnsxVRO6#}Bk9ta^{7XnKt*Q{-1tuG@v5EeJLXRu209&mPJOkX=!#I2naXOCWwfYm%X-&Oa9ysG}9~dxQEkxX*hFUV@ zAo+sGo4^l+0U`h1;Dy*o&LmXHJW6*xDZL;8th_8u!&x27L=4p7xrMcZt%o{9&<&cggS(J zXOp3mTo=W#sXJB$v`_dp4vUfq34G8yvxuIj-*EF!zYw$mK_7D6)P;!|K^&E8p4Uh| z9#LW;DAjM8>{`h`mhJK=1#zcMgI-dG`*gKp?4})hUfo&kqpo;wb+oE&gDf0481LKM zB1#JD`M`1OkX*wqKn2 z$H>-169MB&2d4JkC0H)V=3U_2wN`Rf>TP#7y^3el_~YLdF4AKL^`D8-p7xitnJNwt zDRBh8n$pU4Aft{3*}YEINH2YO4kX0?z|G56Y@t2%69<@kSIt?s4L9%oB(+7!GDex| z`KO&;o8348yvvPeosJjaXc08VKDJtM@1@6#j3lm9QL4fH*b5SkToGxE_c(FR51&tk zlcB5G3&2tfiwcsEFXnKVVP%BvE#6Os3oSNag=L?ey-wm{vGMQ!8-P$3AZf*O-bX{Q zpj-&ji)JMh;GuUd_b z_BQbO-J$5w2sYpj_HpUY>t%Jc@FUGIa|~GCxTIeS_Nn_K9tU36M1)Ya`GM-t_MQ%! zq;5M9qNZF}{mJq7(qo9gmp@D4A##f=P>A*MuiCR$c_4!8jd#db)FGhX#O8nEMC=r> zKH%(+vH|I-O%T9{Sd$3hSGWd;$R;gP)JXI+e-COZG7@}WP==hc$8y$(Lq59>w8jf7 z)DXeWfxt#G@2ga0=P|HohuiiN83@4|m$L@YLUtv*G?_M0uJZpwiU zdir4_TIExu=571?i6+<(&8-Zm_Ct~b%uicH%6S-8A9tf-a85g!U#w0|Yu;G|ZO*6j zh)J16x4CR0r3o~!DQCEQQ0{19t!;wjBF@ooHG7u%lsqt73hrnU>qZPXijZAX5 zd(8um09`$V2bReR&Dioyq!}<#m<;F~A3w0(^B8G+f!qsZWal>LcYU5Y124lwuBl(W zLK;zQWtm)y^CEdhh)cR)00$-NuNw6`r~hWR^F1 zLFF9hg-O)e9dT#ziC(wcx%H+QX^Kdct1B%ja092$)snTV%_jX1d>{~4uC&UhA$ja@ z(V@%!f`)iuu>n4A5Xd=vt8PF3FZR`a11LjfkmjES4?}1Y1e~Wq9)5L%KtIvOfSBw@ zzsNp9aV9n}d;8LcUGxCdt-@8#8Bis~7G38`Tiizk+4u1~f14PL$(46{U3aK0@pcwb z7z8xnc?zp{As`y2u1$1Bg^{8L6N-`I5;a70R3GwB z`owR|Z;rpPk%vMM#VO=|+_j+hu))Ju_|HxSrLB4iv2Z*!-eqG_XH?`x+Fu}>3Fp@oTFp3}?4zy40T zBF@&X;KSA8@{3-a{_UH(z*lKpGIlwG9btvrj_r=9ZFt&+$oRe!TuS)W$=FF ze$-SWorrO=iU8LAm`}?{;lFfmiRfCfpXzX-XcAx3s}P#{ydIPc)t+cC1q6<+klFUI zuKHU!N7%+Hgmx6g-hd7`@W%L-$?dBZ*s=OQHwN|sI1uI+1bND~5&b*8WGhN3C<9W| zk%|!ngK&WUF49@dF1nu-q$ax9^^1)>!$kDjn8&ve2un9O!mdRUP87UFkl@9m_%sCU z-1UL^Yzf$}K))UxvOFV)fgRh0ymtA=ijYqE$Cdm`ULu8)klm&7{c5M^wWfe+sBkixUOu%d($mBx|Q z{PKSW_Gkp zorH;vVyDe4djGB4S}ew#`MbqB;mULo5#G8BE*6o_-I8}$@~J%6^HX4wRN0hW=ERx( z$y3^=00i^>ndQp%$>Yn`wPhcqL{8boQ>WWzK_!^YY6EWkS#_(=z{1lPm zt|LeOPo^|qW5^!^*1CPxYrsi-$DOwPBnmU(OOiq1KrPd-UvTEC=U#At`16KuT{2X9 z6__BWeO|2ZeM7)j`}yOtu<+x9#BvC&XQN{9m*R;gRNmE8@vVerq#3$y;4G@aWS%^K7W{Q^`+l~V z6tJ7_iDf0B?Q~v@n&uCb`xkS=&*NAFNIO(lMLp*DNxLVH+duA$q{V#Gl?C!{jbZmB zxkrc;bc3UDnSfCO8?hwT762^x{w&yFSS{h>rb$q=rs<-d-a;^3X@h1IeN2~!YEUVM z`kj1AFlh?K(!3XI1o`(f6(tVh-|GIX3UpHGN0?cz9@X|(7T?!W;j^ebmkA31#F%LK z;obX#-1|yvnhusko|!=E{l~UyNyma`ccxR}oGX_~7E5V7JzDA~<1G6U%a!=rPMNLK zqsuSvz*D&kAz0Zg#9Q>G5#e7{2DiHqqmlj0Zhpk5`P$mub6FJ8S+De`_X)o5Aiw$L z7fNjbUq@UDBE zTGAe-)`es6B%K}?ImP_b$bf4Inx}idyLS)7*|Pw;Jw^!-!6vDQ)8N%c7ZRk5`g)G* ziz%)%*m?@J`w7X<_`_Y~xJMWBeSK7CP+OwKIlFGeUc^ABD52;A=`IU+XR@LzR_SjV z@7H49OlgtEOPhQMeZ6M#$n zaZL=P#J(GhJLg0xo_Gl`_1yAxW^I%VQih;C@}8T1X**o33F5I~MN)t|GW2S^Jlq8EW}vH4yg!($ z-3xZ!!nJLiC#dbYX7a>$ccks-c@x=Bu2385eiO!)q{4NLRrB6eOUp*acs}_}cW6hgl2btd=|9re+QTX~JL*=@R z+Qv$7rI+Ess`8)nt1n06FR-8V9!y#n2xhEre^%v{CX^Up+iqsz&^Je+@pcY3>#w=d zzvd%2fJ-FDk<~~}s!5jGi30D&$v%j zUff+}s{^oqUtX%*39O}CZ?QSM(*2?jBWOxg{9;Ug$?sW{4cEgwux`pPYksF0U|ufy zhp&6knR|Eh#iXH9vdx_J+C@^r+n1z&u*21|czOF-8a zV76b6Dk(@cDGXh_uCUbm_TqdG1M>z?8=j6oeSrOvw7v8G*AZ`5{n}r>UrA+nI?Xf5 zz6PLYprp*jQAxEzFw?X$r)=-+-S`YwoY#>htr!&dUb*aeeZ?*y* zyxCS6u<>MR4V(XGc+saha%P=q!shSX^DtoAf1ZiS6TW5EI4CC1L{h6cWJAgJ=-EhX z6qA4ADW9^9AA7?Z z%LgbhcF!Fbe&{DH~#obodoka-Ew;I+$&L9iDRD%z~M%x_-U>zs7U+tm&RuM)@KK9&K-by;U zr}Ls#ff(zShGph0LhL*yio%a3l)sE?T4S#z%LFZLPUeATJk4~%jau08Ru8n3q$4}Y z$%psqGOMKb@-x3Aj#=r-=lFD4c%756H#q;~{myy(o*CoWu;$bT&q0d3m}c9?2_JYS z)4Dy_1+P8*EtqpG?2-J!QS_mSHeWk=jJ1a(xtAm|ufNdQl_D;T+LH8Y@dRtYr)`?& zbLZ7U3lkA*KuYiFV%Ifu!!D38>5LK=T-)AfGI_uO-~Ig68(H?T0!tpB&VMmAOCJ+= zj_@bTcc#gI*Nh7O#udF_LFI1@F5|rwwR(X@14zkai_dbzP+IgZFk5?>ZITw_z3O|U zQw--^UNz;Uz5T3B=Eq8u;nYm^H_ZD=)ck50r3n_qsZJW-%4sc)7Bqm<*9m&k*CTL} zA9&?Zass^U13&lladzo>0EyNPjzW0pBnLGiafC+pL1kIv%?Fm@<7nVBhRAKV}1vpTLe_ zM^+}V2kNr)XYhYq9xN~-0bbVq@L4tHYbQ(hhV{bAL(iE?-8v@g?XX*pn@gqh+ShTn zxDDyT$NYdZfdL+YYgn}Sowq%mD=MbWNL|6IzlG!=8=Rm=-3rBkg2q4f!Hx}ObhBU~ z{~PJ9c9havN(o+iw2xKF`TDwg+kC%53)|cyLKi^2h!{f>9|y&%Yh(XogwOsZfu^LB))mYGF;7%>qA2;Ol5> zlZfmQ4#M{Ds=vjjlEv7iiw9BPb(Q{I@n0_Ck`-?O|6ZNT&pO^Ni=6&jq%I-|ek@Ww zaC3`3lwf5~I&dZ2?lepW@}n=DH;Hn(T~x+98+JXR9-%8ACA>M}QyOlZ-@!okaq!hQ zv%_5XN*jm&FAD~BU$CjSHJv8{25Y$A`Vh3CdWKQ`LK7I6~*s|8Yc^H3aka+m!F0d8!iD7WM zIc17SZ6TA&ccSGFy)A1I__G~P3Xklfn36Kc86)hP|CQY>Pa9iy! zD%DC2jNBfT974eBr-|t`kW~Y81APr>vwBidXvgP6Sp4`Npg8?XM3*UZ&M9m{PZXT5 zOfGOq?n@GI3vZ`mv|2t0(f-(F8br}jjcc7|PAE|qNbY3Dcc!ZT^;`nGpJ3rU?Y$s` zf@1`NtNo)sq0INJB87>WJH*vgED~h!K{J9y<7z!)1E0t00-N%1$w~p{m!N9@V1gZ6 zP|O#Amh|}h+C)Q7@)0hGKh5CBJGyP&yN*oT683i{R$PlNY-2PwGRau~v+GAFp8j;P znjw_Xlf?ckc{nsS+1*juaq`#KPeyc7c zH=I105Uv!Nbbai6uDJoy+lKsSZcj3&Q>#8QtMV!EuJ{`+N-dfHEJk-OisWu2VQF6} zwsV@+c>c8drq+VDLN)s!nR>xCoqqU3;01o6-`9Y{wrwTKat4DnqSp-l;eLk@r=dnlEeR8v=P+%Q~sM-_U4a}!Y#sUWaTJv$mpS4 zS?)A%{=-B177Wy^%IToq68WzjjhLywH2|^UJ+e2e2~~kNsjZ)4cIc{|GoAF`$Bo2*80-$_W?`PkW$N95sq8XGf4*+ zfB>IYTMc#}5G{aHvw(kXsYPgg1Kr(*)2~EfFK3sp7tI1G;0YSi66nL^rLUlA*JXrT z+S9Wx!pyEfsawHUk>iQJg_{ii_AZYxMi;ouBLd!|NZ{fy*m~$t}ADOXUlG?hW%G>q{#a#_!oDoH2&3&tklrYK4xhEf{Ln`77cMH!FUUKezqG9CB4B zF-+oL|Gt|6gh>c!Q#q7Opzn38*Qx^-Xf0dZg^Olj}<(fnQ8F+kF3ywgf_usHqA6DfG}y1=&AO4*%=6UXJR#;PT~hM1 zov<8dnqBQWl6VU}gJE34T7XJ`H2JyQw6}m|0hEmApJygPmU*}(mOBlamSN36GjZ*k z&9wjgmcPHNJ@T?W%5pL@MU0?ZxsbQ$7C(BDe;j7CgCX`Pd^f_TLkkmf$>(7r^85YN z66u%J+jL9dMR?&Q+nR!p9(>4hFHt&4OD>BZ6a}0A8|whLa_CFW;HN=WAH2a$aHTsJ z7`O>^`lEgI!O_VEt9YqDcC}pVVx+KJ9W?m6BAugAPdc*Rs;C70pvL+#91_{}_51!? zR1)Bt<${;aOqi;gCR_;G3VWBFF>3Ri5*8Gk0Sz6GQr^-hq*s())~`P2@d;0^4VI-y zAdl*U&)x=~2eL)yo{hluea~oZ#jMnRfTGgETaQFmIBkMp-kU;@WpOZ>kFt??nMP`CzGKpRHxfo4j%05Yu)2bCxlA1Vu+1L~#!> z>(ac9@dF6#TsV((_*8JSWo44x!MrkH9``2h}F9E$k zRlTPjMMX#0#vkbjJW>oEnFb5OzhJy|uJr&TWcIh^x8UP<4-2G6OGU^b0*L0@YY&~X z?)2XL=`X-SbF(}&lEI4a)A^a)uKh*m`RP9Dnlk%6hI*wv$^|iD)g6_P2f~OqRcO?| zR;g=Gj3)>t{p{8A7e67#D#BjCpe1T>-!BNwaj7Dy z`O!k7T<*HX&Sd9I43HykthrWMB-6%1iv!2Ip;+8eqAdN#RW3Ch`$O5B__o+ke8-uA zCNngVoe*kF=+i7cC#P$k09iV^yk ze{J)`lf7KToE=tE$K0eYKf-U`3;Gz(1S}b&A6* zhAA1Fizv$f@$PKsinZFuA@)NE`40BA+Eg`*oD;8zV1R^vg2kIYOukRZ0^}>NfNBPq@dnJ32~K(geJ}=3NQuB+q1m|(&uE5@ z#w$!;I|8fyy<0@Kpj|Q-iYkf*8-+e_g>x}u zMF`#pV6MwNJ{U-S1!nFMMtJ_Na|nKqNJ1D2Ty6zQ>0UVPKIK}2d|%|+_a_jF<)>!a z_Ie_f8r!@dH9CjomF1P0%!z@$GUo9wK0qag^Mx^**;E(YSxtQTkTb! z42j4pI$nNzCW+@j#1c(r<=Qlaf6+LIxp0=q8i*NFV!YoWutrD=WbHNXq%z(VxVw?i zj-Zji6)Wb0zrg)wD;8x(rc_olJG&q{__A6zY)F+*yB%8KZ_HLtDDCN49w{#97Bx83 z1V!@sm*`VU{#?f9=U1ZE3(2MYxWIv+9X^VZ@AArCnL@8 z%bU)!P7OX6$8u^9ld8R+*h+XSO9(5B?2zsnqF4qEE~rw$xN`>)QH>{peOGt7z8ZI#7XP|u~|oydQVqM~G}Ef^;y%cpOb zQ~^1>te{<%HFLSkRhp8n6`*^hnl*N#<2}BDL8W?rcWCxDXGgoU&2wW<215pl7^b+Q zId-$OI+U$;j1+?Qg1?tkAPCVZ8WO?owAx=V6M&R$WMjgi5DWGxE9l9?lx2Ot`NCYOuPWBNcc zjx6&OAT}~v;%-6j)lMDbhRO)$nD}z>r1IHrBKJ`gX&@7*J+Qk;pcV#2j2v;N{~TDK zUCOG$CC@DietR4DcQy|oo_24`B5`qpKE-YcnYd#ZX@l|m9JxHh0K<^7T zKT$VDjy+ThrGDXA4p<{H(}&^+hpGmy-1YCn;C_xgYY!BL-or3HhpeGb`s{E3OUZ?8 zQyU_O#KbA8m43wxQ!k%WjJ5eVo46>?pEXT=ijRtpQeH!{lQk71U7nv&%OFnBJ(qx| zK6P|2;k_5Vzf;JElOiAJdWx)hZ+~3t7)zUL{J>onI7V_#1i+@UqV}i|(tc*P)+T^M z`fhICoLt-IIJC;ft7cEuVgs4O-Hv=a;<-lSfIRA6#0K3z#^x#?S5^J9E-T%plYwm5 z*7x&x5;~7%`J2g6K05)sS?bE~NU7+8-RdsppQD8zki-vCpz1%kezbzbsDD+q%rR>) zu=1`6xFpP((0~sgQ@hi0IU3{Vp5@dCE~kdpZ01bvxbCQpXl`>JIj zaT$~I^ph^2Z9J4bTepg{<-76uqp9&P9PI$^%?MHQlrAJ)7rAWJC{J9qPRP8ot|N0@ zV=YP z<*$b=8^(Z5QN2aM zTH_z$E6(XJJh|69NblF<4qLlbz<9b@`Uy~4Uy7QDv2jVNP$WilRpY6gUrm(E zaZOEkS^7-MM?+Fu$(GI0e1;uZ^femS-$Kc`SsZ4yg$8TKAei@-u=YS;-GgwH3q@5moyqNu>q`@0VgqZ^fL zSP>BBe!&$W6I0oUWHiG7gZwFq9U1-H-iH@K=TU3 zVAXTxO7kke16(r4v8sZdF>HYvSmguH2plwrr^3`U(sE7lS5)p0!j$^3WslQHV(w6= z)cH5iS*MOhDdC#R>sABC>%$QJfZsu zclpNOkbj~$4^eP@RzOWS(q)z5x%PQ`X^f^Uv68s`jR@mVbJMi(G=a^Cd*BfK=JEOt z7HO8TIT5Hz8g8Hgh?qMcw3)b}mlo%v{Lc@#UAI{gM%EZ>N}n8d4fDK4)Or3Uc?PoW zZUMzh#;?-)@72BkPe5ojlUsRxp)CLu-#8SF{||LA ze=)Xm`(Apd93j^!Kk_oHEV8tm1c?^TU+)pP;tNoXWRI41aIc*~ez^`}!K0qlz&>B% zbZZnS>+S?n^SpqWC1UE3XSQRzZlqgu)ph&B^BmR6+7LdKZDR8!^n*Z}B=KzcO*HrF zij7;GZiM^zPlSD59HN(hsncKmodda@Xk6d-J?!5)d=Id~NcQQkly}Gn9rw3(xt(_+ z7=fJ0H;lSAwtLY(_BP2a#jnYAA}scQ#%OCW(6-A%818k7 z6AypLCVfHC zhXBt)A{oRQw#?0&1|b~0zq_BFa$$p0yX4b^UH-%%5XiY?J zDE>!~cl9?Hg*ae{)0Sq=LAlLG2NLOP5HmBZx`;^yHiO(QhletWN3&Guj~jIp(ZuGk zrd9RS96ym9VPw6pE$9}G^6|pN+;c$Z&*&fgCaqTY=9eKyJ!|_vIGb`k_fJ<%)wK^0 z{i|AW565p#S~%}k&&f{LT=x~nTp}TsbCj&^aasl`=PJn)VPV-D_#OY8z<9v@lfnp; z%Y$Y{cb1PQF{AERRXM8RsJ75)hoOGjqio57_6Y@da_Li$Q+{1iSC#9b|HK4j=ZcBM zn|=`Zc*{T2do0~B%*I2NojR7@La=1%07ptL{Q0KwfANAx$LCF*9nR8s>9@7J4*iLx z<1CGuaLZr#<6D-!W%4^lZCSl)4_3H73o>q;)@=9VG<=qvtrMEryjdwO$X`R@{yzZC zKr+9TA#Crt=HBnLy-Kg`v|ft{MC%cSnty?9-=}tij$KQd^r1a-lP^|hNGT+)wMk5C z#{k+c6HwQ}bF(x^^UWB^kn5N*E}aU?-*(Sj&|KM;_R98?nbRGbBiFk7`Aik1)};zW zN8KrN)ZT?XD}jh-76vUUneXsM`LY&$Fui<@hHKQ9MAtd@9Z}q$q$YpW@UF|4Du4Cr zWFGip16QsuJ9KJp=rv}BPMC(i&;!ezge;`zT`F_8w1sk|QFFenDnNnoWu>7f*%4T$ z`DFSS7?tT+8A1ZYhcQDL&NoBo+ESKLai*Aw_$DxSXNt@Se>GiT|4XBQjPF9r@Eo7e%Yge$vW#6nl1*)WFq`tzAU8m?BF zfdpXJiQ217tmfT;C&Q85FJCR@xrpm{cJTO<^Xm+ zcEuU250wL;rbQ}oqqu4?6imXDkBH9(8vl7P=$;3{061lu`%{`P69?9<55mcjqLQ`kGp@)dgmdZ|6=jh%tDwDp_& zyYRL&YAcTCFdl50=1~*>Gjm7gm2c09+cTCxpuaUhU#bTaI`%6DC4Uu@IWz+XJD+fb zp0oS4LyrOh!OlA@4z^-R1i+ag5r0HYZ0nv74oSJQq70AO7R3P9KSk_^`dwm48s3$|YzvrN0sawSrMC&QDAn zMkj!=O|JQ|1mlgTL$^mafLGl4sU?kCilqzoJs<+oE5@qXPx^1&wg0fX#+d(wl0?@y zY_*^+Yl9VTmqkjf(R>6YO(d)m(;C@tnIjoMZ4PE%u9vsr@P8I@yOoxZ1 zz|>w2sKG$9hh4OLHUF??4rs-E#wiYtcII}COPB#5j4tLHUz*PkGPrvd#+qDxWLWzM zbaorb+4i; zdasV_MV#c241d-JHgU{#fK6+E4PeLEaZ7+*)spQYUH-lj_kpmZBCBr-48fdPJ!KW9 zU6ma<7>>(kixw9?N{|f@^Oj~J)FKC;nFopsic<#zhD1h?!76-NiVg+aU|ySC z95XMWc%tDO&M`qr!>sD$*zUGu%Op%wf3JKmBq{r|gj9WVifr&A+ zEemKK7xK1tD}xhY5a`yTisbW+KE>nzur=IMY;ai-fzspublUs-`{DRM2Ya1X75`@g zPkHfw+J9C2pDO;(R>uEHj`@2ZV*haMb>^IlBahfIq59+zZxKD*(1SS?*0d%!~RB7e=xp_52XIcLy`Ss8r9`}vD z;}pGoEhdRi50)mR)$4R36>cqG6a1hiR9F3to@ybhnvE$*a1tfLwR&IM9Wkpd&Qfxp z;ige?rt`Y`MAH#nu=-qA-_?F(jj>l8sr+E8&uw|pkJ7B?x3n}VyicD=P3Jh!HFw_c zTYs*rJ;68+);0NtAgO#;fKvQ+p%d&33eVXD=bFeI^TUWsOp%y`=fT(XDYld6QF2q7 z$S?tQ6*ohhO5Wp<|Gd(&3!P6hX;JUf&+scYP$WWi-R)F?y(($9%HFTycC5HPD{j|{+qaT;uJny+c29Py*;l_+&3|(5 zRl%7{*{f!0n^jCJq0MThZYZqL<)RIuJ+IGa-$l8r?bJ_mQhcy6-K>-R4z`2!LP}2TXdRC%rgxx- z?y3uS)rGt5zi=17$$xy^j-%B@x@vRDySY>s>8gu#+oGXt*G0Oxouj%SS6z^+c8}_U zTy;UNx*&Il3d~oozf>3Bs?Ddm_*Pwft1iA(7vHLjZ`H-Odv@`ydgw{J|L5OGS*?%s z`+x10(b@~$|1%Ev4~**m-v%D_{$F){ue!c>udeTP>YY}3*MIj|l6z!*8r#u!PG0st zyguojfNUm(H51^O;BNUq`v5FK1LXt+VP{6PU{5^jeCFTMgWp6383V;951j}wfG;;B3<>%VpwDymG zHa?3+0Nq_^1pjhI1AFLpYq!TgeO%BR_|dKHo=%wFNG*0B)oyuXi^sAMh)b;YA_yJp zAOPZU!t7=}>vtasL)4=5nxT_opx4?u=myVW-A(8_K4h`bYaLy_k%V1)^r$BO_`%>h z($J3Yc7I~Ub_;6eI=ZFBC?r+cvFmj|i-~th1qGdQ_xASRE>vlJ^ng3if9LLEv8&ZO z1mkA`^LGsDTaayat^0pzaB~IMrM9$M`-z5X@41C?E>>S|P{8E+-bjw-<%i>!CvTwU zmkYap!N0PK542ZY$-?XPK$$@AS{oP&`*=Kooqug?X&10zYRB&+>v|$Iy$jgbMi%w} zB=!3ouMA^DxQCrtj0Jm8MrrZ|UgZaV&7c60ANFI=tw8Su6%*Muqg_qMS+TBx^|9;B zmS$b|Eo%UJCA9=PI1Nk3B|V?m*RTnOctyi?`j@!qQ$N?m$oE}n^ly3qlc=mXm;7=u zpMSJE0QXz%(EzogaK_>ZH9zZ^aM`0$V2$DfY0(^jYRoAJEU9@qXx zzgy#I(=g;!+BTH7wIBc7jva$`>S&$p)>N?tSGePhx?^k1%+62{CZkS&u$os`W@h#;>kg;} z!1C!eXK}D0*GJl`*MI-@XYI%4z<;`GPUgU~aFf>lEJ-OumqB(+`x-Ccdd_re`2&La zLI&h^jeTaupU)UsvW;kJ54trYK$SIC1fXKXLe-;`It8s`el3I(J{bNNj9AAXQg*3- z(Q4RNl%m-JkJ2J1npPaqj9~xL`9K7;KWK)YPBoGYqqtM&Q(_KL^O;UPLVtW6KCr#` z5;vE+v9Hy{(Bh`T|C%~zM${ntO$A>ebCo1WZuFGpS?ACE*24n_gvo=OAjJxS(j*NA z&10T5y3t0C>-o}Vw~H-zyLu4xI1a=>|HT@k0)fO&Iws))hJSV=2k}I6L7kFALRfG? z9R=a@#~1XuTWTrdlxKEFYwl43Wj$V+vI2JX=UU7R z@o`RP4jqA@UBSbS%n>LWKGp;LIt{x>IKBSFMqBJq$^iq9LdKxT8ai0DynYjkH$io3 z44Q#+h2W>}LlvE=M_Q z9R)Pi8`$n;_w)41jel%m=9f!Q#z<+X8H?S|0YVMgAQ+_%#xC?VX~!T0bSVw7U*4os&?Uw2HmHv_!6)@`xZ!MZQLxdQOS93U?RqsL$?7X_e!Cz znATEhyHA!^t$%(~O7C(xrJhT(Rm^)9qQ*vhm&hMU1k}ISQ_Ho_CnoSn5btl$8AuR? zXc45Lr>%$o_487VAO}+#GO(Qhv*bo8UqjGCw23XO;$jig+!62>bOE{GyGb0ja>G|5 zYUo?_&otLsa5%mK@9))mjXKb^@4A}oBmzio9fmYIKSnTH^dYGgKl}O&d&dfP z(e@rF37dM?P~Hqj=6N@4U}0W<@P`p&0u=2_-+x@?jNtY*bUFaiEkd_=9GoEix`w(u zNHp{d%j&!*dXd`ot#DQ zRQ~2#59n)bPl`Q}lXw2D@tHLkSc7Gp!P4jdpxth@!}H%ZjQz_0YXeV?`0rxs+0By7IPgXl z2flJ7+e$~WFQBoYE15TsIFlLmR=eIV(V48|Sn$C$7>ocfzG2MwnPv4xjx+7*`i^+t zgT-w@#~^V(ntmBPmb@Go{CTukJGNXqT7R$;Td)%?xEEV+FIsRvw&1=}aBNQOAz`Ez zu1q^uLllUq(~has&aBmmsnuzwROorucse3QE)GWaEv-ioy+MJq2XXcJr##hr?)fCG z3HTgWd*XOKI;xMU3g7TkQZ?(^j-MI$NZ(Sy26$3tC;?h{y&qF)zZooVPN#8j!GG&U za1Fqlcp#!haUOvQjpG^?-x8|CcacyD1&^WI;y#|?*KtU3W_ITKfc?WxBi`gjLIlhj z3SGh-Ip&~8tSUbH15-({6#9rM-ADq_>Yiqv;jJp)KxGs$P+{Ag)G2ReaxMl|HYDZb zg;BiSS=y2o?YtPMnt5*0;qDy*On)GxfIVO)z62c4#x{}7(Uq|@RIxo&h+H=!Gh+46 z=96qTKo{seJOGi1#>$2^aVE5FfTDpylL5mL*M)bMz2u6WDedy%xfjlSlza}fm8>9i z@gMoK=1dYvgVOkt>>0u`Cm3?%xNydn|DUA?f}Q0a2Pe1!Lm7vLuqv%*c7L4$JxStJ zXxG)O$yEV_D>vVDIwCx+^~IUlsScEIsxP06CJfhCI|28MBa-hzJU84vK_s2|@T}k= zijT__9+e|?mNb0s&YsMit~Z-o(Zu0?X#1FD)RxN#E3d?<1k6dJ4O~PCLxJ9u)?g=b zZM0Q3!Nt+BGYB*0Ww0iiD}REXg1e;(alTD5&-f`shceTpAS6OQ8$?g+fL6yBw+EqL z7s)F*Py{N|z#5)Qja%Yp6KDv-TPg;ipmh%AXIdb^Tm%*F?{m|=7`lWGRGBw|fZ$n?W)XN#DBYqfqVryD1^f0 zCgYw78o$pibO%XRzV4H_A^bQJfEAxtoq+gmvZQ} z5?ZeY0?RmpI`tMUY$AAhHiFH<+d@poS^Q9n3aqY_yPiO8Q5RmCTpDA8M_-jx#VbT0 zW$U`WbV$x(yt8yJ6Mu*JV+sohs1F0aJVg_J29Cw9ByvC%wB;i1{Hh_#8O%w%v{68- zks(L`6y)btabtP?s!&Fh**wIsefvsi1^TNuAIn{tN#rresl=HCU@p#E5ZagymjX3P zh&dNdL3p864&IVWCqu{(M~(9MXll+pBT3#MMC>9Gb~)~lOMmasg)=$@Pd<*)W54q5 z(MpDF3B?t+$tkjl{WQ-rD~fQQ?uFUjKRBvAVn5vZIJIW*vXh3logQmHrd8?Dkz@|} z%I_md&MI;c7LW8Sa-|AKhF-t8JRaA*i7aC#;n|F zG7g?}4hGfyBw;&K7N)W-ZY^ck_DWtz4{FjC@&W1h532Q)i2Gdg^$2UA7w*uWiFc3V zE%PNzq_ktll@l(C!5LTG=N@oR#cI}O8CKsi4~A{{VV#{>%|r9h zIy0UQ2QBmP?3vkb^#`W)wEygIe{VQ^x_2-**f;l{b`1D7czXEsVDN0Ob6`9@+k19+ zHhB89h@;G`5nUpsH;>ES z#{*nF;38e|_WZMwcV>NqplrxIbDh!LThsLV2QUx(U)97Go0Pn>tL*z5m|8^wuieVu zN5-O>-y+kJcX9=wrAk^d*A<_L&O!gMZyX-(AAk1SdqdN(o*uM}r~Rj`*0W*f?Ag!khiH`NS&y;=ZEJx0u+kdQy!Id6(rM zVEfZ2A2iS1CpjB@b!0Dl{_jx=*H&@csxW-_}Y#t7kIF+|s5oqg53 zIxqI~Zl)Mnf2^iDC{b@~SLa$OxGpO0z%-A6QJUmTU$$XW6cZ60D(hyBNmybAnU!=M zGbrw=R5O@4gZ?CB&7f=l0X)?@XXej!od3Jcr|nL&j{m79ED`5f^Q4%)gsp|-8GqC* zOZL}zmc6O@W$ja)fpe-KX{Wk*sz0eFxr|9BRU?r9d`W>F*(ZOjvYfrf&l;Esmte9wZW)H0Fsr5f} z`O3RHl%zntB$5)$VjOYd*|;)iHiqL~7guvH3Ujr3zfhGusKPE)p4M)y$yLuDEGnLu zKHFKOh06quW{Ax0IC^uwbaogMwut~v3m>%9GRTk!+?(;4GqU@s_Fz$n-hVJ)K}2!p z9=&MLfB)0#!KZWfThr)o?hY1sr@9rf4{G&xTz#$nBL-?k$Fi&zm7>v(czGO>45=9X zg0@203I(@}g4qdFlh%G&EfnfB+Q1%`^&3(@?b9C`Z<}{d?_z^eVncK;j2<7?*+&R* z-oEPh5scmq)CQdEp}!MK3V)RAaWCZ|))FkYo$T%s#z%t3iwdz{U5ivt$IyOpMq2c+ zYCj&e!6K`n+9i9{vm{M0|P*F4m zHmW#QwG(wstBJPJ$1I^q+_=)I$02|-NhjA;h^$>N@oOjb>t5>DeSKNd=4lmcj{=z> z6^ac{M2Ag;Tm}P$_J3p1EMwx^nmKV1lYXM1+AV^zV3}L($$6vE(07*ONGwTfYHGh& zE}{MBKTrlBV`b=@AILiRl|IVowlUv05+m=GuuL&uWBnqGyan4a1r_BZ`cdu+!I4K- zLEKDX@@x0P;>ot_-3+6OC15lL!s7e5|jR}B8 zHm3iHB>!pETb+8R#NkLY-P&_GjCgdjg^6L=V$$K-1sz^P`OA4N_~`( zm#vE;^|E!Dkh(&3XS#fCOrpDdZQ%>IbOS@jiLDHBeh!KlI7~M6LX_T<4f=$u{Hc&o zFc0y`%if3AC%qHwge!QmiyfJ>m+2tSW%}2Vdd^Na$tu1x8FWI49kC=*1l26e;asm$bXE2M={&8gNRZtbuJAWLW8^*dw&TuUKku4!#W{K#ZkPWK47UYhsGpy z*4VkSa-wV;#nd_gNW+kz@Y@g%Tlg)=S3Yb-lX&={l9T&$=l#Crx_JTRY*2wyyjcgB zvbRJibKCLp(1sXau7jKidk!8cFg1#u0Yp@(z6m2Z{`l*QH?Mkc-u)caqms`Kwo#+H zUw=WG#vXPk5tzQx2P=K>KI()2J^z1p z{7Jxm-PqegT`*n~f{i>y528X{ox5=8A^nJ!GKdEv1Ba3mrW8GCI)}A~QV-^|SxH`m zU+ zmQPk2gcdv1u+vq5W>+|4;RZbGzn!|LuReV*KK+e5k*V0{MM@nNhib`zdCs&)*MIPm zMir!g-3`|8XLI97TRSYVcoAo-H2#_0j+S=eHl~ zpCY9mmxcsB2rkzwg$MK{yYFaVW5~n;cJ(L)6?m0cMZ{wXR!MMT2N?j?C+RSLgjWp= z9%Y{gK`jqR=s{yWEJ;!djE$G$cz@dZf-bV9EranOH^jnjRMP&>Ek+EE}bS~zmXFB&t z=SO98Wc9cjAJ|XCwG28#9mBR0Tgv~y3dR}{kf-N7Or^_fr5vR`V4?49*ME;;_yqou zsZt|1@~*FGuuC7BaHvK2U_WxA>Sq=bCJ0V83CeY7XO4b*pr1xytf>>W+6}?*S*zM| z$|2dhtsTOY6a`?={hVp=;I%)me0Uf%StSA$GkJMtj+N2$OWQ+#hV{*(0+Gf#%Qdl7 zwA5)$?VQATd-)r$$rAh^LVw9LX~?x~G3JaF=X1Dn=gDt3X0^@F<`Zw;%SH37Y{?{l z#G8$R#@9kV*w(Wi)3}6BP!fk)&4;;s8k5~DNJgvO`klp0Yz*yX6P{ofAQ;X731}|u z;YP17y;ret%_<~E0g6=lMz~kn+0HGtrNu0-^{dAO{nw%%fAvps{eQnllsO$)*Lf`g znfm`hC#?VP;hn%r|6l)8>Hn4f|E=r)2K=wRh5A2+bjYXu6FW{c0kE%uN+C;tUy2U; z+?7lNBuB^=+0mi9y1{@;cBb$Ga9NH!CieNtt}kPLPSJ{EVp)7v!UKtTV*N`}m1qR< zGN6L_)#N>XB*gqS1An#v+-RHW;K zz)Lls=F3&+{C1i6d}AO*|@d}h{VJrGVs(F0ymg!2HJL`IlPT^*~Boax8eE=t^MPll`!)KjR^jbDB@4ZnG-oJ;O)jAYmBam zmqla15*Clwvl*}jVER*F!Jx*@oUt}Aq2T05JEq=vCx5zfjREIxvHVGY(NSp@0f{Rs zLjh!vm8Thqp>D`ycWiHgyDlI4Qo6=nOK0nUipl@3WzPB+<;wp?>u^6N{!^<{$^RR8 z3f})^1hC!Le%qD&U&;UR^8X(f&g4Aq5U^c0jCy0%GwU3bf!R%cY@_(*HqBFwKd1V@>0eqiz#wJKO6UY(B#3%EVkJsA z5=|?hC_dhOin7G#vqV`>rI1XeP19l^Q7MzD8GlkjKNiWjS>cd(T|t;dE73lAU>!2@ zo33V4mUh2O^j4SI!E)hO*Ms9Axqn+B7kRZl3H$flAt67yWS0OVLgC zO+yLU$R69Cw!db;sF%V})eT=IjHPb)?|cQiE&?)%DkQF$9+YJID0GrJl%YKWS%+AT z+kfq>8P95G1<=i_*>2q#4(+~ej=Dfc)@FcJdR+=+bM84~^lAyh9Hf{Rzn;ANg_yp@;?$!z?>KQTpuM{xu74FrcYFI5cC=*h#eH>NerQ{xL22a0+bo5= z)FCxu$F#0(bz;@?P6Ep}7B3v9iMe;70g$M2*YfrH?U{T^OY)s4X8-fd^Cgl1W!V4P ztxm-Mzui7OsO*0mcnaqK!MjkI>3>?)@qcCh+eY)>zwOJp9e?`Y+Dh9Wh}QzCuuPT`v=#=LUp`;^rR>UD;)YF@Iw##e&eY0bMfc#JOsrQ`<(I?Yl1h!GGp|Nsljc z0xbUcRp#s|owKzodMDJC)p^$XL!Yb?B?;A+vP+Vf{?-CeJlZ70B=6^t{;CXT5c{pZWXLwYpxi=%QkD@ z`Sri^-q0m%m977E4uAGqQT=akuhRcE@RY0nbt?U@(*G*`uYCOv2G;jR0avc#fnQi7 zd{=a!CsTH?f*!|PC0V{+@6W6O3-)?M?cSMc7X-_k|R zK(-Q*wp2|f-@TyU{{B2Z8kD*+Ip7kIGtHNWa!fSzd!eS&fJ^AKL7+;^0{-&kh!`K zCp~s`&-xvp`+uvh=`Hww7S@bkePf;rhE9QQWlr6)nSTj379Zj}49TH@MEg5WbMOHk3FGQ~hg>0uN^-;yY!+cy)8u=2Skd5U7<(aZJLG*Y<1fYFf9hh))`M@z++s7*m zL&Ee5_J2l7sjwm_vYng|v?T<;fcP;e35q~lIU(r;aq)3#!ud)F9f8O zsV=6)oKPv;9K9!IQ1Jtr?|?jBPjD7iW@QP@=7g^uh3}O$vPj4)8NhJ6IU(#MKuG`6 zhW`>BO-h9l{!ImPJu!p-uK^j)14?H|b!1js z6@Tm2D6YkTej05xMiGc>*|mZSG>aH`L`i*Jwxl%Ctt=UA1XSVx0^#3y1GU6sm4@dV zesbIYC!TfA4h)%vsK7BmhW)>_x4#$3|J&ND;{R;o$z}hSQ;#NUc9_MSLXcRHKDIj` zcy%059S0;F2mHfy{;+{N#hnHm*4xH5dVhw5ojhW%3ZTT5;wUobjmWswKuTvbb9U35 zn4TN!`VW#_;NEK1B>>UHh*BG}-+krxT>ZlvPkTe2bH$B$#uc?UV$ao-<|nAnDFEZ|CvS(21a*j4&}^BsHGubE1IQr*&Tf9K50IY=5is z*zV^W>pwmlF9~)Sx_2~%+Dk(bOjnfzf?V=|2U2$G6HRYknX@L;7hy$Rc9MWMDBKIP zy?@}&$Kl-F#$p#S#v+XYT*n__&v@1Q@ax;&hj;HzdhcJH{9_?n0_{b1yr6KUJY#|6 zHeIEOXmze0Hc{^$ESdv*IHWMB=YKP2K1HU-^tS8k>m$R^wI4BwmeM$_Po7d>*L^_q zT_;+t6Y}*Vz!#{2v0pHp@`Ll;#JH=V_+HxR?)Hp}Zab;*PnTUr*%L4++4of2?)H~;ef$2)gmbNOPaA(1SoLe%`5_oq$ zt|?B2VT-GKT5IKTQ%kw`iw)vAJ$z&-PMa}qGTJS5-Q#S&$82poil+)2Z@^OpXcMMl zN7&wCV_$P!x;_HszzM3AVi#Z(jA@y!&~PxlPe#l)QhXZd0)s%C%Dkq_KisVk50S2U)ldQ@Z`S#<$rVR3&**v41Sft z?_L`G()@o7V>`ou^9^4l?F(#8{96NdpsmVIZPS>IItx8EF2l__2BIqd13^Ws6D*L6h(%hJ9dh}e5u^XN+a06Q|2Ocg>;7+* z1FSLt{Quee^8PlCE5ZC5eu@gj8A%BnM}vn%FP))DNWz5Il9V0C_QFk|0d@qSp>BYO z74FYDWXo6VOl&6^+mm==$KIL5b~c`jE&2E^S&@?e%70hb_v+{yjRw#FDGTsHpu6hT zyXw`eSFfs0WB_1SsaNnUm}aZZX)y9h-T~ZUzc1~vbX@mLWc}+XF!S+W#N|9hK6opz zzi`5Ng#aH&8+47V2!6b0K|cv^EYAtoKcGheQ_yH&N2)1TV5ZOlftH~kRdwi}%vGwY zYJ+4Q4S$tOg?g)&fmW&}uBxOOhF(mK+wG?S0zYZdzI%h$>V8!lR1Q5BJkla6e!kNsB)<1K7BOOJ6iIyIk$V!4d~D)5 z<)#opYIV%10rSspY2nM4Xy$#Kb}1M*#}+wV1b2O$~?bcSZn9NLP z!GE)NIt8b~-sDHFdpe_K#DfW};#2Pn~s#-1|qiQw!1X%vP0cJ-eSx z)->EqlvJwPKKKhJ<$wopv=O5lh}_DsZr3Iw0520~v7<)2BB52;7{sy_5@rfLW%mD6 zB@vQ^&^A^T%m8OBiiRB6jyO>}5h)hc4u7;GXd|+}oKWL&(L#mLK>(o_zDJX=$H;c2 zm-mdg4t(A?&QI&UbtQO4q!u5s8tiWvM>@*8dytj`P|{nt&zV7>Qz{Ugu}`Wh$ecEK zVo}G5Is8YbR;h+!n!7M7w-&9$NXKbvPgEa0D^TEi%fFI{5Bug*Cl~=T#VQemI)5DO z!Z-5T(^tn&svYj%(2jeP>*hjXJ-1odMEHCkumye0o4RLZ?&17&+|GGpQv{eoBoG8{ zoF(5OnZy`o^|^w;_$I-!VnkT<>mUEs3#Qso3~)SpI{$lmda_;q*W`3|#()0z%qahB z7@v60|CZ%r4f|$CVc${Mw|&?bW`Ds?slKRhR!ZZ)Cot~|XU|o&bJ~|D-A35yf)Ta@ z)OFAtuR)ByZ*{Vg##0HtWlB=%5g`(W&YC<~T%?J2DuhYqsjy7)Q2)JSe!XLM5$Ff@ zHhZ`8rMldH=aQb~yi)rN+Ay?zB`!32ZnoQvCGoV{_4X32Z*jYh84qvHN`EJG_UxV; z4$LJ)H>GSApj!m(c@3IChcxc93zBmdF+mzt8X9NkfuIHOwHVnP(4HR2WW;R_26_Iw z!xW#;tdgkyKbK6QrZ#aUva2~jhy5Rua=`wNDS34M`!GJE^WR7Ffct44FvRoU<2&&s z{Kz}|H%%ik;bCG)-&Ku8&3_=vs!>r(`0X;DJ%?W&(TywkmmLe37v}@glakq2JQ`T6 zJe0&emzKB69i}JySm1J8(&F?^+iWPncIZh{mRC0pXgG#&@ND+%`#8mUBNC`bO=-@Z zzIKf+Atf&wN@JUyNu9)VTj|*&S}7hvM6)g=+n>?mIzeB^E%*?9pnuIe4nect^?33C zT?84|+8-)O^GVn@$|<&;s4L#0CdI&8%;s>5oI4>Lv#{mQGWixi9@9Yuc*Jx6+dBL) z!BJ^n&~>Jx??^{}KqI@w*Fioza$K|S5Fj9DC!`6Q+u>=?f*O37qceA5T0t)yaq?JN zI{(CX9#6XePCO3!U8`x$Ha-+bi6cblnb)>QB-ZwUKWD6k{(tXeY!Atwff0=feehr~ zEa;g7VMO*wqVsHd>&k$Is-}t~12 z`WsWRQ5o{N&*%S<bUMkWNDY*GN2#`)`_lR9G2ewML0!q* z1~!>QwlW>*c>(UG9BuF=(EpVgKm9nrLcGT{P)0X#z_u_B-E>=1_PU{KT82TbTjFr+ z7zBX=^?y(T#S!q)iIg(&Zh#Iz9h!)8{8n_F)7{Ht01|QG-EKLaP1PgxLzJ((6V`Eo zz8ZxsS6g~hAycS%{0UefO)rs*oSmHN#4K!Ca4Nxo(0YkDd4`QR35uk}*r^#MJ<@;v z{Q1FYH&N zH5h`@{SK|B+Dzh~q*^Yk;63lCT@AD)yw-|=;S5rnf=|}(np$)6jc)ddfeYAXwB0}M zYk!VFpuBdl1O-bhDaPp^VY6(Ek8lK1bbKj`j~!o@!N+RFDC4M`o}A+>6(Cr$uJzX8 z^1Bta_mP!~4q*%AI{5r98n{*LnvRTna2Xgayq!pn9V%&;G7)tKK?jB1rA%m@9%SOI zH*i|QWFm%!_SZ$Zq9HZ>rv^R%g5E!WItp)L=FXIuM%+9n@MxjqkE!2Qi|Xo`2qs z6>&}|`rt-MGjS&~v3e8MZ8IXe;YZ?C%yWi7LL<)^+||04911QGci$J-2sv~jhB@f2 zx`X0tG_So28#OFf!ZY;zuY?#QGI92}WA`T7lNq;hIew2KjMf2Ade1r)@i`R7?Mw{M zk?2ahhvGd9)pO{sbKh(30!K7nAAcc4K7Psc-IJ(ZVy@%7~>aqs3F_%ftWM?Kb=j2JUi@)W} zM6g9RqeGO*I+2Cg>@wdcstW&^4!$SbZns{M-x%kp}5jP zl@Q88O+)})@O=OzMT+T%P%)^!?LaZIqZ+D#ReiUok%U#3SSGGQ`$jaK#0Ceflh{P$ zj3Qv8W_C8?0rU=7#z=*jB7cSUsjiTY(!HD_8iZ{6Tes(c%w46?vmeAyIz)}NxP$^U4rLjw5Zn%kA)r!f1^gvYX){gW5xaCa)i>8|K2Pi8o=^b;8nK z+hf$K4~8=WZrr?y2dk*uVL{`#dDC5}IBJIm5WP7Pv}Tf7z+QX_THkgi!px_$DTgx= zm(_HFkJXuQk{Iqy1W_2{xZ4|roqY-?fuT;t$)c~zK2mJ7_lir3+v##QtjFYf&>Hqu-Y^=pchM%#xM5 zNsAS?m3pO8 zbrHVpP45Q2Nq;+xn21UkxLrG%h;S?LK$SD@&Ds$)k8jf+9%=n;)efMl?I!J^(bUgI z?Er$>Y|$RLdFZ_7ItI%yh|SY&=!j$*LN<{Hh^F24@qx=G!hZ03LpT;8k)+dZhr8I` zCy0wRc1P!QHtbFucd7~QZnvw(&%KTt=>2<^yOIB3c7Oi|(-2+$kzIEzI&kiH;jy1s z?x%a$P97guMQE`@7aRQf2`=4fe`dnKjJquw+&vt#W%r(-Amw6Qadu(On(6*Ph3IrR zPgWQp9kiLQCKT;XI0)3N0Z(r&NyK=ip za3>r@i+_2?b$oL5nNdNJ1@4iznv9YFSxM+xbC+dkc%mX*dL)gw9Le0Hnmj`Z> zhqU27gra-XE)UEmAD2MxS-Tw3D0j7Wu%CRBZhvGH#sMx>>Y_S<#CWH1DS&~dZwAUC&qXm7KvbX0*HKWkg z^MCjhx&wF6Y8vw{+|D!&-uy+{ReR6rT36Q4oxI;!DB<=nUP40GUE&ie`mfwp5-el-&-`v())%L?cAZdSBRHLp|ZADJEIXR+V^xf_Bf~li> zHSjWMlS~bW)&7=x!B^L7(iN>*m4r4A1Xo`xkx+FdWp<(2ev=l9Lld8NTL1&}dSJ+R zrQ1;ti%{_L)?gcD)JmEWJm+ZlR@o|2CY9!%^rnDHtcb)~Bv{mYD4DtaBvcL zgJi`K+ufPg5OQiKgP!)m^00#$xt<%Xsydh0vZZb$JX9s9hSY&=h~g z+c|gR(o-kdry1FCYHCk{Y)^G;-E+`nN9&-39$eeKR-Y85uEitPuYpv%Ap6_1-~KvK z+}`JH05ae-7hG4-2YbELyKfkJF_lTxbewb5%etkok6Reo*TA^v0>s!&@Ffwlml*$U zg3Qgqmvn+SRy_m?bGRE#t(q(-#_@koTfrQqS_RKHXeR^xlf<(^482-a4HMmEv$Yjk z9Nsq#RW0ypXB}ulO9}EVM06ZVxp1X&{tn+(@?bR3?utFs()1oG@rh^m74dAh9;)#p z%X+9u4}IyP9#ekJCw+fbgHF!8 z@ln_A$QbrUc0A7~q+9FIorC&xD3y+m2Ea;cu?nVvNE%V`t6fYa&`6OV{RqkcX0#0Lu8DE+lG>I;#?f89hyS>%6YoBW(AT^> zg%zP4C#-_|V|j zNSd<2#v9NPwZ5b2Mh#k+AX=ragF0g|s;*!<{M{r-$;(<@Gq-_`U9GuocRE1jfC3sb zxAonEp_-Ub$)027V#_dqyyo^nYW!OIATjoh!G5$2>_XCxoXjNU)Ixtg#RyYO)lAit zdP}MDAEpYZY0dqDsaCamYcFYTM{NURyfZUX-(b<+wCAs!%}%Gkk(r#7XEM|2$(bxX zmnSnbGv7!Ll5p{9p(%kT4P9@BmFx80OWZy3IrXj7mR3(~DKP$=8aqXlX4BBNTA&59 z!o0#et>_q7geDNK2~d9vUZUbckC`Pa^YFj~H?>4Cz&=YdQ)BRCnJN?61oc9NBI{~R zF|L@i@Mc{T~mE32TPMXE1&%nkJpIOKwAvy0fVeVuYd@Bx4EQTO1z4!qH8c&nsQY+}00 zDKd!-Ft4Pfz<5_@c3%>xON{;CG@gp*18^j=pf~pE@-;bAJWDRMlwDPWE>_&G>s7r1 zdJiR%6J)7bN)kCOr;}tJBt&bNgr&c!CDdDquz`R8ztlP|2DIuWPyuAsGQ6mhwT&eh z8(G;$nf`xLt!!>XZ!q<8a~HKwDHe63gdGEThn1VEQ8Vev8*s0rAzMwNmqP&8lzpOa zq2OuvYwTljXHl?Gv$QmRP=i2$ING2=X0e*ojY_guPti(HN2aAWFXcDL#_EO5N9Naa z1ir7WuRfe#%q^1D6*9j<67w7IG(jGk-^g!FkVk*=o0nEEZxSfIKEJY=&ux&^3sCM+ z^1b}Z;snXT``kLoeSd8|w*l|gX(RdNwWWLxUguX9mM$;mS1yu=0LaSfCRxfa=Qp9X z%~klhBIQ>uti$Wva&BdFf-L9O7cN0F^AF{h@|%wWIC3GsNiM+Od9pUYzL{URyfn|+ zSi66`zP7rNV;tL1RUa>@g4WP&DXGB6Dq25KmVa7Q&7z?-PzJLLdG>6+1!m2dC6BcJ z8KlOZEf^};&{?W6QhG+pOvk3Q_WZygma7A^Z0Jd7_R07ejG94@xk5Lsji(dfwwYj2 zq1z^tscp3i9oGck!#Qnf-^{pSO#b&{nwQNjb8+vr1 zIcug#3dj0XlJy9ydRSe)m|Vat7!IRl8gyi(gJ?fMXh0=yP}RMn^zBHXT6L{SCk#$F z+E$9yDe=F2N}NQC!Y;;(#Pc1+C;%`H8h%mGjtO`K7+~lE>!;Lu1=B22-^PEEP%M8c zL_>EH90C;wP*mH205+{m;BOJBul)j@HRWO-PJn;arf=qU3BfJ)ig~Wlq zA8>Ts<=&8&2Zp^I4ShDntf3ESbV-7-AAkK06#K-2tIi^u~hi;W_T$va#PK&DqCtbU@<}b(rTdMa|!VGU@DTZ z9wWTD1fQ}Bj~xLL3Xr}ha}Sa;4*LG-iG#C=vA~FsD@JLBKpQP^pU1CJ6b^rSW+RJN zqK8c3QE0Ok*!G-dIM7noiA#MWQ`1Zn{q?E_{E3W;)!kf)Us{uCDvJ+DdIKavxj)z3 zZ>Www+Duq&5G(%hWDE>-hrsC+EQlsoK%6d1F|`9vlry<*Ho&k@C-mC2dWVc1tiu=vATce0Dr&}v!n~Nc5+tsfaP1!g(kIGOmT22(7=k?R7)ui z*F>*PG-4?LRdGuhf>7yQH^dGQ?*y1iGlZkglyI%-;uoo!M5+?$2P9=>ucyk7#$W5eF;2X#Y*p0tCB0OjK`Np}1FT2;)su==&nUB*!Hx+ld?HD;;`*t+IYilbBE~qxs$Ru93IbA zPyy~u)TK$x2cYh5$8>*pkK2wiRZTNi&z-{@IqxIqJ=E27>0UeceT@}r>%fN@pN2_( zAmn9HYYWiTe%!-@s}tOJW`&KrHN6zHp{5s`!bV#JI5H@`8Wgtlydz<>faX%_K6EF^#0Gvh2L`I;BPERo~` zOh`?bm^mAn6Kz{^dOi5NM7!0AGEqZPy&sHJFI4rY+Iga2@hYIYSFE_1;E!{wII??#cg5Po`(SF%=(~?LYT<{%3Ug*VGzK3+GQ`%l}PJP0CaL{9k#L z|2vFNg#2F+JmEs8^QMmZzUe_GIeu>+tpA2yZW4EHV`h}wILd7d&TZV&l!jLK+e6tz@ z&^b)fCix_WAX!syaP!nYKoXjY5)T&kCbTd#P6-2q)&%Q7^{ss(aG4-=wMl1Ld{00b zGk#FPDeX09Dryt= z*3kQ#=p#lIn2svWY8Eeg&?X6%V(Dth08Wh#>2iK(IwfCZM=)fNsUtZ0kt z=_wuu@v*g+*hi%3hZr|UL4ppS=<`3;UAma|S)UH`zsbp&Y47|`mZwMazhQhL&HtD| zz%H=6&&HveOmcVJUML%muk*4@xLP76nqzY{k3bIR?Wn*v5~&4=!m z^V3u_Uf-O~LQCW{{3DfR!BaV%?gJy%0%s5oUJV#ZR07rXKz@lX%Z{fCnmn+%gLr}L zFVIRf1?EQtO(!KT_@r1y2XCe8lZ@L?Ll1vh(ZOjbHmm!AR2|DKfunh!P87oYe=r_+ z8uIb1|7GRT`ri;f(dCax=~|^1HRwV9ndzC)`tLA4UCW;iEXBGe@y%g$vjV0Iwr>OZ zF+DxmPW~Wu-~4}i2Hy{Z0r$E5*_0vy0(}@JA28)e%#uVpIhjl+CfF;w9S9zBd5eF? zjcTi+)lGQw7=3`BYt}bf1l=~Qxn*djipncmZ~4<%9_N&{4B1;mGcUqqZCBZcQca_! zdS5q|74vHFyKO}?VA8jYIbm%oD>ZoIM%jfn?k19`TkXM%mNIkA{3u+rwFSK&(af9&(=dH5DNjuUvhrjAFI+V% zmc(3DGr?5i$4@DKp77J}dScf)nCPT{7`dt`4X=6?m4>pVRkfx@Ss0)SSaF$N*HSUL z8ug4sSu=n!)vC=1R{II?O^>htcV++iI)wGSsw#CnV6{U?IDGuiOr^6KpZ$NAv)PgT zAHpXr{%Z%5xWoyUc*g*6=G?KKb2f?vk7B`XV!==0#k_l(qVKnY0>ZMCo{TRb+-DS+ z9#1@eji+$em8Q0%3gdeqVoc6chkS7oaeEi5E4uLn`C$vU_c)HWWrLEsr!`3$&$#v8 zZ`98AcL++0(nxt`4!z7wqRoG6nZA~tujvvpy)r3beN8xXM!Yd^kC_VJ<#h}(Y)9le z;t5vTdt<>b~a>ym!lItH1WLpYgXSo7{8_+xDTvnpWb-nrpecilSsetd*GSN>APSL;Le&XPXpnX!;t|d2`Aim_9RysKFVa8-q((9_|Gk8;?O^PKEXoSk-nrO`> z5?V<*&t4yRV0IKJ7WjXmvw-X=z%5C$WrmWtL5sAd($XJ#QvTlfH3ss49hJX_0|qkP zISM&HThI-zJm7jvkGgZ9SXI>q$ym>97Q{!uV;L^p6t(ypR4?akpr;9i`&T;CJA=2Bmn9JPvcomwe3 zY5sweu+9Wb9}fl7{gUAB*v?Tq;-Gwzm47h9rPB?@8FRq!c?@oM*CV!TEWXldEUudD z9xTVvAx=G}`apl@d*2P1**QOSOzk|R%I+c6Era8oVvNQ?n?9(Ch zXwNVlGJc~*HDWWn?Lv9rVC1`1YODWEcoK9x$%r= z(c(!qpUpnW-DO8Ssa~1J!{o9=+J$*No@ECRZ2!LVELL1LY)@hx6IeERo$>|cLRuB> z)pz~pkp_Q{cwQD9^P0EIG>=xiM=Rd(G&%0dhSgI!Sga4SZ z4pzv!ffClq`k1r3@TP8n(kyP{{w=H@qJ4p+fKA9ore#IQ8Y|HaggQ7i$4ZUktWAb| zf8h`hu%0!ku`@}jLEG=rCvQBt-!ut_tgJ{-pD};u_PG-A=Sk$(GC={})7P&3(1f8e z$u(|6ZQ{UTir;4Pw72!s$^6BpzVnMk0wMlAyJketp(%rO~~i2rvO`M89^>&*&{sVEIk% z7OZJPEb7(eB8*eL_`=HsjFe4rl6OR$roBkXu^=V)jMN~tFi42UX{&m~XXH_gJc`lq z72Hdq={WnT0N1NmG3u(Lt~%VB>5b3;A!MEM?@+x zLWdShEAN9<+L>%09rc-XNzxjEN9`kVu?0lC2)<#o5lpPBC!OSuJnBZhYwUDXjg=i5 z8yY(vy2i>bjg7cVab)^Wu$g6N?ARW?kh?o?n;+$qWTg-MUbD*~$ta~|?x0jUk0j8rnv#7(-?jaFF zInhBulnQ#7+~S82^myUH4koNxc=VXqOy{Y61xSMdM#d*7(C3UoX9gJ0ixGcKd4Op4 zlX80PTKkn&PK3S4Y@ImZiC6WwoXmncoYB@gX%CCWy%8aMiRdFT#l;Yb2!_78rxsy? z=ioq4NIteOuU79~r#&dj!6?SIdZN|4(dXz~WFY&G5_8n3HFdJHw-x2+EN0EbgMY@0 ze`w&lyG4P_K_IjHSQ&6YjI@6xL5y`B$6Fj)17Dns@ivyIvm0Pv1DSkpjJNXFVZ4>U z4&!Yg5u@?;ejRUnL$cj?JJ_+ccU*(U)_ZXr4PGM^YnHLDh}u9$M;Q%wEy)vd8m%D> z?h}3e2cwg{-2NTm{%<+!yZ>!Qo*b?J4B^vp{l_wkD1Xn|&!f4GVP1dzJzD!2t^Evc z?I&{#Yd{b8MxOHB|2Ub>jP8FN z#wSAl7rfJop3z~H1U8xoeElW@X(@ePl4nLqU~T<-*84l%4GWrfGD(Z2`cFMVxYb7F&?v`TI{-tZ#@`6-*py}f_-IcD4y9;KLd8y{}B zd~EG6V*83*zNylLz6^}c#C9&D`%Fr+uVjKiTC(w;m`Ne_xCqiOHa=)QA2-UXPkN-= z)OF}$^-6s5v>S4rQK|b*sq7AUr+GLS?75*ndfaWtsIF28+>PQ64xKKF7L+>90nJte zuev8C14aoWMv{NT#w;B~Q<1X8h(C{^IkE;v=0^Dvv4k&{#Bl9^y~`L=CQ z0kP8&0eVdC0Lb6k=WU|H7~E<+ED$FY+Z;%zve{rQ9uBpdtF^&VDNlMdAng^tpqm#O z7U8_Pp;GRn9ksrO7IM&3x9YSRF781SpP8EGM{vh~^mc!QBe$u;3h%+$O{vWy&DR46 z$x@0^06!%G2qtXxGHxyA0wCXF84$Gk0f~$!mba@}`TIQ%(izVHx2=FURh3S7`-%y+ zV`rR0TD#8R33wvgi%m8HEv)2mdS2El1l)ve^fo!vLH7#_kDlxxI5)P?IccX8+PPW7v52C<ADhbhjt`T-w_Wa&5GE=o9u(T^0jsxm-@qrqk){Ed4)T6mmQ& zjmK(nne=MHY9UM#P5SkI(68vZOXKOQI{>J$&?SJ32NtI_}eTW?%GmtuDO_H7LPml+R6d zVJJBnTv!)vNAHS#?|m z+Kyv!$&akXS_^#F7`u=))T=EGTqN)|2+WdW&ApyKUiSev~ zsE4fIXa3A^f>J^`@6V`I_wgTe6}meIpu_&3Om=3{8~@2p$)o*0!}xR^|3UGOf|8+CY(`xr^{T~Q4l8z%c^FZ z)Z)hz-hz)Oh!uKB6UC^sYT!coS~Qz7%*#j6a^kdfk#o`6CVYp(;_SQ5_AL)-3sRq)bw=> z1B1-skQjm71-mHhhUUp3bTruwRYOahgSO%ft~zJTF(@);s;}=y*Jx_To&C9|-W;Zu z{#N8(T9LzBxgSTA;mqr~j*Vva1N}sw|Kq`JgSh`CGn1b2o&TJfnI3=Te+}akdH#>$ zAIZNCmP{*qo`9*r0POm>lG0d0V3P5vpaiM??- zLB7S$eQ{uB`=E}yIZp>%&bfv_=|%&~vmTc%5al|@MZF3%em6l9Y533Dd1GCE%Dojn zTXNx-jUB(lCEaZ1*AjmgzS%hOog56l_}s>LvR{l3ydfe~jt+q#3m8oRV4eoMPGA(g z=^}UoQ+~$PV9|M^3_@-Wc=Uc^ttsv&MtDSOkaOvC>DhB>d`iuhOI+f{;?4~Rs|*U% zaaXY$HXu|7F*{JC#}Ru<32i=?PBn`SB0Wgb^sG}v`dm5@f*F5>=ESDUo)n0O=v3l2 zA`yZ^c#mQTQH7MiAbXk&0ZXg+A>o8SDhMd+R+7@(lMY3(FS2HeBB^@~9bBVxY3W>+ zNNd(z*3^?Ux1WqjMW9)yUKI6Ky(ti5>H#HwM0Sfrss^=5D?po*LIHTZrbH$u@TTTj z!i)ISj>2uDYdwFcnIC9o5J2TY0L}ITG+1Q7(?k@xWqfkWbe0{5$k69s4MqTHyc#fXM(g+Z+0iNUYEwE!OhIb#*A!CS2iX)NE?$)#Dx8QWMfXK zdCAB#?7;k4G&J(;`LuLiKI!Hr>r>lobaQjwGB-}ze_Q zbVklQoRI*w55QEM7pB5)g!)9?fXD=a$aDol4gw*cOdH^w&tz~uBc{UVsew43xd#lw zlutdUdNBxn&Zk2RLX7^x`GGhgC(j2vIR>j|wK&=C&3SLTh)R#PvX|xqy{ls~k+vS} z!N*;*u6loE3>FhZSwW%28b;HE(wan4u0Gi&A*DkY(~$w=YUe(S01r0Vf=Y9gVsZa| zqUV3`tzQkjsulMO3UodGzGG5Ihy0Ihddj!|V_L@Y!(hND|06vA!{Ntrd*e_8n)$%h zz?&Sh>PZff&yA8pM#&*3F*zh`OGrjaPfBU|7`A_el$53-3c~9ueg)rMR8J+7DJ*gl zGfBk2!EV@Q`#{i)hzH_p!ka^2*%~^&T+ymkE2Cgn(VXwW2sK-H)`$fR+!Q{Q?kDdW zo1rGp4Vpt1Tc*R3f%9wD1xxPr+|>~q9+oQwph5pwoX;fZvfFf97u7zKoF zGDuO_hIUiKYoNx@m@p5^fbl!~0L*0ROZW)2pfq@MJ!9uJdf5Q+8iu3}sjNv>G^gQgY~NX1 zKgS&HLF;-Fd&;x*DIg$V@3L}QoIX(VZ?us$ah|4)Le_wC&=iUt+lb`8WrwaBlLxn!r<(+@_bD+_p z&*+1n=<7cw=v>2E(PpY0Z9i~_^`G=~*0=w6N>0y=)_;cZ30wc6689{^ciaM;87=dS zmU-^QWgb~dPmWIh@}2x;d-2wAfN|JXqthW^4o@iPFfiwAsO_O(qRqJkf8Z?BW<|*^ zzyi5JR%{f)9bgF8edFl#xukzQ#cmvRyT>sfKIVel_4!C`QJ)S%J?2Bex(y5z8zh;+ zqrS9?eFhlsAl4CJ#B*4f6@GD@;Cz2-vMY$=43C9{m@)?w)}djRDW33&uYCxrj~Q`D z%&aFQdpiXGly&*L&9cz2lqVJ?LIhF{iFKp>BR|?d@}iySgM&oK<38JmY39oXwC6<$Aa{t@ zW&8p4K9K9CnFzQ8n09{$b$SQs{y0icDQxcmjP4^CYASu(iPDJA^+2pZSQ}boc88_XQpP-qx1iU@hR3o;)NRYgIcRru=a|bc{sPekzZXQ za`N2Sv4)}l5Jy`!9F#zbwR*AIDye5^bso7$(jUH;I*rDdZQg&v?7Xnm(yFCGxvEs` zQm5d>nT6%~@8t>$g@x7Swfs_Uog^y7VuCEpFI>uzwfW6UBvFKMrPhERZzQm9L8XiN zO{}mCe=f~$U=g)gJXch*>2gV(nMtSB^D{+N$!4Z9C0Us%tLphuTHZ>}0Dv0!fJ#L@ zlaM6zIcha<6SRNQEJ;95^}q!mLn)OCB^7N5rSOcjnBTa(G{0D|i_Rtd6%kQBE*CJN z4%$3JEe#f$Us(kI6Bi*9B{m~9%0(%g&7LQ9lc#-3DrSC?)Mn~5Gf}ITH`gw279O5o z&(A-!lp_ya&Mz$%7Uwr}&et28>-n|9<~j@k`IU=>M=pQmH**_n^9#8#58+fEJf4e` z+u*{8W~Das%Q+<4Q3vVO%H#}22zlA{)z!@c3NQqoRc0<>`AYoSp|fLZy`+`Tob|%p z*n|c<0k#Wq$S}L|L#CjY@(&gAD^Ou+sj!$|M-K>9%=5Ugn7c54d1;g2nB;l`{8FnX zo|hk9F#&(XIom$PhGtSyF|=+Hcx@;KOGDgNl@d5nPLa7j3$!Myf#GpS9Vz$&ExS7< zZQSnA$O-6i3*XDF7uIvY#7*W33JfmH13`t{`uZyLQ2J+}bT2HI^PVo)J$^x_aG?>K)~U|3pR+r%Lf6+%2@kH9A_gFH~=l42C` zGENkPWPz8;S5&njVIH7XltjSY6wkGK6&y+Xd0_M3|9#cmaQ9ZIzIurlAy7skjaPhN0Hy_Ayi=!K~?uM2Dcc za;sY99OX-4sK#IecsK5f0ZmGvOJR@+4xU`N{DU75B!`+hyG%TdwTC`NBdblNTE%!6 zA1e5hGiaJONasNZa9qr7Y{GkL6nwsja5fH7jVl#44wALp`f`3_gNkGIkrjVBzRxf6 zuaB&Qg9roC>g6@|n0=*>&w9`U{Q-E(t7X5Z2$h9nG z%_(dqaO@Z#P>t{b=pT43+O`*XF+2RBJAwisGG+g!zWjsy2tgL=$GUF!UC9lP5*C z+q!cF%NTh z@=vQPOOMi^E{@5?mf6&6g{ERuz~I{yIYTN|lkE2a9`n^T8n(qf?x8E7yp0FWG6@Q-ywYBN_gu&RWoxwBvrFoG)8%v_eq{6fnltH662u+ zM~;SC-_Z=cUQ_E$cP?jDE35TNz-=z+jFd^omw-$*QK#raYl)(~1zLJDA0#%0>a*#tkR)?{)LYIUw=s)|wEW_h0_y#}HPtcEU6o=-Aa zY+bDv_en!3UcuNXBER3N@skFy5Hy1iaP%)K;4O*=Vx}tX697|{3>7bcv|gLLN(0}O zp&pw~l!*9CG5;o(YBksr&%WcC129oq;MV{IeD}?7;xB(nI{j7Ewwk(LWk2jfyW1MD zfqt!&w%8YwMp@W*qfujO#LE~;V|zz?%7R%0ydB@AlDeZ-ttWeCwMp17Q0Oi2)aCD6 zFHN(VFbbmZ6m@s?=(N9pPBi&6;9fwNb7ZdW!=$ z%>8_1h0{03{tW z?={>bE3j_X8Z;Co(NyvznkNt+c>)tV*m;-Z+5>bO=~)4VJq|*o2J=Ww0(Zr5&YOq;%63bga=p!c}w7+1!iL^zqVh$@xaypsLN=us?Qd6n4ea?TN zpn;Y4p4urh*itr`!O1T?PF9}sG|XS}r^yryc}*Nn8#FVGV@Cf9cCeDw5@RDWYJvJx zWLq&wU1w{$Tdneh^^IA)2~sf{MfQK^6RA;cRkS+p%mYKXYpt4!_P`fK_oUu}ANxs% zTm<--L?ghtr6ZmWNI({gfFKaX`DB0ECnl>1eQgN}ou!IePnz4-BP)uKHUT>wMf^nwHvwAFi6r$nOd5@lu2f$0z~6_%O9g$aB&wb zm!y>gWFtvzp-(cm6--2vB)*YNvi)_sY;n_Lb{&ur* z0wo4m1xO5@4pL$O9y>%bGaW1{`#pcrP?|6!ml_!&U4Z{g@;`8|FXlZjKR+)dQ#HV+zO6V>dWgczf;=WSS4A&FD*!7d?$s)-;d}(uy zr_O9#nqSW?&cQs^da;<_pot3`8%y{ckcmalP~s9zm@`h6syPsIYn$W6fE3Qr0(AfL zpjBR#^Of+(Vu2bj&FhRzPj5ha3NM=}Y!>K32voh)IwQ1gEo2m96FEQH+# z2xKxqWC3MDySlr4S=*C};6asIwT7$9NABNCk8BihL4kJQG=H!>|NX+o^4eThh6mo< zxjC9L7h6xSU}{vVQUi)kmhw=pkix0n#o6~$RJqjAg>+OFg3m2Wksb_l4_c1 zf@?2X0+;xv6f;2IrA8E$caCKkdD)m-U5QPdfmmF6(00@qwOOQ(Ih9&GvvpfM>B>HG zWNkfnz_nk;sq>-%YA2uCV|J3a1Jm|NPX`FZhm~^|XlpM;9ZY}U(3+Z3)t*vI(vDJX zsZJeoH0014>nT?rW(_ZI6Cb5tJX=>B3px4z6cWS zg2i_%IG>&(F726_nl7fdO2usYTv0wZIdy&}qm<4Um2`3H+{|=ZIX5YvJGWI#yI{B= z?BEP_+S~F%-t~VZnd0m%@Vzr^YUHYtOuC-9ht5E~@T!FuLf=Bi)mIAMy#PBlwy?VP zD3PSHq1WaZHV!4&((0a{;pIVTJU=^@pPuwRXj{iox?MSpMSBwdf*-c4%-7wW-^a$B z!Txxo<(8OjQH?#kx^#ItM;?Rv=DwLKn<=*Jm>^G#Ei8X8lE)HmnTWk*PaJoyPteDm z|Fx7~$gOPTHd3*+5q|z3`|ipAn#@k7zcCdn7HvNFdHz=$`SUOFw9z5|PoA3b$$u(4 zHQN6@j1LL=9KHGe;q{LWKluFUtuO9=@X6uJAKv}&#}nkvAO9%ddF}>1Od+ty-#>d% z6e3s%GqQgUKm9m!^yZC-*>Mc^Pu@TL@YBCN{pQ`zKfHbGuYY^`tvmnvv%_~@I=u1M z|M&EdZ-4&fombz-FJFFe^y;UFFF${HIlTUt zqt~B3di(eA{Hr&fIeg{D|9ko;&NeOZqRrd4Zr%RmY3tS9r?11?j%@;`fE!0|{q*QB zuibzC@~xxi-+_m>KY#P^mp=|_kU?c_9)9#pNbQa--+lH!?)>bpw{PA&y74-e0SGs5 z9)9p|w?F?SlyNuidCA&8dij;xH{W4+0lcF(Zvv}P1+IfE-UJ5T{qd`9;CWs$c%U3i z)q>G|`^DRz+&p^y)4NZT|Zue@kIx3I%n ze|qQeouAe%A5e>wc<7gOnfxbw!xM?ZfT3Vih|{DMH9f9=k@ z?}GpUjl2K#v#*~01+D(q+qYf^n742JH;{06;}b!BCP|Kde&hDd8%%19O2L<-4_|-2 z{mFlLMg6-^k6!w~&lCm*dgswcpWOcR`q9(x0XE2s>+j!r<)@CHFWvq4Q}+F38hs?N43;Xh;9@&R4HKjmq!92-yVv{$=P^@3!mf2%PnGDsHPkKwW@*_k)|P z7|P?7KM49|LI3SfetCG~|C}WH!61LJwxA)fJ$K*x8Q2;2_N(83%DfK7$%!@6`NbQ^ zrW=3#>gnHMTkpMk^xUtlpBBHM{M`?40-VEFKR`6Zm%CrSarpA@J?ujj2BtF&di~SG z&tAU!`5*7Rcgs@@7<%~JOLxEg$cfVJTi3t(4fM&Mdw6)~=O2L`K*jv%nWKNV-aUHZ zUC>SVX>|@S4#4W0|H%~D`5a`)8gdo>6+&{=<)t{`?cBF^4Z+KLY8nu|@#L@>GownHR4gzVe@*w~SG&MdZmJesc70 zZ=zNJbw7EZA?7hQo=$xD=0|^Mcs}~GYan5r_>(_z(nO1Z9-8^jsWp807kB^bzZp3| z9d@1%pS%0PXP`)&mX}|GCn(UH?;O7ToOt`3Wg%GIJGVZ@x^KUD`273W@xU5^T%Z8u zn8hwc^2TpMI)Z;r6GVfO;6&i|r!O4+>fJlHZXAF8>EA`C%|fUB z)$a~pd*bA z-(r1{^U zx+-Pqheyx7hs>l;zIyhhqt`!T?F3pziy(&R;VZvD<$U$8z%#~3KaY{f=RSmos1l$4 z6~_HLul>e_7}Z;5(4A~%`anl$u!_HDoD%Gq0(LkaV_*OH_rQMuH+P)Pu%SMnlf3yp zLmf;5cI;37!1xGI@4SQF##gs~4PS8deBnA^kNsBg`sk{ol zmkxjaTljwX;b(t$pZypr0!oL!y$SZ0y#=S~@QWAjyz&fGK~cT*7eEh?IeO!ZyZ`>5 zhqrFt{on&M#D97R3)AMPL-^s{pMDMl7_fy5NLV;{T-lL$65 zx%~;q>|K8`AwjPW=UR6^{BJ0C_iY%vud{NZBhk+Ie{SCS&F2V_4h^h%uyE)G(C;|S z_`~Z*e|#Hl^4ssjOzrlq&(R9K{5)E_&p|LZnfimKqnf<((&3+e_4m)-5J<>25+E_& zz>C-EF!1!9oA2FuV^Oo7SuiYph>K+p$K-*qDo7)`!;v5#gfcj!G<5SYo^c&3u@x zgc6y;=&A-e<3x-eM)A*>>1*uM$V$|Z3eyV%4^lGpQi~obG=aJ|f#)!3Wv!^t;|G)=a%`6nnZCt^?tnt?Z6dW1}rH=Gi21;NX1cz{4^LG%b%FBWpFewGTb8f%gU!flG!B0yNBzPBN%5)J1=* ztvqmSM=Q0IDuL%qY6ZUJ>P@Y=4+QI?U6W|QfdIV1n{p8gF-f*s+5Eogsr@qHIhCf?Q>sP%vuW?eK%St|qBhHBut962+U z{)e-oSM2Dt<%Yhi8WUj68(Ndeg&s*pOtsiD7^QUJut?JdG1YzNV@5$zL~Je^3N#2c z?E#5XBuvqU-3PpfVm|*r3N-~q-M4Ms5kH|88Rg)xNrV0oI@8j6+u(Qmd0U8eT zM)_xgg~2XnVc*m$thF<&A!gx=hHjcnkW7Lt%pzmIsZVKFJZsxK4pgm!;uTdKg{f`c zVJ1+iDA+zFR&$MF+;V^8PzhQ>4~L{9gG)R(6hKXvU;q_7oR@2b$q_Io=$%NkxJOE~ z=Q4#w&IR}b*k=M99yAyz7d-G#$dPW`rt0iqBcjP@-Y5Lj0NM$f&`;}05!YJL$)*9_ zwWh$B>@n)_u4%n<^f(9ZY|fyva)fS|pRg;L*x%XqRQ?m%=Wc%=E6fHJs|$jqV-`rk zBRKf!&v;yEt6J8WRwFR}ig{PSdTy1-WKzVn7M-5sx{5z&5kZ=mnmBB|i`Nm19?D$ziN-JUS_i}sJJ+f zM^J1yCU+A-vpZTezn)uwc^zW2B7SVFevz z7v%Crj=>NULx7LZTwH_#_}kCO2_%1cesdG3y0rQTJOLkagDlJgh()Xh^ISIfedJPp z;SyQOT?A|Z*6R9yqZ5>GBoC}!d^k^wU7*dt{Bt8Orl}Xm#$~9;2}p|A+mceRwD3d< zOXx7y=7AHOcH;qF|DU~QZHnVa@;-M2|DkVehk>0L9(tI=mM`#V5OYGnF=%bA&H)WG zKp*qE=@|jO*a&1>NVXoxYss=CY+1HsDJ&n@=d~q)9zSM(X$C&+U$}f!Raf^62+3IT z#WK4VGu>5LSy|PYS((|H198Igt=@qyGuD;pi6?nK#Cr~OCz4%Z`a$y&H)Tq9t&zIM ztJ~G_M?o6Q62h~IcXk5tX)h444y0%&ED&@(5bue_VZ8_5j>mg^W7QY~*1Z-sJTmOP zKXxR#nE>&B9z`sm{Gp`W=KB+rIF#CSf#v{gs)GftcZPqalQlx3BeLwH=$@A%J!mCh zDN;1Ks2)lVI4}U)PoY3lQXj;c$7;f?GLl|31|mx^bUcA#u(y6n9tXV<*hsqIv`bWM zvlIETU?{_Y$^@|&ua{ywVbhc6Aa>Km6630@OehF{NKl&7X{#t@+NfOw5nU(`XEde7 z*O4_Ax1Ia`>B6*vy_f$DXogxj{sd3u1?QqCC!kTQMtK%w=BTsjO84z?n_PI{_T z#h?W>7;}}FwF+;U;N^7>8{6zCl`Nt0DauK078bpjFBEOUHwQA1>1+cf{;Zxy{PezYfjv;C~m=`_@d*!h(V;E19)ejj9od=x_a{DFw_P-MmgGCZjd=%SF$rU24(PqOCSSdbM z%>hjVM3NuC6CtUSvLNFoi|=5I=Wupx$Dqasrm$i+u% ze>GKU#jRcn-?9kk>FjVig_6>Pgf=H$2tY;3q@W~p1R0N6MLS=13^^*GwfVR`d>+JE z!KBB_!!+w$K9&AYM}Jqgoe30e(omD^C8EFV`%L3al!w#B9KIpfG*Yx9R>9tMJkjQV zML%o5$Ik}*U#H@)9^)C}|M%`~er+fI|2cfNu>QaLDSDFpZ?3BU*4omtyJbiIKZlPe z-CLVm+Q_#aO@Ci>y`N_%2s6|+!h?hd&Q9GJ+jl;PNCQMhx zPc%itncrpyO~xV*g*66Jm5%E$_9Qy?a${j7RSnOmsS~K%GvMkC$Z;At*ci1AHvO8> z!+*?4+hqStPZg*<4qEz=bfjU46G+ggjrDTTFaa}S+mbnkC3fflTM#M~9tJ^wb1*W> z1nE>y2Q`-$y=!+q+x2-0{x7sPP}-hyj3@AaVD`JJ`2XJ5_U`ci=kP&>e<(4a*hM}3 zXwVOR|CXO7lVTz_qMh%|9MmZv++)2T3@OVH{yj+r{c(n|`w2kWpf zTNfTk7~GJiKF^kg&Qiz8kJ!F{U>~+rQhrt;b>t~9)PRE+skD^|`eBq`spvVXbgQYn z?J+{^ZiwS7d*Q-_rx(YNP1CfeHI^U7fT@fWlQ55_e9=I+JVFo=B06?#W`$9R zFP8*~9QIP@vjM-EV~m!IqKq-LNacZKVLe34AAzOCUEv87=sFB?K(j@E3XdP5fD7OW z2YE}yfeHUKW}`GLZ8~`39j4koHqaiAzPg=JbB6icFuL(iNXIIJ-;sd1&r5l~H9H>; z=(imP?0jLPGcnMEFgLRFkvF2Jw?{V@)^e4>P)5gLz`j3O%T1Ql{AAKW7VGXv911IU z7W&uFoM~V)#?E}ZD^3=F&IDOUJ7VOlf@zTRssp`b1HJtNs_WZ{WIQbWVw7bdjOAdl z2f4+tUr(H&AgOCQ#)K1%0Gj*b9aug#X$XgqY#cRTG%MTrJj2H?|FK5Up?EZ#+SV~P zm;WI2TlQ4F|Gyiq?a2S%{&Q5lOyQom>CS!gZawdT!S}{t8-ON%@P?fo!x~llLeZv7 zek?ESni2dSb&idNOe<5`7vifS(wM4fRvok=-SJKr>HrN+_%R74;*oGGV6O>e%@ zWW8zr^HCvs->u(&6oP0KA)D_jt<8POZus|DD*K-tFv=MG<-nG4;d`}G z$3WuZ$qoc9SIW(B#LB28ssL*TTZ|vXRP+V-4jNgC1D?cxAyJ(Ds0$`jDuF6d28nGd zd~s0A#Artel(eKmF^@1xQIjUyp>;M4>8Er+5mbPD1K{M3>KERvk2Zm(hZW@v!7OJ;vLhqcQ!;!69wny^R6A~$w)?JqMm^0%4eaA$-lFkzJ}8V6v* zEyI9+Xl-(TWMYp96T1gf0`)B^t}wZ`^CKf=Qj>()fx9!YQQs}wDu~H+U`wKfUW6%) z!*c2>D~4i%QiiddqnSK~kP2v^kdzP_#j0^?9fcL_4knD86wcHzXudqH-dG|cjWMNK zvpLWkHQ&ZKJFH{ikU`+3U|JX~ zS4tOi02jrSro|qJpY(t^k^5ZvktJT%=%=yd1)52h~484P*TYNhi1j2XVMwcG5DsCY!}Z8RGqU0ZZQ}-u{pr zz`|!HmjVtCVkPP4wpfNe6J>6I=RAs=#84g!pK_USz2qNvBx6&g3`OZ$nF&XpF@;Ni zQq-E|!=>oyc(Irmy-nj$g>OK?DanJOc*&#Ys_0K5wpFzAXzqa#GzfEqE=IPN;dt+q z@`bQj%why5o!`?X;8<{X5|83Sh{|_~ytR>FiOL>Gd`M+jJwmk!o?5$pT)X~+Sszm? zFXWQ9pBl(&OM3yszk%rVo{p2YvM3vWV8;?$JJ^PM5`lSBg@yI{0#Pl84a;NweX*!q z3B3h&$D3x7i)(oX0Y6~5Sz!MJyQpY%#f(LyF+F9p)y0*t_5v0?bi`LU^tMX$YJ+=# zYAr83)~H(8$I_YUYV0z$gTg6K5$c$F4SC3v$%%7?MFpK3Z4UVv@;ThZ=ts_fq)Ei_ zzGsjz+TyHR97vbwMV}-}o^;AEBIePuL-zAB%%|N{nk&9}VUO4(bg&+WrzfHY6IJcV z7xCUW>ou5Kf7f95K$3r|-QpFMj*geInFbn{>Vo78#5`zpr5;g+yg~Y^&TtI^S7thd zkZ8?6gDqLbLQ&-e)h@jyiBZmfW(ahF$2_l+8+u%MS_?@Vnl5LDWZ;3|Sw+QDXp0Z2 z1foNp6vMZndW)oXXtHgZy+*)B#-V#V@Z_N(XB?hj<7F7JWWMo+8Sm|smF8gRD0Pjd zn$#F{#W<>dziZ(0Q!Zxq$pym(fd$i2oVJP-r%k=drvG>u`yy90xNt>(YF~>12q0R9 zkq8imXA4OA@eUMz*~KtdYvIq{2vCp+jkslmi!wg{&Egh&QAd!RT0FEDB>AhS8BBg^Br&+Sq(j;=o|o zIZ_5f7e{;s z?hvXDLM2KcHt9n4(?|*DpXk z(wPOvj95&6zK9oc?>%U=V#8%;dN@BtFBf<A!FVl?jH4QXYZ{3hd~K|ze&*ht0+F?3_&mIhZg1L`Yqq3;2FfKEyAMA=T& z>^CH|cnYD7r1n9Z#n0AZOi&LEL_hGSV?o~d1R%wKtOmk6eW=}vBpzlpd#p%@8zQO~ zLy7O3GzI7@Ni+hQ7DB!;bhbfV1}R6X*!pwbz*?HTbf zkeB3E4o}*LNjo`OD2)_7J-SwyEw*T2-M!!e;EhKWa>FPkL7YvB#1UE}&5$7DkIE%w zPV$a__4=V%+6T;z{zJH8NFY=IZ7jgY9b1~U2RK|cYSDrN7P-MSQwHeFLo8_UTOpr< zwnL;}IpVB_{#xA_Pef%_)}(i^d@!r27Y2xqf}HEL`;RHd*2 zx59$UXx?mZY&6ZIeSyb%bABKS6inI^w$r3_{Z|LH*FihAZ_n=C|FUb(9`?o@L_U@Q zw(Gs#tZ_~<3jj{s$`PRwyQ0m}Ddt%*Vb2wB=njl~1{A+9McTkc-V=}Our)&1g!x^6 zHdD-yl4zWg|ghQET66{pT)$H*KStkPyhYFl`T8{MO=zEr1bssPv!mh zjecQq^~`bi#uZGTN`w;VD#-^kt4rq@ z@am^$S02uL;Macs5bvG+3Uh&f{($Lt*Js{`?<-5^+{OD$Yi`2}uzu%rggC#ndU=sE zh4LKMmp@-yz(o53w2mL5jX&@&V|bu9fMVtQZ{72!KyAQ$$0uh!IFt$)^Vd@6OTTb- zY|LIuSE1oX-h9l-`tTgggArsJL;L)QZTh_aq^Ril>JELpsQ*?EfV=R2k$d8HaJ2;G z&M&$j-_~1T)?bnOT#m!8{*AW5`o($ogE@Qv9?Yp-py;FDg?$n5q3d^HyZC+7{;uAn z0XBZGIRs7m9P8rli3czxe9Zh9GV&|S=hhz2S8ku?yDQ6|x=Wv~p8m+4`;4zpiud!F z3YzGmV-T1HUf*nDCoqS9JWzD?)ZMj{-yy`4v+j+P$O(x2fTD^E;5@IiUzcGA@hVk* zTCOZ#6O4*Bv=18})d-ml=?L_ZYY40i7#%($KcB&XwFh&-m83_FA1T6Lq!JQ;cE`7>&vU?cEUD+|{v=VzG@V5;}IZzzj@`mB5E4m{1V?gX@q z^(S;%z(xEHf7VZ)M6^D6xUzf$NRIQQl-_HPuforoBjMiod{I5uv8E(5+tu6G1x0?C zW%N0rFPp$Q`+4OKG8wunvi+X^zH*03ge-gw3lH}h7cM-&yTSLMQC}tt_M*n_-21B+ ze^~o=wsQ5em8DsK_uf6`B<_t{>mS@kQfS0i51*LRl@EiY`}Td_(J0Q2&r^>0u-u-_$qp%Ta=jH4$YrQ7Q@%o8>n+Mw*fd`DuO*zLmI;U9| zfcru)9RJyU^qp!4Qhn_VQ)2$2<{CO)M$=5P-ID%ZMv#BjZN+;-*Nt zPw4X!0UH+R${Fj6sc;4|_)u7%pTQ^e>L>2`?=k=PJgPc}J?}lr(U~(q6)TyIvTF0?n<0$x$*t&*A^bFEnMenLbaXwT6@1oUuSq+m4Kgka^nlu zMC=Fz@Y*+&v7ElF+&}Gpbe7kW^}5RSg_Xx&te-f4TY0zuj6gXDS!}h_K*FM3_mtlI zI^BI=w=MqrI?sV$haP-F4sld-r)erlq}UxX6xcw)`PB64E2wLyZ%RpxUGxukrZTZPn#p_avV`QmAg5-2Qdj<@c}K z(D9Fd$Zmt{Uu{fasr(STCrSmY-1Ash;ZgOIxM>(b9Xs>uHVy=+s}%`QCqe;KcR@UH0hEA#O%}Xfo|L2k_y2IC3FWqz>Uqa)>sXLxZ zL`p2|h_w$M@(_$oT_7O9N8t@)0(82YI^ofzLL&ur=%BuNrKW~1;sA8;JY(rgFDUgKqD`oQnm_0g#c&} zDz}!gZd8E08vqdQfBgYbXBWR7$Lp@n3M=={d5-+`tFyqF#rX(pwp8823M+H(ug!e$ zlpg*ni=FQ1$4k7$w(9Da51Myq!e?RT78Wr2`SjZ2MfWb8q3+^Le!N(@v4o|6gy^WQ zY>=QBR~9a<&M(2yN7Lp6jEkpMzns^E7y9{mRa%UA(Y<_3qlENAA@}J{|J6bMni1coT8&|MKD|@+|&+xjgT*?fw0& z&a=7qe}}8{te$;@-`I$j{-tw&`m>3MUHz+j#N5Xl?ULr^z(a+r-rk?hJASc zHaYlNCk2GL*UG(*gH{Ef^WUd=AmwjdQ>I)t&ar7mlsMBD0we~tWJ|fpE!gs|-DHw?f{3_ef9gKxgmap8X*+BzlCjK``LcsUBjWqu+#8_QA$$A@N0r z3he-56^LY4N9&%wnED3(IOVJlmbe-6zUvTGpIUGa{3+3Aj=g6Wd;sZcNPg3SVN-p^ zPDw3>IZ~P~q@(mEKog4StoS}+6+{t<=(t?5(s+GxVEu8K zQyj6a54zI!-usC3*&u=F9&rfXHUh>d)0zv2*gzYWb?* zhJsi0W#d65V*kh9vv#*pWceBYias5m87HyicYHRpo`a%)$cYx)^6KFv6Xpn6YTE)y zt?ibaI5|EiJOTj%ft?{d7nmKG$+9zqJv;(QfFCoK?0lNPu=m!ZyQ;dnEju0ub}fi) zRo}X=x^=5=byZ#FS11nnmrZ2P8JGHk48cEz83wImh9fe?Zz2;w_EOxn#m)ppYo(`a zdc^{YbBTX{nelv^VIu6Wr$!|OGbl+H2sea3iY*7`u`7L#36d!ld;v9>1Q~U7OiiIE zvC4h!+7wjgcQ=_ zgdtT#^noM^<+_TD3Sv|Ku1HA9G8xeYCFV|MGij24QD(M~o1rd35Z-lZJE*Od%lTRb z7+NocBN<%b2r5%{JV)bO^yz$l9zAakoUmwZ7@QU9CEkJ`4}&&C9*B%c7}cf|>vN%m z3R(s{;WdSd21MGlVf3a}$j;C>v~O%G4$;m6 z=+zQ`X-F1Gt33g$dHn!DB&WomDm;bQzKF^czo~YQocLA`BYHjsQyk1SF?~)pdiE;A zw|Y98U^PSqFvuad5@WA*R-}HQt7B>km1%{Fla2C{4mlRD3({&@@}7Q_0<|Mj6iR1A zZKdY$s=#6{HItqzoTW6hCdwcvI*ZIIV2~nzW~ykD0?L|UHHO%4ZnKKrDph?m(cnZ& z5f!4NswtG(BfyldH5d-BH7IZt`;vt#^&?pK+fpu2+mdnXYG-it5|kQwB?~c&wkgxO z!b}3O7xL+uoIJph#ed25$k39432>1U!)@HkEJR<|S57!?!4X6-V1_>vwWj0K3n+Mh zLo29wYsht@q?4Lmk1bj<&j9r0iXF&|2@a5V>C@@i;=-ufJ#oOMPh@|$Qmq$PM-?v@ z0&MEb<>-{*)AcE#y4S5Jd>D0Uz9E;X-GdPhy1LAKY7XZr3#qI(F!*}mPenO#Ss3Op zLl-B8|4Gq|4&2lfirmTQRQ66~aXh4d_oimD^0)<|eal{KFNM43`D`YiIZ>E4Ob+|& zsj>Ko?4P;*Ik2Zz3BTgiL}1^(RTLV(7NBCPB}&tAE|@L*?ISMhAc`bqxGc|1{imk? zx3scDDoF#DxMV`~KMxbSnZl{`oU!aQ%f)gNrf;?OaXXp`lihaoXbNW8I4@X>bkD3}p=VMja+%~4sk~%; zK*p=!DyFKhVQPy7@w6x5+i5bvMP0OTfM#58zOLoOqCi87LC9 z#W>JeIIYK(P5{Fhl?EHBW+;`?p%PWsPCmPR2(jgX=X2I3@>!w2HoI8Dh;Mjr>5j(h($O2Fs){l5?V6 znqdUJ7?J`e@9BvDIBQjSZ}%RL3C~YCmeo+7kNVHgS$G|e@_fvHexla40{F-M z=d-0{Oco_SpAgtzD>VZ3kNMBf;0*-o^GSg|2+n2n#Q&9lC?P^{DFuj88G_3xK#a){ zTv7pIT!!GX3J?=A1eaETI3`1Ic?Ad}t+0+w(m1lv70;5iYpuR|sqEMT)G1R3jYDGp z!tlD0%j0Y&F@tEaXk?uY7x?k^MD$-~+FVa%vzhF1a`Flfmf@gcmZHq|C6J`2mXH_KD4a|<`c;$V48}r+Pw2%Y+IjcWaj8jDGucK;>;ZD4%pAg z%aD^r4;8zC~R@VN5TivN=p#CNj-#9r2mw zK+#Nls7ODE;F%@475HUUqxe-2kx^hhhAt&%;p!>LH$acGEn3Uf26~%V03Enoa!QkPWQ_h13K#YL_VGDfjZ`HEboju3;V)0 z^|3~$9AI=2FeU#H4mGOHvgi<(91Rn%U&fVYa(}ShXpr10eshShng$6nr+YI+CRg$T z=SYO&JeE9uw(W-eHKw$k!!T3iY`J$WHRg_gTv`hVr_}06Ox?y26jQ+!C8n0SUL}>^ zPZ}mpgj}~q?^O(MN2OX%qUv6SqNob4UPKKrxUIM+Qzr_iB=5RhE;CQ%OGlx4kj9KH z8?nr&hR~^GWLU5wO!2q^>fViq!=Jr5Fma~hMD^>@0+pw9RoE^bPXgSxW2}zyO96ux$}9BDGOM7n$?^2kKr&CgHWYik>xovkFtZ|my?rK` zO$SBe6?S5Q{2j7te;ij2;wgOfD&8DSL>J&!Dt{)EeZrfO(MxTNhSkCajezwjwRR$^ zTs0uEg1HC5Wmd!G4rd>xyMonk$A1{(KF0x7C*}}>xJ~-HDFHJ=b^!(7{8uT`)R3+% zXj@mYH)U&T3M}jJMg$@Y=^W^P$a7DtRhLX%6~m`s+o(?jifUDUB?l$et2IM#nw`s` z-%8AT{9<;q2BsCQmztW1nNVdL-h-e~5{P7b9{LLNV1t>$yzg(^b`ydvyWMm(Uep8M zZiG_+BmJaDaQn$Wn~WuAz@iHC{>-ghvq}xXLtkNPrfS3mTr_c}8Hyhw) z66f&rAjG{XPw#B}t(Dd=KPiMlno&$seJ8FkSiOgS5o9YU9Uc%e%+hM9TJzEb*V}GQ zkib7f6lAYh#HYn#1UCr@H-c|#Ec^hI!dIzLaqMbEV2uHWbH@O7z#yv;JviVyu54j$ zK9N7|yGmAIm_w^2X9&E1l29wi8-tz#R@k3NMav)u^&x|cd7P`dG{?bSH{)cYA-naMv6Jz6(f%iXuP5I4M0zfjEi%HSF0B{96{PCls_RmGw5RV57rpa{;#tVd6lQmeXw|N@ z>l_orXuFlosft2>!K8E{o!lW$M5ZFmM;H|wQ9|s?F8O7Vndl+O+i-fOgB-9pm71fc zK#JsQT0B@`w_9XO8!N{@*<1CCR=M4>@VEzHcfnL|RzxU@`;%uA!ksQ0PT9nMgm!NszynpC@LifR{r5SoBLc-ZKiVpXiA_NQFx21m{|q>JBsJM!mYI$ry62qffjVCI0{AD#%_^4JZH<87i-U06R~+7F=Dy3 z$Icuw>aY7q6dkaEKBB71J*&Zgiz?BnWlsqRzMRf~N*?tz`zQO+#eXm@EYf@wOSRJS z!|wy!CjJ{88&~)LjSi2EPaMR5`|zRf?=d%m-7uzS5~p%Bf}ufRk(3x_Y-v87G-6Aj ztMW53>}X^MNsOenI9Z&|WO2t03l^tFahrz`J42pA&6Igqhtvx-X~8;TBA2$!C17MJ zPW|$KNwa^zZ7;elFQ62o(ZRv~fzqN&=Dhv?eE9H_<}b~NIhw%0*|UmVZmTj?K6-Ry zWOpK-Y1lCf^94**tfpg?F~@eSVwGzpc1gV%!Gfm+UbHuQ;GWN?Nw@43XVP=H8Ja8L zOl>fhGRUt>gN{{mZ2qNTU-19LA%$oLids&8sou0}FmG}}b##MYtl3&|EVA3vrIWP7T3=Kwof zf^a2Pa>^jx5?*^8E8DAXx&)pj-n!T#y;!%ZVkS!s@1zb-R>W%_H+n}eTtry2 zNJiq`nKQ5sF2&NbY}wSQ)LA2&nx9F3BvXd@WWzMfUojx`?&J@AF|%aD5LR9pzygDp zi<08j?gD73z&i-$mg-NfipLUs-w z&J@TK$7-#XYV09joFldaD)gR%MBW>`VIJ&h4Q1Z37i(7CxUgb1D8rG;^kX`9bZf6v ztG4YlX?zX5QL({Z(73IORj@QtUkEh0_58dB9L4{W>$~GC5AE`$&o=&lcz7ak|NjL1 zci{i`;d6)#@#OWoWq7Bc9+%I5Ha%|stZe$=)B8v6|0EC0p3}hou+#h>!^aNtf9%Ic z)BZv#+P$H%i}pV@GC6wC{`>HWZhx98I9{(j6pd}h|6@4TtMT9X#KHcb{rH^U`1Y^e zn=fs?e64d8lLG#BKuQmd2fR*MEwV`5Zj$|$)MD_eEURWWF^g7TA4v{>%rn-qx2jNJ z~Hd}5VNe!3bxoG>m)W9WLsanP?Y<@CbiXRi>@+wB9>HsYOT3llk zFg&5DaI8kT3L*{Iz??&WG6{>>bzMrS=GqX}Ea6!=lmas}TdftlGH5K~Q9@J=&%uj3 zEL@{R()WT2TtJ3fcjA4R(s8lmuJlzJOZ4nFFu>Fp$5g}!08p)J(|zji_uo4&Jo@cG zJU#^f3q^;0sX+HG(JhUFSx#c62-j{qW!eOBY+I{A(>uE>B)u_zJ%lbMV5T&V_t6xU zef`FAwPloRHcTnEPvI7aN0|M)!qC9q^hG71L!a$;Ge=(IVv2h9U zpqDq=v6{6K=oIvSLe@oz>TSI011mLDh&DgT_X!4L zgWaF;GCD&G8Ruz#zyzJ78xGO$-l_>zc+qYYY5n44++8`0GGRwinwMnSC18`jTu+1h zUPCAdQq!Sjnq-<*MSSZ>$stIs%I?lbVL)>8QDt)YC&|szWT7! zLHim{IdvoEEE)YL3h9}XxI*|8cWqR(I2k(VLZIk>*zM&NGBz+TKWG5v5^)u5P&iNZPxvUJS11CwZ*aP&I3&k+!pM?i*P&Hx zP+>F!TDsBXBoeHZFkijlSzipAt7fl3hjOZJIkpO3xx7+sY^MtZUezmtJnD%pjWUSm zrP)&HspVeUgu>GUd=ZT!f-(NU((*VgFhiTh^ZNLIY7RX`_IdiJ2&XtoI;`X6??1&ZasWUW;5 zslZT1Frt!H+qH(}(4=F~s{+FtN!TrF5HB9kXby{u2<#gaej8HCedQ!^iU-4;U1xV$ zb4}rY0G+IrKnpo~flH!Ms;ynZR&!A-e|iD}z!R7-k<5QoTlnh11zT7q)0*UB97r)s39FBQv%Dk7`p&` z$AF0#P9=zpL>!z?UQ(rWi1*uneX{rJR;^Qp#it?I7utJC-j01y8+ zzI~yx<)(h`-Kln=^ zc<)|&bK~A$Iv?EHxcA4+kDuMR_d8s(xbeou5ASc>eGvoO?#-7r?tRls06b^_)0C~v z_rL1C{%QB+KX3ivI%Tf&=Jy--KH0o~e{<{ho1M>J-umNJ8U~_BAKk^I+CTiq*4H53 zP9y<2AH4k)=;^@~Ozr;Q-aA{Lf3orYkDI^0h0!yZ!q%&wQd^;=7%y-A_&%tAp4MQ- zLY~p&=u}+~uDtx<58rj6sb2ffU53Qb<^$yva1t}Tb9)nshHykggmvlwky1!Pbv2L73aQepRf7?&J0yI*jZhXl6^x_t2%jVW2m^>wftbjt8GV-}&Oj?%N-C-@5j< zE6;X6z7K};;P>xt-M-zub`u7o&L`Ntwto0s=jx|0G{Mi!FYj&M`v|&V_r_m0Ke%7I2PJ;t_*?99d8e+OqcOasBV)^eyqz{gNC z>|A@X`{5g%JD+y0-eG!R^QbpBU;iQrx_~$j-?zTLLni?^=i(ZGuN!w?r;I|R3!;;MNEft4Cw^4!&L>~d zuVK;~RUIFp^6y;`?CauD&-R0#==d)vSrywU;U(3jhGAVS)tfbZ z)ryfXUty;XocxS`apUOYZ(6(%)tkf`zxah1ui{rPU_E4{*o!b4=B-vs0*g3P_4)Ne zT3k&g$4)B3YUv<(^RsN>@;0uHJ66+n$i?U0OQBN3ZnxNLaobswvBz+Lh?UDzR66$c z=u!F|MxYqZm^l*i0-8*Wj~rR3S{Dd~|7Gu4o7||b{H|Yrao46|&oJFBX&%@^#-N2`FKuntvsS#_UC+uk zi)!hR_^G3!JBDt3mKbRm+%?IJpRQlHj0)$)&-=f>2uhgTclSTO(ZBotquS`}pMHM- z>ZMH6&?oMC?iWUK@9R(2|Mr;_>fikWWO)z-$H$+45Rb@q_y2~jo)LX)vi~PbAnWD# z|4jL5{NLmFypDl%%^(!7gC=xk{mMm=|GZv!U2smNP+zhiDzRYGby2U2aN2U2$BS^Jiwe1HKV!H=UZ`4P%jTNB6O7kPzu z31fj%$M{G`I!?e?a{(*fsoS@Uo$x};S+XnFkKtYw^C-&OG z=R+Z!6dU@MN$O!d&NQG9g)ZPrG{if7vR?Nb&-TTc7$5>)e!2Hy)?G#;yu_j}3B2cg zC(JZDV4H;kW8|Ng;_$5Q$QivrC6gTbj8b+aQHTWB@OgM&HYw6puHqX8|f2Q(( z>dBYzlw!d-S~2HtW2H$`EMlcsUP16Iq^a7&s>ARO9-P}nBiMy?EKWW>|Mjtao@n`x9jh6A^wy;Zcki;F zwo-m{oNa^M!tPv{p#P)`Euc{{)NByZ+_Xo{T`}t@7*Mg?o$7+|M5`5UH`(z z{X4f=TTL|5&2(ep&lp_uUotv>;*kq^>zDrb!9PApbmx1w-+A!O$NdZc12A}WBHsGP z|9EioulMh~*?;qm{*5p7ARz$mx&DnS=mUKJ!~54RJ)~r(9C6C70sV+`-+uNbKzwTw z9$P(>?|v)doo0);clRpPmmvZlUiG1&ev_tB)A7`d?q@|K%gLh$Lnbo*~;) zQsd1BpZCA{fZckU97qeomZJU}Uwr%CjsEoy282HjFOnW_Y8InAE?#7}BE~1d;@*0f zBRzEgVgJG(zy0tpiK(W4phrHzqX)ma+rNILfAtzVqAz|tte0#~PMZRp{`;K= zH-9Z{KIjpD|HAqouEI7Ta>Jup|I-)uFTdG;>-PF5pX0Qt2*$Gk7P9~N)amUAiZpB( z&HX#q<@UOIEs^^K?|^%^u1gTnLLgnEo&YBOZ{EnkMC~NrrtoZk{j)zm6&Qa6pN-`| zj`w)jK2RRoX8!kc<(cQ6`hOq8XDjQU%?R3l9~;a6ApK9}^S{gGBL02!(;fW$#MfW> zXh-IbQ94PXun@bc&9l|z&nDpr+Ca62IH?CSm1Hv$x=z5FkbaF1TZ%*T7*DgV0 z$%Wr$lBB*R0AuD{&8w3srkhD8=OEe*YJybi4kWMZ^?xGC@7kNEdG0^fJol~a1CBz^ zZGvoKe41YU(@1pR3fMT#dk}2-%=k@V_cX)(3CVEZgyq10R)^-p$o1=m0{c05fynuZ z-kBslIm6I#EYS1>UPXXRz!jWQtZ@hC>Hw+axI{HdMfRZu_(O97YJzX1hc!~wTCUq= z?(e=913kyG8bp|W5G!LsjgA|Aewq^pDVqWEZJBCf<5AophtrXR2gUwp$!)XfwSYE- zevc-$jqG}Vh9>fU1S$SaM>$+L7~UxCM9;~sKfdqc37Lb%k{u@AhL~TJ_Yw9>F8q4<9{3rphYyS3QOYmcMX+8qa&BrxP$jMlJ#=C%6-!J%*G* zF!t#|zxXe-LzUT1?4O4V9p}c%qf~3>HQMNiCh-Lq&(w{8?i%4wZq#$RIVbR%eI{2j zZ6Y_tTobcuWV6rY3Ti@t>ofzgD_e1wIB-B%Zr8DV5Q+j5$DyK@XjhDnD|pCr6X@Ik zHw@!{P8UxWKrpnBYKN|&6K;D6-K3HT&^ktPqarj33y0$jtT&#KnyLyK@v|GY*ES{E z4Pq-@?XeWsx0)^)g^rPO2vs}f5lMSF3wJhhmb?15i|kAs}F~sFbuxlH@TC*kXIHP37zX1-4N&l zAm8^7Yh*e*gEZDm;Y{u90Llr|%fVQC{`~_12$8!&N5t&}5UO?xjHJCBK#ZkPFxe7+ ztW>iGn!!pX0|pOxlL6cCBIp3pH#Yy?%8nL~62i@H=OG{rwQ~@LCpeQw4q|8*QO_*R z48k^j2M>XjfTUn_O2Rk{|03~o)C194Xh_k`ke7fMeDO$RQk9LWmJNVOm1)pBD&9D4c1Gp8yni}U?|DsvzKB`?&aB#Vp3@HuL--}{ck6*oF~FJibe zl+YSTu|jWk2ee454*O?6tg^oR18;{wiLVHm+m+sCvMXO|NRfxwRIBb%glVna9kRaJ}4i-KxBTBY)T}@OJ!|%bpVa9alYM%&cu6xf}Zu3 zW{2!3lJ)VjT8@#%&T@cw9@;vXj1aUAGOtIoVi88-a%pLYrRpzy~dzOZIc>yH5yzgc*bl>wMEv z0qxdUcCf(`9->R5sRCs&!%nN3SWgC_m+_YjF|zRaXqjduk`Dt6O;;ypvr1PSKq_v~ zmBtV(axOy%hlMR<3XCaRa<`}aLu7JH0BJy$zXMoxV_Bwu9Jgj@*6{23(WHHChf+CI z)X4anqp0%vwL1PZra;b~Oi3|Fe}$cn-!q7ilAgrXxZFePg&R2lMo!$>vOtgtE72zH zgb(4g*x|4pU{X%o+y2mHMNMIqEj{)rs8h3^V6V~m_!+Mg@zG8{F2B(a?O=bxKiiD| zNDg4#P9Gb`f0WC`V*dWO@+ACt8vpSaKG_`oogC&%f!n&*N$_z;V#N!)e=$g~ZX3P@ zZN4esz*(15S2it+BqffNo%r7l9e*h)C40sZQj&cT0o76B8O!UMAD?8jc26Ah+VNV( zzo}BNumRl@IjX}6_Qi0T9Tt+KPa`Mj2qfj}8mNtwv(6et-jy`G3b!YnI3-ghL=G#; z@_gM3BNCys+0aZhP)*QyfANr6H*Dc(cwk}N9wfVLBW|~=!m3Wk?Y0_iaz3WQ!Ba3|*qbk_Lp(PSEri8&tR+8K zvRXDMTp^PFm|U#Z(F86WA|){^)c`qVE=)YLwJb!2?Htk+&jqd#uE2jYQw?LXc*K0o z30BMLP(9RhV2$m_f3zLbXlgasDCE3$^RI7Xe-S1TR6hd{3cuIc*q zhw5mcHR=TR4E!urZ~!2_?^RA|c$tJ<$voa_u51;F4+9nT=yYf8{wK4BoT5bNs`r%{6O9RXd>L$3)l$NI`|5HGwT*IMgMv%`vMNZ!)<@EIyYPzclfmBbFFcw+T327K&2^p5>};uAoSrsj z%jMzCLwVIaf48PuQN=--1HDu1K{0^mw^Fl9(gR&HrR-bjdM!7IyA|3EmB@AGW{O1- zxjyoqxuOu^s%UzRCdk8cLA_2^lK|k~?e-RnqUE;cri%M#j)Qg|`aO8LNAU)$Ah~dXiHJRfdI0k~)TS&~wpyW$C^gsM#$h_2ME*&J zs(74PC@21ZtvDLrXn)owI7F%2>!87m;Ln#7wwl_e9`0F`#E0Dz1knVK<7@#6S&(-6I1}5tkZ38QNL^?ryP= z2TO+g778!P6!IKswTR>N6#b?R8+(6GkY1-Il@-wtBg22@d4Dv@9jti8rPI2A^dgZM& z#fW-Lg;=b@)tgABxDm=K0PE8v3k6nE-h3SO+@A40NfSm-2Bs}@gc?N!_}&s{#nWT@ ze;-f=28RNdhlgH!k;Azhd1o#Ws?JgG=ABKb!B!if-U zV3_N8)K3noC>1IL(jb=HbY2>G~`te z0+(AB(K0a18Zb({VFj_Ax#BQw4Y@x;k+~!OV!Fmsl;T!Yig_#PxoYpD;X4%xe?<+Y zMkB(6>Y`EHZdBuGds(*DpYF^XhT3LZMqLqMY|$KP$*QP@B&8;rW*SM(|D40e~D&Ei*l0U zfj%><5d;n2P1Xt^04QrAmVuP&I8~9Pa;$h_3l${EY;#N~61<5dG8>m#aX7k~D0F>_ zorWc;oIQGCvOJO1_^>U@5^<--hbi^MJP?KuEj7%cI#3@eM*)iM_Ua&M%7*Z_ys?{p zSB@Q;KT(-Ku~0b?HKx=8Y!)k&O>n9FfYL35)pTm;YU_55?fYxf%?tsYE zh5nLn&}ihk$!tBef`vdXeFO{C1XfxXT)npU#rc;HRZg9G5ib%ME2N!uI95k?=K7IK ze-Q)3t`i{s#~w#jaXCZ)j@||Kuwr{Y1!e7`I&D~Uxe-n$!fmpdf3pF}yhV5;z&-$x zwqYW{w&S+9W`dGu0cHYyo!&n^J-N?-@6*M7<;j^D6A$tmqorb{VOwrHOuUyNDbMWP zh=7gl6333dFjy=@pvDH`T^=GzA_;5YV~bLno&nq{;A<2+2)ugibNF+C#^b=~q@$Y~ zJQ;UE6P(56k_CuVe~G=YvYaUn zZhuh&0}we26h>C)L4o%g?1+E~0nCH2AjH`az;cpZkUvXa%8TAL{9BJh<}0IC}TO)XlmMLY*M zt4!RrO2w(E($v1`nXwESJ}UaAYoesyV0JGMl^{-Re@M_SaFZ5pq$+GlObVhL5(D;8 z(DD$VIAujzV8Lp>JJc3-4j{Xn!eMn4gsV0}BckoovgOvI+3rnnqfQp6S`+ z&;+>(=9iQOrCO<+I9jrV^wyj`u=S%Tc84Ao1n=n|o{eHnP8UlS zxi83ipO~CRBY{ZHCdAxFOj3dFN$}>16ud{)f1o8MQa;Jvb%Y{cvw_H=q!?6!rR4{E z(TqOK4Tu+@ZGbvAIn;s<-ej+n$_3Jr{FG%(+J`|F2FlAkD3bm!7>&9UmGiR6{6dj) zRa6IjyI0NDH)YJ-NROnb1<(M3OWmEDwvV~G5B=02|{$%W3(9e05 ze}mI6{>%j{rlE~#{D>2WqzJQ#KqZUq)f!A{GfPI(xLebl&ea%=xx%okYOQo~wY4xF z?us~OhD)x0dimb1f9EsBcypnFns-JjYshI10$?IZrmeEc%WcO@0fBH4c2y6fL561? zRRtd1b^rq`rErRrEE4CA{}S^r&yD|5e`RN#6*!-EpCr=-r!$%f9I()WrYW~$@C+8RDdfE?}`gbHbTbE&i8FdzYRem0si^v=; z0U`nf?dYtMN}-m_P`ZyX;bq*R3oQT<&#h4VZcd~ zk{5C)#u>zejwIl07MDXav!ld}e;M|}w9^PqoHX{zaT1zEGU<$Vr5tmD2g;j;vXpe* z7>V;n4v%ZX6w^bDRikEM#!POWfME@^kv}bUJi#VA#EdeMijnPjfmJS+_F2XKR&koX zqWP{kZLqbO2W)BeM`0t!*{BM-Cq@z#It63%b|kW9T2PpdP5iJCNKZdMf8=LJ@qgRA z5O|aLztYsqK>XiSvH0}-r^oTxEjGEIaPaP08O@x8{c-IFAAYoc>C^kaz1jcMZ}14i z%h&sNZlhL7Z}A>Xdd1JzuiTW!H(tGlECV{?gEKMqfLmI>db@w)5BGojcfOMoFEae~ zN7(Qcc}?uSJ9pOq^LHRae^Fdt|98KC@Yy@}-@d@7ZepW6+)RsjSmV`e$|eZ=3^JKI-;(iT}smn?T2PTnD1GMs{rYD2bCe&Mfvk zTh>UTi3YlX#v+@xvG02WARx2q{Lk$e`QjlEpf3WQzW?g zOgu^cIEntxpNS`)MESPR4IuG}?AV@oOY-a1t*Te=^=oV-p~dJU5#8_Adh6D$yVbqa zQ4gPpig|f+&pn;qGD!xn%~%^BOmX}E^tFkZtCKS?To6e^W^e8@Bq!!>&u<$iJcKU` zthsG#`t-KEJe+v?f6R5l`et@*62J#gU=&S&JI}Prk^-OKoH>35TN7Y~gu{HD@CyX3 zr6GdTPwryfNa1C*3pw0tZsz%`nbW%o+CV1BJ+GwqK20hj*yneTSb_%~Ooomd<_G=o z;ZwxLZ2@Jb4$NLSlR37Xt@pN*kP(t+w*K|-pCgMkH?bYOf9Ke;(J;wbu5%2XXr5>a zn^o_*Rqwgwd(X{n+ckImS(cD=>L{TVnWrwoMm>Kceg23cHZj}8SZMab%b7!aFp@81 zhdy?3_WY@t^9SLqpfQ{=!tU(F&6%fO7Ux5e#X!e6y3cLf1_#^a(~vh=OOy=f$+5F| zHel9zOnOT(e_odYl?K!XMFJ*3#qBdawN)xfr^E7Fi&hB)ut`(bHv%D=&>ar(!&m1H zZ-sc;ldq)r?Jh`P*b0f050NwLNDenQ9S5;@2aoCgX$6l&B=4zY2w#Y_*_gaHy=x1c zhV)P{OU8UBJlII*8|NnWWzLpr@l?>CbrxZ*9FWay2=WFI|~*Wc=Udoun{eJ>`tB zTT)o?WApGzZ%zL>jrWnJDW;DT%xs^4y~}}}W3sDWbSvvcNA}$G&GVT9R|w33Xpp_l zLimIHpk%qj5!^+FU-qCA^cnJCPriuDe`kH-e~6?cMobQ`^zjKnc$Q7N=JTGzYUDhj z#}6Kh;uOpryfk<4Wili@N%1F$M)V67#=Q<=AWa7^SU?kRIW~@L0akOC%l(e@IemH0 zoj+?J*#5p8>|2=klS`IXGB?K4}R$D>4M20*ysLN9q}Ahf`tTs<{==_SZQKnWul ze;8rWPM?@NHI<(H3QvxCg!^F3y!awEg^j@aL7EIan2{kc6Fyfx^A_;T%bYun8wXhy z!U(*{PI>F_6h_2a0S=01VFgBneg{+}dx|ERIFi|Mh7baRP3EqEn7o45M7{=?nhRH$ z+_&inGU`Zj*D(bFB?XA6NL$5Tp4!Kmf8?EHS1iKMPm;Qq?j8sVBg!%f&K&cO5QZkb z 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

U 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

|@BB%&O^>dd&vw%SdMgQmVBtGXOkgN;Cc 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

LifjY7d_gO+@Wcr^)Y)s9`a%ipG&l)Io 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

am47~JI_~#+-aZ-aRNA%;p<-Zl3O1^Hw?`{x znW*L}Mh1MJL8}yu3JJZ9jTfU;f8i;Lew)rx1|Z6Y_lz83$EW-B=j);Cear=tOJV2f zDTexo=U^F90W`M~E8$t4#c_+2h^7CYeU%|v_hMM*;%iMEaWucj38jYj1MIqDaDUj& zS6^G|Qsqz%k_u|BOv1sd*hiMv>?%di%;V#xh&CbF{lX;ic?vWl7P7Q1t^1eTrhjWU z8fXmJTKNX3q%6Oa!F{v$Yp2fK_N3sGPLYK?S}fTnU9H|Zu~jdGsx$$XWSBtWk5(Jc zS7{W?3V7T@XvcUY-;Vy6z4n|X#ea!J?@Q^edw`v)F0--`L4WIkqbFS@ zK9;$_fIs70#wpE2_x@$Pu+@_kUWC*OyzPp?WN*c?Bbv%U>Ld|H!}u%<8eVFilx;`cd5t;#Kv~}%A^H|B8F0g1@yM{U3146Ri`^i zD0>#E3WzMdh0`*KwKu%0AC2M~2-#{F6C0vMX290rE2 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

}|nv1mdD8p`KVg=8v<_ATmRw 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