diff --git a/backport-psi-util-fix-error-handling.patch b/backport-psi-util-fix-error-handling.patch new file mode 100644 index 0000000000000000000000000000000000000000..209857b3d65da17f6f6ba8c9eb94c2bf5d2b97fa --- /dev/null +++ b/backport-psi-util-fix-error-handling.patch @@ -0,0 +1,60 @@ +From 90ec8ebe33ec72ed6d9f451de9443d67dd351d72 Mon Sep 17 00:00:00 2001 +From: Lennart Poettering +Date: Mon, 27 Feb 2023 19:02:41 +0100 +Subject: [PATCH] psi-util: fix error handling + +We checked ERRNO_IS_NOT_SUPPORTED on a possible positive non-error code, +which isn't right. + +Fix that. Also add caching, since we are about to call this more often. + +Reference: https://github.com/systemd/systemd/pull/26610/commits/1ea90a9d409999159345ad8e193f7ef4cc7f634d + +Signed-off-by: zhaoxiaohu +Signed-off-by: yuwang +--- + src/shared/psi-util.c | 23 ++++++++++++++--------- + 1 file changed, 14 insertions(+), 9 deletions(-) + +diff --git a/src/shared/psi-util.c b/src/shared/psi-util.c +index 009095e..9045ae2 100644 +--- a/src/shared/psi-util.c ++++ b/src/shared/psi-util.c +@@ -106,20 +106,25 @@ int read_resource_pressure(const char *path, PressureType type, ResourcePressure + } + + int is_pressure_supported(void) { ++ static thread_local int cached = -1; + const char *p; ++ int r; + +- /* The pressure files, both under /proc and in cgroups, will exist +- * even if the kernel has PSI support disabled; we have to read +- * the file to make sure it doesn't return -EOPNOTSUPP */ +- FOREACH_STRING(p, "/proc/pressure/cpu", "/proc/pressure/io", "/proc/pressure/memory") { +- int r; ++ /* The pressure files, both under /proc/ and in cgroups, will exist even if the kernel has PSI ++ * support disabled; we have to read the file to make sure it doesn't return -EOPNOTSUPP */ + ++ if (cached >= 0) ++ return cached; ++ ++ FOREACH_STRING(p, "/proc/pressure/cpu", "/proc/pressure/io", "/proc/pressure/memory") { + r = read_virtual_file(p, 0, NULL, NULL); +- if (r == -ENOENT || ERRNO_IS_NOT_SUPPORTED(r)) +- return 0; +- if (r < 0) ++ if (r < 0) { ++ if (r == -ENOENT || ERRNO_IS_NOT_SUPPORTED(r)) ++ return (cached = false); ++ + return r; ++ } + } + +- return 1; ++ return (cached = true); + } +-- +2.33.0 + diff --git a/systemd.spec b/systemd.spec index 149faeadeef010f58e68c960ddad8a606124dde8..a65de1faf27da4e45052ce84c2a42961f216ef52 100644 --- a/systemd.spec +++ b/systemd.spec @@ -21,7 +21,7 @@ Name: systemd Url: https://systemd.io/ Version: 249 -Release: 88 +Release: 89 License: MIT and LGPLv2+ and GPLv2+ Summary: System and Service Manager @@ -659,6 +659,7 @@ Patch6610: backport-sysusers-insist-that-root-group-is-0.patch Patch6611: backport-importd-Always-specify-file-unpacked-by-tar.patch Patch6612: backport-docs-remove-dev-tty-confusion.patch Patch6613: backport-wait-online-make-manager_link_is_online-return-0-whe.patch +Patch6614: backport-psi-util-fix-error-handling.patch Patch9001: update-rtc-with-system-clock-when-shutdown.patch Patch9002: udev-add-actions-while-rename-netif-failed.patch @@ -2145,6 +2146,9 @@ grep -q -E '^KEYMAP="?fi-latin[19]"?' /etc/vconsole.conf 2>/dev/null && %{_libdir}/security/pam_systemd.so %changelog +* Wed Sep 4 2024 zhaoxiaohu - 249-89 +- add backport-psi-util-fix-error-handling.patch + * Mon Sep 2 2024 zhaoxiaohu - 249-88 - wait-online: fix handling of unmanaged state - add backport-wait-online-make-manager_link_is_online-return-0-whe.patch