From e72e282de332889e9625612bdf13b4609e755fca Mon Sep 17 00:00:00 2001 From: Jan Macku Date: Tue, 18 Aug 2026 14:41:00 +0200 Subject: [PATCH] systemd-252-77 Resolves: RHEL-155457, RHEL-105520 --- ...util.sh-needed-for-assert_-functions.patch | 33 +++ 1372-test-drop-forgotten-set-e.patch | 44 ++++ ...journal-treble-field-hash-table-size.patch | 243 ++++++++++++++++++ systemd.spec | 10 +- 4 files changed, 329 insertions(+), 1 deletion(-) create mode 100644 1371-test-include-util.sh-needed-for-assert_-functions.patch create mode 100644 1372-test-drop-forgotten-set-e.patch create mode 100644 1373-journal-treble-field-hash-table-size.patch diff --git a/1371-test-include-util.sh-needed-for-assert_-functions.patch b/1371-test-include-util.sh-needed-for-assert_-functions.patch new file mode 100644 index 0000000..0cb61d6 --- /dev/null +++ b/1371-test-include-util.sh-needed-for-assert_-functions.patch @@ -0,0 +1,33 @@ +From 9b0799c1faaf2e7fde0625e0f915b8a4bc83728d Mon Sep 17 00:00:00 2001 +From: Frantisek Sumsal +Date: Tue, 11 Aug 2026 19:18:23 +0200 +Subject: [PATCH] test: include util.sh needed for assert_*() functions + +This is needed by the test backported by +219f89250a9d41c357eb1224f624ae3cf08cf4e9. + +In upstream the include was introduced as part of +5db456d06511ed537e5f6870e9d6b1afe50587c8, but we don't have the +necessary prerequisites in RHEL 9, so let's add just the include +manually. + +rhel-only: ci +Related: RHEL-155457 +--- + test/units/testsuite-03.sh | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/test/units/testsuite-03.sh b/test/units/testsuite-03.sh +index ec51b20bf0..a08a0b1f0e 100755 +--- a/test/units/testsuite-03.sh ++++ b/test/units/testsuite-03.sh +@@ -3,6 +3,9 @@ + set -eux + set -o pipefail + ++# shellcheck source=test/units/util.sh ++. "$(dirname "$0")"/util.sh ++ + # Simple test for that daemon-reexec works in container. + # See: https://github.com/systemd/systemd/pull/23883 + systemctl daemon-reexec diff --git a/1372-test-drop-forgotten-set-e.patch b/1372-test-drop-forgotten-set-e.patch new file mode 100644 index 0000000..2a9c428 --- /dev/null +++ b/1372-test-drop-forgotten-set-e.patch @@ -0,0 +1,44 @@ +From 598acc4d04be90d4c88efabec5063955992eaa36 Mon Sep 17 00:00:00 2001 +From: Frantisek Sumsal +Date: Tue, 11 Aug 2026 14:18:32 +0200 +Subject: [PATCH] test: drop forgotten `set +e` + +This was introduced all the way back in 2019 where this particular test +case was the last one in the file, so it worked as intended. +Unfortunately, since then we added new tests after this one, which means +this particular `set +e` masked fails in any of them (except for +assert_*() calls, which call exit on fail). + +(cherry picked from commit 143c2845676fa5838ac4abf6b6fb9de80e12915e) + +Related: RHEL-155457 +--- + test/units/testsuite-03.sh | 7 +++---- + 1 file changed, 3 insertions(+), 4 deletions(-) + +diff --git a/test/units/testsuite-03.sh b/test/units/testsuite-03.sh +index a08a0b1f0e..7dee3cb707 100755 +--- a/test/units/testsuite-03.sh ++++ b/test/units/testsuite-03.sh +@@ -105,13 +105,10 @@ ELAPSED=$((END_SEC-START_SEC)) + + # Test time-limited scopes + START_SEC=$(date -u '+%s') +-set +e +-systemd-run --scope --property=RuntimeMaxSec=3s sleep 10 +-RESULT=$? ++(! systemd-run --scope --property=RuntimeMaxSec=3s sleep 10) + END_SEC=$(date -u '+%s') + ELAPSED=$((END_SEC-START_SEC)) + [[ "$ELAPSED" -ge 3 ]] && [[ "$ELAPSED" -le 5 ]] || exit 1 +-[[ "$RESULT" -ne 0 ]] || exit 1 + + # Test restart mode direct + systemctl start succeeds-on-restart-restartdirect.target +@@ -126,4 +123,6 @@ assert_rc 3 systemctl --quiet is-active succeeds-on-restart.target + systemctl start fails-on-restart.target || : + assert_rc 3 systemctl --quiet is-active fails-on-restart.target + ++systemctl stop fails-on-restart.service ++ + touch /testok diff --git a/1373-journal-treble-field-hash-table-size.patch b/1373-journal-treble-field-hash-table-size.patch new file mode 100644 index 0000000..daff567 --- /dev/null +++ b/1373-journal-treble-field-hash-table-size.patch @@ -0,0 +1,243 @@ +From b9e506b15b3469bb2f19b71697ef0a28eb409a5a Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= +Date: Wed, 30 Jul 2025 11:52:26 +0200 +Subject: [PATCH] journal: treble field hash table size + +As discussed in https://github.com/systemd/systemd/issues/38399, "ordinary" +systems can have the field table with a large number of values, causing journal +rotation to occur early. For example, audit generates a log of fields: +$ journalctl --fields | rg -c '^_?AUDIT' +114 + +It seems that the "structured log" capabilities of the journal are being use +more than in the past. Looking at some journal files on my system, it seems +the field hash table field is quite high in many cases: +$ build/test-journal-dump /var/log/journal/*/* | rg 'table fill' +Data hash table fill: 15.1% +Field hash table fill: 69.1% +Data hash table fill: 4.9% +Field hash table fill: 32.4% +Data hash table fill: 10.2% +Field hash table fill: 34.2% +Data hash table fill: 9.9% +Field hash table fill: 37.2% +Data hash table fill: 26.8% +Field hash table fill: 21.9% +Data hash table fill: 35.6% +Field hash table fill: 22.8% +Data hash table fill: 25.5% +Field hash table fill: 54.1% +Data hash table fill: 3.4% +Field hash table fill: 43.8% +Data hash table fill: 75.0% +Field hash table fill: 70.3% +Data hash table fill: 75.0% +Field hash table fill: 63.1% +Data hash table fill: 75.0% +Field hash table fill: 74.2% +Data hash table fill: 35.6% +Field hash table fill: 43.2% +Data hash table fill: 35.5% +Field hash table fill: 75.4% +Data hash table fill: 75.0% +Field hash table fill: 59.8% +Data hash table fill: 75.0% +Field hash table fill: 56.5% +Data hash table fill: 16.9% +Field hash table fill: 76.3% +Data hash table fill: 18.1% +Field hash table fill: 76.9% +Data hash table fill: 75.0% +Field hash table fill: 42.0% +Data hash table fill: 75.0% +Field hash table fill: 22.8% +Data hash table fill: 75.0% +Field hash table fill: 22.8% +Data hash table fill: 75.0% +Field hash table fill: 22.8% +Data hash table fill: 75.0% +Field hash table fill: 22.8% +Data hash table fill: 75.0% +Field hash table fill: 32.1% +Data hash table fill: 75.0% +Field hash table fill: 21.9% +Data hash table fill: 75.0% +Field hash table fill: 21.9% +Data hash table fill: 75.0% +Field hash table fill: 21.9% +Data hash table fill: 75.0% +Field hash table fill: 22.8% +Data hash table fill: 75.0% +Field hash table fill: 22.8% +Data hash table fill: 75.0% +Field hash table fill: 21.9% +Data hash table fill: 75.0% +Field hash table fill: 22.5% +Data hash table fill: 9.6% +Field hash table fill: 53.8% +Data hash table fill: 75.0% +Field hash table fill: 22.2% +Data hash table fill: 75.0% +Field hash table fill: 22.2% +Data hash table fill: 75.0% +Field hash table fill: 22.2% +Data hash table fill: 35.6% +Field hash table fill: 75.1% +Data hash table fill: 33.6% +Field hash table fill: 50.2% +Data hash table fill: 75.0% +Field hash table fill: 26.7% +Data hash table fill: 75.0% +Field hash table fill: 25.8% +Data hash table fill: 75.0% +Field hash table fill: 29.1% +Data hash table fill: 75.0% +Field hash table fill: 25.8% +Data hash table fill: 75.0% +Field hash table fill: 31.8% +Data hash table fill: 75.0% +Field hash table fill: 18.9% +Data hash table fill: 75.0% +Field hash table fill: 22.2% +Data hash table fill: 75.0% +Field hash table fill: 20.1% +Data hash table fill: 75.0% +Field hash table fill: 29.1% +Data hash table fill: 75.0% +Field hash table fill: 30.9% +Data hash table fill: 75.0% +Field hash table fill: 28.5% +Data hash table fill: 75.0% +Field hash table fill: 28.5% +Data hash table fill: 75.0% +Field hash table fill: 25.8% +Data hash table fill: 75.0% +Field hash table fill: 25.2% +Data hash table fill: 75.0% +Field hash table fill: 39.3% +Data hash table fill: 50.2% +Field hash table fill: 75.1% +Data hash table fill: 75.0% +Field hash table fill: 61.9% +Data hash table fill: 75.0% +Field hash table fill: 56.5% +Data hash table fill: 75.0% +Field hash table fill: 58.6% +Data hash table fill: 48.9% +Field hash table fill: 79.6% +Data hash table fill: 75.0% +Field hash table fill: 71.5% +Data hash table fill: 75.0% +Field hash table fill: 60.1% +Data hash table fill: 31.4% +Field hash table fill: 75.7% +Data hash table fill: 27.0% +Field hash table fill: 69.4% +Data hash table fill: 28.9% +Field hash table fill: 76.6% +Data hash table fill: 60.2% +Field hash table fill: 79.9% +Data hash table fill: 8.8% +Field hash table fill: 78.7% +Data hash table fill: 5.8% +Field hash table fill: 61.3% +Data hash table fill: 75.0% +Field hash table fill: 64.0% +Data hash table fill: 61.4% +Field hash table fill: 63.4% +Data hash table fill: 29.7% +Field hash table fill: 61.9% +Data hash table fill: 18.9% +Field hash table fill: 30.9% +Data hash table fill: 1.4% +Field hash table fill: 22.2% +Data hash table fill: 0.4% +Field hash table fill: 13.5% +Data hash table fill: 2.6% +Field hash table fill: 37.5% +Data hash table fill: 1.3% +Field hash table fill: 23.4% +Data hash table fill: 0.6% +Field hash table fill: 15.3% +Data hash table fill: 18.7% +Field hash table fill: 33.9% +Data hash table fill: 7.4% +Field hash table fill: 37.5% +Data hash table fill: 20.2% +Field hash table fill: 44.1% +Data hash table fill: 1.3% +Field hash table fill: 33.0% +Data hash table fill: 75.0% +Field hash table fill: 19.2% +Data hash table fill: 42.2% +Field hash table fill: 23.4% +Data hash table fill: 1.6% +Field hash table fill: 87.1% +Data hash table fill: 0.1% +Field hash table fill: 98.8% +Data hash table fill: 0.2% +Field hash table fill: 128.8% +Data hash table fill: 15.4% +Field hash table fill: 31.2% +Data hash table fill: 7.4% +Field hash table fill: 22.5% +Data hash table fill: 10.5% +Field hash table fill: 38.7% +Data hash table fill: 2.8% +Field hash table fill: 18.0% +Data hash table fill: 1.5% +Field hash table fill: 15.9% +Data hash table fill: 0.0% +Field hash table fill: 7.5% +Data hash table fill: 0.1% +Field hash table fill: 12.0% +Data hash table fill: 0.2% +Field hash table fill: 10.8% +Data hash table fill: 0.2% +Field hash table fill: 15.6% +Data hash table fill: 0.1% +Field hash table fill: 11.7% +Data hash table fill: 0.1% +Field hash table fill: 12.0% +Data hash table fill: 0.0% +Field hash table fill: 6.6% +Data hash table fill: 1.4% +Field hash table fill: 18.0% +Data hash table fill: 0.7% +Field hash table fill: 16.8% +Data hash table fill: 1.1% +Field hash table fill: 18.0% +Data hash table fill: 0.2% +Field hash table fill: 10.8% +Data hash table fill: 0.1% +Field hash table fill: 10.8% +Data hash table fill: 0.4% +Field hash table fill: 11.1% + +Since filling of the field hash table to 75% normally causes file rotation, +let's double the default to make rotation happen less often. +We'll use 11kB more for the hash table, which should be fine, considering +that journal files are usually at least 8 MB. + +Closes https://github.com/systemd/systemd/issues/38399. + +(cherry picked from commit e8962d77ac5a10926d0216246cfb5ad5dc25a533) + +Resolves: RHEL-105520 +--- + src/libsystemd/sd-journal/journal-file.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/libsystemd/sd-journal/journal-file.c b/src/libsystemd/sd-journal/journal-file.c +index e8c9d4dc3d..3ac6abef1d 100644 +--- a/src/libsystemd/sd-journal/journal-file.c ++++ b/src/libsystemd/sd-journal/journal-file.c +@@ -38,7 +38,7 @@ + #include "xattr-util.h" + + #define DEFAULT_DATA_HASH_TABLE_SIZE (2047ULL*sizeof(HashItem)) +-#define DEFAULT_FIELD_HASH_TABLE_SIZE (333ULL*sizeof(HashItem)) ++#define DEFAULT_FIELD_HASH_TABLE_SIZE (1023ULL*sizeof(HashItem)) + + #define DEFAULT_COMPRESS_THRESHOLD (512ULL) + #define MIN_COMPRESS_THRESHOLD (8ULL) diff --git a/systemd.spec b/systemd.spec index d97404e..82be312 100644 --- a/systemd.spec +++ b/systemd.spec @@ -21,7 +21,7 @@ Name: systemd Url: https://systemd.io Version: 252 -Release: 76%{?dist} +Release: 77%{?dist} # For a breakdown of the licensing, see README License: LGPLv2+ and MIT and GPLv2+ Summary: System and Service Manager @@ -1453,6 +1453,9 @@ Patch1367: 1367-repart-use-iovec-structure-for-key-file.patch Patch1368: 1368-repart-make-tpm2-pcrs-also-configurable-in-repart.d.patch Patch1369: 1369-repart-make-key-file-also-configurable-in-repart.d.patch Patch1370: 1370-man-repart-fix-typo.patch +Patch1371: 1371-test-include-util.sh-needed-for-assert_-functions.patch +Patch1372: 1372-test-drop-forgotten-set-e.patch +Patch1373: 1373-journal-treble-field-hash-table-size.patch # Downstream-only patches (9000–9999) @@ -2330,6 +2333,11 @@ systemd-hwdb update &>/dev/null || : %{_prefix}/lib/dracut/modules.d/70rhel-net-naming-sysattrs/* %changelog +* Tue Aug 18 2026 systemd maintenance team - 252-77 +- test: include util.sh needed for assert_*() functions (RHEL-155457) +- test: drop forgotten `set +e` (RHEL-155457) +- journal: treble field hash table size (RHEL-105520) + * Wed Aug 05 2026 systemd maintenance team - 252-76 - resolved: replace assert() with error return in DNSSEC verify functions (RHEL-208860) - pid1: introduce new SERVICE_{DEAD|FAILED}_BEFORE_AUTO_RESTART service substates (RHEL-137251)