diff --git a/.gitignore b/.gitignore index a7c1639..aebd0f7 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -SOURCES/tuned-2.24.0.tar.gz +SOURCES/tuned-2.25.1.tar.gz diff --git a/.tuned.metadata b/.tuned.metadata index 2018d90..13800b1 100644 --- a/.tuned.metadata +++ b/.tuned.metadata @@ -1 +1 @@ -15e516facaececaa788c2decae4bcd9f46781ffc SOURCES/tuned-2.24.0.tar.gz +2041e65c2e31cd76c60c401bdf538eb4253ea7b4 SOURCES/tuned-2.25.1.tar.gz diff --git a/SOURCES/tuned-2.24.0-revert-profile-migration.patch b/SOURCES/tuned-2.24.0-revert-profile-migration.patch deleted file mode 100644 index 4d60699..0000000 --- a/SOURCES/tuned-2.24.0-revert-profile-migration.patch +++ /dev/null @@ -1,508 +0,0 @@ -diff --git a/Makefile b/Makefile -index f73f572..1f30598 100644 ---- a/Makefile -+++ b/Makefile -@@ -47,8 +47,8 @@ $(error Failed to determine python library directory) - endif - KERNELINSTALLHOOKDIR = /usr/lib/kernel/install.d - TUNED_SYSTEM_DIR = /usr/lib/tuned --TUNED_PROFILES_DIR = $(TUNED_SYSTEM_DIR)/profiles --TUNED_RECOMMEND_DIR = $(TUNED_SYSTEM_DIR)/recommend.d -+TUNED_PROFILES_DIR = /usr/lib/tuned -+TUNED_RECOMMEND_DIR = $(TUNED_PROFILES_DIR)/recommend.d - TUNED_USER_RECOMMEND_DIR = $(SYSCONFDIR)/tuned/recommend.d - BASH_COMPLETIONS = $(DATADIR)/bash-completion/completions - -@@ -68,7 +68,7 @@ release-cp: release-dir - tuned-adm.bash dbus.conf recommend.conf tuned-main.conf 00_tuned \ - 92-tuned.install bootcmdline modules.conf com.redhat.tuned.policy \ - tuned-gui.py tuned-gui.glade tuned-ppd.py \ -- tuned-gui.desktop functions $(VERSIONED_NAME) -+ tuned-gui.desktop $(VERSIONED_NAME) - cp -a doc experiments libexec man profiles systemtap tuned contrib icons \ - tests $(VERSIONED_NAME) - -@@ -135,7 +135,6 @@ install-dirs: - mkdir -p $(DESTDIR)/run/tuned - mkdir -p $(DESTDIR)$(DOCDIR) - mkdir -p $(DESTDIR)$(SYSCONFDIR) -- mkdir -p $(DESTDIR)$(SYSCONFDIR)/tuned/profiles - mkdir -p $(DESTDIR)$(TUNED_RECOMMEND_DIR) - mkdir -p $(DESTDIR)$(TUNED_USER_RECOMMEND_DIR) - -diff --git a/doc/manual/modules/performance/con_inheritance-between-tuned-profiles.adoc b/doc/manual/modules/performance/con_inheritance-between-tuned-profiles.adoc -index d72cc98..63517ac 100644 ---- a/doc/manual/modules/performance/con_inheritance-between-tuned-profiles.adoc -+++ b/doc/manual/modules/performance/con_inheritance-between-tuned-profiles.adoc -@@ -15,7 +15,7 @@ include=[replaceable]_parent_ - - All settings from the [replaceable]_parent_ profile are loaded in this _child_ profile. In the following sections, the _child_ profile can override certain settings inherited from the [replaceable]_parent_ profile or add new settings not present in the [replaceable]_parent_ profile. - --You can create your own _child_ profile in the [filename]`/etc/tuned/profiles/` directory based on a pre-installed profile in [filename]`/usr/lib/tuned/profiles/` with only some parameters adjusted. -+You can create your own _child_ profile in the [filename]`/etc/tuned/` directory based on a pre-installed profile in [filename]`/usr/lib/tuned/` with only some parameters adjusted. - - If the [replaceable]_parent_ profile is updated, such as after a *TuneD* upgrade, the changes are reflected in the _child_ profile. - -diff --git a/doc/manual/modules/performance/con_the-location-of-tuned-profiles.adoc b/doc/manual/modules/performance/con_the-location-of-tuned-profiles.adoc -index 4cd35b3..678ff6a 100644 ---- a/doc/manual/modules/performance/con_the-location-of-tuned-profiles.adoc -+++ b/doc/manual/modules/performance/con_the-location-of-tuned-profiles.adoc -@@ -5,17 +5,17 @@ - [role="_abstract"] - *TuneD* stores profiles in the following directories: - --[filename]`/usr/lib/tuned/profiles/`:: --Distribution-specific profiles are stored in the [filename]`/usr/lib/tuned/profiles/` directory. Each profile has its own directory. The profile consists of the main configuration file called `tuned.conf`, and optionally other files, for example helper scripts. -+[filename]`/usr/lib/tuned/`:: -+Distribution-specific profiles are stored in the [filename]`/usr/lib/tuned/` directory. Each profile has its own directory. The profile consists of the main configuration file called `tuned.conf`, and optionally other files, for example helper scripts. - --[filename]`/etc/tuned/profiles/`:: --If you need to customize a profile, copy the profile directory into the [filename]`/etc/tuned/profiles/` directory, which is used for custom profiles, and then adjust it. If there is a system profile and a custom profile of the same name, the custom profile located in [filename]`/etc/tuned/profiles` is used. -+[filename]`/etc/tuned/`:: -+If you need to customize a profile, copy the profile directory into the [filename]`/etc/tuned/` directory, which is used for custom profiles, and then adjust it. If there is a system profile and a custom profile of the same name, the custom profile located in [filename]`/etc/tuned/` is used. - - .User-defined profile directories - ==== --If you want to make TuneD load profiles from a directory other than [filename]`/usr/lib/tuned/profiles/` and [filename]`/etc/tuned/profiles/`, you can list it in [filename]`/etc/tuned/tuned-main.conf` as follows: -+If you want to make TuneD load profiles from a directory other than [filename]`/usr/lib/tuned/` and [filename]`/etc/tuned/`, you can list it in [filename]`/etc/tuned/tuned-main.conf` as follows: - ---- --profile_dirs=/usr/lib/tuned/profiles,/etc/tuned/profiles,/my/custom/profiles -+profile_dirs=/usr/lib/tuned,/etc/tuned,/my/custom/profiles - ---- - In this example, profiles are loaded also from [filename]`/my/custom/profiles/`. If two directories contain profiles with the same names, the one that is listed later takes precedence. - ==== -diff --git a/doc/manual/modules/performance/proc_creating-new-tuned-profiles.adoc b/doc/manual/modules/performance/proc_creating-new-tuned-profiles.adoc -index 114e83a..36ea120 100644 ---- a/doc/manual/modules/performance/proc_creating-new-tuned-profiles.adoc -+++ b/doc/manual/modules/performance/proc_creating-new-tuned-profiles.adoc -@@ -17,11 +17,11 @@ endif::[] - - .Procedure - --. In the [filename]`/etc/tuned/profiles/` directory, create a new directory named the same as the profile that you want to create: -+. In the [filename]`/etc/tuned/` directory, create a new directory named the same as the profile that you want to create: - + - [subs=+quotes] - ---- --# mkdir /etc/tuned/profiles/[replaceable]_my-profile_ -+# mkdir /etc/tuned/[replaceable]_my-profile_ - ---- - - . In the new directory, create a file named [filename]`tuned.conf`. Add a `[main]` section and plug-in definitions in it, according to your requirements. -diff --git a/doc/manual/modules/performance/proc_modifying-existing-tuned-profiles.adoc b/doc/manual/modules/performance/proc_modifying-existing-tuned-profiles.adoc -index ba413fe..4447a3f 100644 ---- a/doc/manual/modules/performance/proc_modifying-existing-tuned-profiles.adoc -+++ b/doc/manual/modules/performance/proc_modifying-existing-tuned-profiles.adoc -@@ -17,11 +17,11 @@ endif::[] - - .Procedure - --. In the [filename]`/etc/tuned/profiles/` directory, create a new directory named the same as the profile that you want to create: -+. In the [filename]`/etc/tuned/` directory, create a new directory named the same as the profile that you want to create: - + - [subs=+quotes] - ---- --# mkdir /etc/tuned/profiles/[replaceable]_modified-profile_ -+# mkdir /etc/tuned/[replaceable]_modified-profile_ - ---- - - . In the new directory, create a file named [filename]`tuned.conf`, and set the `[main]` section as follows: -@@ -75,13 +75,13 @@ See TuneD log file ('/var/log/tuned/tuned.log') for details. - ---- - - // .An alternative approach --// . Alternatively, copy the directory with a system profile from /usr/lib/tuned/profiles/ to /etc/tuned/profiles/. For example: -+// . Alternatively, copy the directory with a system profile from /user/lib/tuned/ to /etc/tuned/. For example: - // + - // ---- --// # cp -r /usr/lib/tuned/profiles/throughput-performance /etc/tuned/profiles -+// # cp -r /usr/lib/tuned/throughput-performance /etc/tuned - // ---- - // --// . Then, edit the profile in /etc/tuned/profiles/ according to your needs. Note that if there are two profiles of the same name, the profile located in /etc/tuned/profiles/ is loaded. The disadvantage of this approach is that if a system profile is updated after a TuneD upgrade, the changes will not be reflected in the now-outdated modified version. -+// . Then, edit the profile in /etc/tuned according to your needs. Note that if there are two profiles of the same name, the profile located in /etc/tuned/ is loaded. The disadvantage of this approach is that if a system profile is updated after a TuneD upgrade, the changes will not be reflected in the now-outdated modified version. - - [role="_additional-resources"] - .Additional resources -diff --git a/doc/manual/modules/performance/proc_setting-the-disk-scheduler-using-tuned.adoc b/doc/manual/modules/performance/proc_setting-the-disk-scheduler-using-tuned.adoc -index 3314717..72a3e66 100644 ---- a/doc/manual/modules/performance/proc_setting-the-disk-scheduler-using-tuned.adoc -+++ b/doc/manual/modules/performance/proc_setting-the-disk-scheduler-using-tuned.adoc -@@ -64,7 +64,7 @@ $ tuned-adm active - + - [subs=+quotes] - ---- --# mkdir /etc/tuned/profiles/[replaceable]__my-profile__ -+# mkdir /etc/tuned/[replaceable]__my-profile__ - ---- - - . Find the system unique identifier of the selected block device: -@@ -83,7 +83,7 @@ ID_SERIAL_SHORT=_20120501030900000_ - The command in the this example will return all values identified as a World Wide Name (WWN) or serial number associated with the specified block device. Although it is preferred to use a WWN, the WWN is not always available for a given device and any values returned by the example command are acceptable to use as the _device system unique ID_. - ==== - --. Create the `/etc/tuned/profiles/[replaceable]_my-profile_/tuned.conf` configuration file. In the file, set the following options: -+. Create the `/etc/tuned/_my-profile_/tuned.conf` configuration file. In the file, set the following options: - - .. Optional: Include an existing profile: - + -diff --git a/man/tuned-adm.8 b/man/tuned-adm.8 -index 972f8b6..f29966d 100644 ---- a/man/tuned-adm.8 -+++ b/man/tuned-adm.8 -@@ -31,8 +31,8 @@ This command line utility allows you to switch between user definable tuning - profiles. Several predefined profiles are already included. You can even - create your own profile, either based on one of the existing ones by copying - it or make a completely new one. The distribution provided profiles are stored --in subdirectories below \fI/usr/lib/tuned/profiles/\fP and the user defined profiles in --subdirectories below \fI/etc/tuned/profiles/\fP. If there are profiles with the same name -+in subdirectories below \fI/usr/lib/tuned\fP and the user defined profiles in -+subdirectories below \fI/etc/tuned\fP. If there are profiles with the same name - in both places, user defined profiles have precedence. - - .SH "OPTIONS" -diff --git a/man/tuned-profiles.7 b/man/tuned-profiles.7 -index c710da9..10cad7b 100644 ---- a/man/tuned-profiles.7 -+++ b/man/tuned-profiles.7 -@@ -30,9 +30,9 @@ performance optimizations but there are also profiles targeted to - low power consumption, low latency and others. You can mostly deduce the - purpose of the profile by its name or you can see full description below. - --The profiles are stored in subdirectories below \fI/usr/lib/tuned/profiles/\fP. If you --need to customize the profiles, you can copy them to \fI/etc/tuned/profiles/\fP and modify --them as you need. When loading profiles with the same name, \fI/etc/tuned/profiles/\fP takes -+The profiles are stored in subdirectories below \fI/usr/lib/tuned\fP. If you -+need to customize the profiles, you can copy them to \fI/etc/tuned\fP and modify -+them as you need. When loading profiles with the same name, the /etc/tuned takes - precedence. In such case you will not lose your customized profiles between - TuneD updates. - -@@ -143,8 +143,8 @@ throughput\-performance profile. - - .SH "FILES" - .nf --.I /etc/tuned/profiles/* --.I /usr/lib/tuned/profiles/* -+.I /etc/tuned/* -+.I /usr/lib/tuned/* - - .SH "SEE ALSO" - .BR tuned (8) -diff --git a/man/tuned.conf.5 b/man/tuned.conf.5 -index c319130..464b6be 100644 ---- a/man/tuned.conf.5 -+++ b/man/tuned.conf.5 -@@ -3,8 +3,8 @@ - tuned.conf - TuneD profile definition - .SH DESCRIPTION - This man page documents format of TuneD 2.0 profile definition files. --The profile definition is stored in /etc/tuned/profiles//tuned.conf or in --/usr/lib/tuned/profiles//tuned.conf file where the /etc/tuned/profiles/ directory has -+The profile definition is stored in /etc/tuned//tuned.conf or in -+/usr/lib/tuned//tuned.conf file where the /etc/tuned/ directory has - higher priority. - - The \fBtuned.conf\fR configures the profile and it is in ini-file format. -diff --git a/tests/beakerlib/Traceback-caused-by-scheduler-plugin-with/runtest.sh b/tests/beakerlib/Traceback-caused-by-scheduler-plugin-with/runtest.sh -index d5cce71..559bb02 100755 ---- a/tests/beakerlib/Traceback-caused-by-scheduler-plugin-with/runtest.sh -+++ b/tests/beakerlib/Traceback-caused-by-scheduler-plugin-with/runtest.sh -@@ -18,7 +18,7 @@ - . /usr/share/beakerlib/beakerlib.sh || exit 1 - - PACKAGE="tuned" --PROFILE_DIR="/etc/tuned/profiles" -+PROFILE_DIR="/usr/lib/tuned" - - rlJournalStart - rlPhaseStartSetup -diff --git a/tests/beakerlib/bz1798183-RFE-support-post-loaded-profile/runtest.sh b/tests/beakerlib/bz1798183-RFE-support-post-loaded-profile/runtest.sh -index 4825ceb..5b871c7 100755 ---- a/tests/beakerlib/bz1798183-RFE-support-post-loaded-profile/runtest.sh -+++ b/tests/beakerlib/bz1798183-RFE-support-post-loaded-profile/runtest.sh -@@ -18,11 +18,10 @@ - . /usr/share/beakerlib/beakerlib.sh || exit 1 - - PACKAGE="tuned" --SYSCONF_DIR=/etc/tuned --PROFILE_DIR=$SYSCONF_DIR/profiles --ACTIVE_PROFILE=$SYSCONF_DIR/active_profile --PROFILE_MODE=$SYSCONF_DIR/profile_mode --POST_LOADED_PROFILE=$SYSCONF_DIR/post_loaded_profile -+PROFILE_DIR=/etc/tuned -+ACTIVE_PROFILE=/etc/tuned/active_profile -+PROFILE_MODE=/etc/tuned/profile_mode -+POST_LOADED_PROFILE=/etc/tuned/post_loaded_profile - SWAPPINESS=vm.swappiness - DIRTY_RATIO=vm.dirty_ratio - PID_FILE=/run/tuned/tuned.pid -@@ -65,7 +64,7 @@ rlJournalStart - rlImport "tuned/basic" - tunedDisableSystemdRateLimitingStart - rlRun "for PYTHON in $PYTHON_CHECK; do \$PYTHON --version 2>/dev/null && break; done" 0 "Detect python" -- rlRun "rlFileBackup --clean $SYSCONF_DIR" -+ rlRun "rlFileBackup --clean $PROFILE_DIR" - rlRun "cp -r parent $PROFILE_DIR" - rlRun "cp -r parent2 $PROFILE_DIR" - rlRun "cp -r parent-vars $PROFILE_DIR" -diff --git a/tests/beakerlib/bz2071418-TuneD-exits-on-duplicate-config-lines-new/runtest.sh b/tests/beakerlib/bz2071418-TuneD-exits-on-duplicate-config-lines-new/runtest.sh -index 8ecda75..9354b7d 100755 ---- a/tests/beakerlib/bz2071418-TuneD-exits-on-duplicate-config-lines-new/runtest.sh -+++ b/tests/beakerlib/bz2071418-TuneD-exits-on-duplicate-config-lines-new/runtest.sh -@@ -18,7 +18,7 @@ - . /usr/share/beakerlib/beakerlib.sh || exit 1 - - PACKAGE="tuned" --PROFILE_DIR=/etc/tuned/profiles -+PROFILE_DIR="/usr/lib/tuned" - - rlJournalStart - rlPhaseStartSetup -diff --git a/tests/beakerlib/error-messages/runtest.sh b/tests/beakerlib/error-messages/runtest.sh -index 12f535e..0a45da2 100755 ---- a/tests/beakerlib/error-messages/runtest.sh -+++ b/tests/beakerlib/error-messages/runtest.sh -@@ -18,7 +18,7 @@ - . /usr/share/beakerlib/beakerlib.sh || exit 1 - - PACKAGE="tuned" --PROFILE_DIR="/usr/lib/tuned/profiles" -+PROFILE_DIR="/usr/lib/tuned" - - rlJournalStart - rlPhaseStartSetup -diff --git a/tests/beakerlib/variables-support-in-profiles/runtest.sh b/tests/beakerlib/variables-support-in-profiles/runtest.sh -index 145bd9e..d6d50f7 100755 ---- a/tests/beakerlib/variables-support-in-profiles/runtest.sh -+++ b/tests/beakerlib/variables-support-in-profiles/runtest.sh -@@ -18,7 +18,7 @@ - . /usr/share/beakerlib/beakerlib.sh || exit 1 - - PACKAGE="tuned" --PROFILE_DIR="/usr/lib/tuned/profiles" -+PROFILE_DIR="/usr/lib/tuned" - - rlJournalStart - rlPhaseStartSetup -diff --git a/tuned-adm.bash b/tuned-adm.bash -index 18c716b..a4e6075 100644 ---- a/tuned-adm.bash -+++ b/tuned-adm.bash -@@ -9,7 +9,7 @@ _tuned_adm() - if [[ "$cword" -eq 1 ]]; then - COMPREPLY=( $(compgen -W "$commands" -- "$cur" ) ) - elif [[ "$cword" -eq 2 && ("$prev" == "profile" || "$prev" == "profile_info") ]]; then -- COMPREPLY=( $(compgen -W "$(command find /usr/lib/tuned/profiles /etc/tuned/profiles -mindepth 1 -maxdepth 1 -type d -printf "%f\n")" -- "$cur" ) ) -+ COMPREPLY=( $(compgen -W "$(command find /usr/lib/tuned /etc/tuned -mindepth 1 -maxdepth 1 -type d -printf "%f\n")" -- "$cur" ) ) - else - COMPREPLY=() - fi -diff --git a/tuned-main.conf b/tuned-main.conf -index 1f1269f..86bca4d 100644 ---- a/tuned-main.conf -+++ b/tuned-main.conf -@@ -86,4 +86,4 @@ log_file_max_size = 1MB - # Directories to search for profiles separated by , or ; - # In case of conflicts in profile names, the later directory - # takes precedence --# profile_dirs = /usr/lib/tuned/profiles,/etc/tuned/profiles -+# profile_dirs = /usr/lib/tuned,/etc/tuned -diff --git a/tuned.spec b/tuned.spec -index fc3c5d4..3e4bf99 100644 ---- a/tuned.spec -+++ b/tuned.spec -@@ -329,14 +329,6 @@ if [ -r "%{_sysconfdir}/default/grub" ]; then - %{_sysconfdir}/default/grub - fi - --%if 0%{?fedora} || 0%{?rhel} >= 10 --# migrate all user-defined profiles from /etc/tuned/ to /etc/tuned/profiles/ --for f in %{_sysconfdir}/tuned/*; do -- if [ -e "$f/tuned.conf" ]; then -- mv -n "$f" %{_sysconfdir}/tuned/profiles/ -- fi --done --%endif - - - %post ppd -@@ -453,34 +445,33 @@ fi - %exclude %{_sysconfdir}/tuned/realtime-virtual-host-variables.conf - %exclude %{_sysconfdir}/tuned/cpu-partitioning-variables.conf - %exclude %{_sysconfdir}/tuned/cpu-partitioning-powersave-variables.conf --%exclude %{_prefix}/lib/tuned/profiles/default --%exclude %{_prefix}/lib/tuned/profiles/desktop-powersave --%exclude %{_prefix}/lib/tuned/profiles/laptop-ac-powersave --%exclude %{_prefix}/lib/tuned/profiles/server-powersave --%exclude %{_prefix}/lib/tuned/profiles/laptop-battery-powersave --%exclude %{_prefix}/lib/tuned/profiles/enterprise-storage --%exclude %{_prefix}/lib/tuned/profiles/spindown-disk --%exclude %{_prefix}/lib/tuned/profiles/sap-netweaver --%exclude %{_prefix}/lib/tuned/profiles/sap-hana --%exclude %{_prefix}/lib/tuned/profiles/sap-hana-kvm-guest --%exclude %{_prefix}/lib/tuned/profiles/mssql --%exclude %{_prefix}/lib/tuned/profiles/oracle --%exclude %{_prefix}/lib/tuned/profiles/atomic-host --%exclude %{_prefix}/lib/tuned/profiles/atomic-guest --%exclude %{_prefix}/lib/tuned/profiles/realtime --%exclude %{_prefix}/lib/tuned/profiles/realtime-virtual-guest --%exclude %{_prefix}/lib/tuned/profiles/realtime-virtual-host --%exclude %{_prefix}/lib/tuned/profiles/cpu-partitioning --%exclude %{_prefix}/lib/tuned/profiles/cpu-partitioning-powersave --%exclude %{_prefix}/lib/tuned/profiles/spectrumscale-ece --%exclude %{_prefix}/lib/tuned/profiles/postgresql --%exclude %{_prefix}/lib/tuned/profiles/openshift --%exclude %{_prefix}/lib/tuned/profiles/openshift-control-plane --%exclude %{_prefix}/lib/tuned/profiles/openshift-node -+%exclude %{_prefix}/lib/tuned/default -+%exclude %{_prefix}/lib/tuned/desktop-powersave -+%exclude %{_prefix}/lib/tuned/laptop-ac-powersave -+%exclude %{_prefix}/lib/tuned/server-powersave -+%exclude %{_prefix}/lib/tuned/laptop-battery-powersave -+%exclude %{_prefix}/lib/tuned/enterprise-storage -+%exclude %{_prefix}/lib/tuned/spindown-disk -+%exclude %{_prefix}/lib/tuned/sap-netweaver -+%exclude %{_prefix}/lib/tuned/sap-hana -+%exclude %{_prefix}/lib/tuned/sap-hana-kvm-guest -+%exclude %{_prefix}/lib/tuned/mssql -+%exclude %{_prefix}/lib/tuned/oracle -+%exclude %{_prefix}/lib/tuned/atomic-host -+%exclude %{_prefix}/lib/tuned/atomic-guest -+%exclude %{_prefix}/lib/tuned/realtime -+%exclude %{_prefix}/lib/tuned/realtime-virtual-guest -+%exclude %{_prefix}/lib/tuned/realtime-virtual-host -+%exclude %{_prefix}/lib/tuned/cpu-partitioning -+%exclude %{_prefix}/lib/tuned/cpu-partitioning-powersave -+%exclude %{_prefix}/lib/tuned/spectrumscale-ece -+%exclude %{_prefix}/lib/tuned/postgresql -+%exclude %{_prefix}/lib/tuned/openshift -+%exclude %{_prefix}/lib/tuned/openshift-control-plane -+%exclude %{_prefix}/lib/tuned/openshift-node - %{_prefix}/lib/tuned - %dir %{_sysconfdir}/tuned - %dir %{_sysconfdir}/tuned/recommend.d --%dir %{_sysconfdir}/tuned/profiles - %dir %{_libexecdir}/tuned - %{_libexecdir}/tuned/defirqaffinity* - %config(noreplace) %verify(not size mtime md5) %{_sysconfdir}/tuned/active_profile -@@ -534,40 +525,40 @@ fi - %{_mandir}/man8/scomes.* - - %files profiles-sap --%{_prefix}/lib/tuned/profiles/sap-netweaver -+%{_prefix}/lib/tuned/sap-netweaver - %{_mandir}/man7/tuned-profiles-sap.7* - - %files profiles-sap-hana --%{_prefix}/lib/tuned/profiles/sap-hana --%{_prefix}/lib/tuned/profiles/sap-hana-kvm-guest -+%{_prefix}/lib/tuned/sap-hana -+%{_prefix}/lib/tuned/sap-hana-kvm-guest - %{_mandir}/man7/tuned-profiles-sap-hana.7* - - %files profiles-mssql --%{_prefix}/lib/tuned/profiles/mssql -+%{_prefix}/lib/tuned/mssql - %{_mandir}/man7/tuned-profiles-mssql.7* - - %files profiles-oracle --%{_prefix}/lib/tuned/profiles/oracle -+%{_prefix}/lib/tuned/oracle - %{_mandir}/man7/tuned-profiles-oracle.7* - - %files profiles-atomic --%{_prefix}/lib/tuned/profiles/atomic-host --%{_prefix}/lib/tuned/profiles/atomic-guest -+%{_prefix}/lib/tuned/atomic-host -+%{_prefix}/lib/tuned/atomic-guest - %{_mandir}/man7/tuned-profiles-atomic.7* - - %files profiles-realtime - %config(noreplace) %{_sysconfdir}/tuned/realtime-variables.conf --%{_prefix}/lib/tuned/profiles/realtime -+%{_prefix}/lib/tuned/realtime - %{_mandir}/man7/tuned-profiles-realtime.7* - - %files profiles-nfv-guest - %config(noreplace) %{_sysconfdir}/tuned/realtime-virtual-guest-variables.conf --%{_prefix}/lib/tuned/profiles/realtime-virtual-guest -+%{_prefix}/lib/tuned/realtime-virtual-guest - %{_mandir}/man7/tuned-profiles-nfv-guest.7* - - %files profiles-nfv-host - %config(noreplace) %{_sysconfdir}/tuned/realtime-virtual-host-variables.conf --%{_prefix}/lib/tuned/profiles/realtime-virtual-host -+%{_prefix}/lib/tuned/realtime-virtual-host - %{_mandir}/man7/tuned-profiles-nfv-host.7* - - %files profiles-nfv -@@ -576,32 +567,32 @@ fi - %files profiles-cpu-partitioning - %config(noreplace) %{_sysconfdir}/tuned/cpu-partitioning-variables.conf - %config(noreplace) %{_sysconfdir}/tuned/cpu-partitioning-powersave-variables.conf --%{_prefix}/lib/tuned/profiles/cpu-partitioning --%{_prefix}/lib/tuned/profiles/cpu-partitioning-powersave -+%{_prefix}/lib/tuned/cpu-partitioning -+%{_prefix}/lib/tuned/cpu-partitioning-powersave - %{_mandir}/man7/tuned-profiles-cpu-partitioning.7* - - %files profiles-spectrumscale --%{_prefix}/lib/tuned/profiles/spectrumscale-ece -+%{_prefix}/lib/tuned/spectrumscale-ece - %{_mandir}/man7/tuned-profiles-spectrumscale-ece.7* - - %files profiles-compat --%{_prefix}/lib/tuned/profiles/default --%{_prefix}/lib/tuned/profiles/desktop-powersave --%{_prefix}/lib/tuned/profiles/laptop-ac-powersave --%{_prefix}/lib/tuned/profiles/server-powersave --%{_prefix}/lib/tuned/profiles/laptop-battery-powersave --%{_prefix}/lib/tuned/profiles/enterprise-storage --%{_prefix}/lib/tuned/profiles/spindown-disk -+%{_prefix}/lib/tuned/default -+%{_prefix}/lib/tuned/desktop-powersave -+%{_prefix}/lib/tuned/laptop-ac-powersave -+%{_prefix}/lib/tuned/server-powersave -+%{_prefix}/lib/tuned/laptop-battery-powersave -+%{_prefix}/lib/tuned/enterprise-storage -+%{_prefix}/lib/tuned/spindown-disk - %{_mandir}/man7/tuned-profiles-compat.7* - - %files profiles-postgresql --%{_prefix}/lib/tuned/profiles/postgresql -+%{_prefix}/lib/tuned/postgresql - %{_mandir}/man7/tuned-profiles-postgresql.7* - - %files profiles-openshift --%{_prefix}/lib/tuned/profiles/openshift --%{_prefix}/lib/tuned/profiles/openshift-control-plane --%{_prefix}/lib/tuned/profiles/openshift-node -+%{_prefix}/lib/tuned/openshift -+%{_prefix}/lib/tuned/openshift-control-plane -+%{_prefix}/lib/tuned/openshift-node - %{_mandir}/man7/tuned-profiles-openshift.7* - - %files ppd -diff --git a/tuned/consts.py b/tuned/consts.py -index 5134684..76e5a42 100644 ---- a/tuned/consts.py -+++ b/tuned/consts.py -@@ -13,7 +13,7 @@ DBUS_INTERFACE = "com.redhat.tuned.control" - DBUS_OBJECT = "/Tuned" - DEFAULT_PROFILE = "balanced" - DEFAULT_STORAGE_FILE = "/run/tuned/save.pickle" --SYSTEM_PROFILE_DIR = "/usr/lib/tuned/profiles" -+SYSTEM_PROFILE_DIR = "/usr/lib/tuned" - PERSISTENT_STORAGE_DIR = "/var/lib/tuned" - PLUGIN_MAIN_UNIT_NAME = "main" - # Magic section header because ConfigParser does not support "headerless" config -@@ -174,7 +174,7 @@ CFG_FUNC_UNIX_SOCKET_CONNECTIONS_BACKLOG = "getint" - # default rollback strategy - CFG_DEF_ROLLBACK = "auto" - # default profile directories --CFG_DEF_PROFILE_DIRS = [SYSTEM_PROFILE_DIR, "/etc/tuned/profiles"] -+CFG_DEF_PROFILE_DIRS = [SYSTEM_PROFILE_DIR, "/etc/tuned"] - - PATH_CPU_DMA_LATENCY = "/dev/cpu_dma_latency" - diff --git a/SOURCES/tuned-2.25.0-revert-profile-migration.patch b/SOURCES/tuned-2.25.0-revert-profile-migration.patch new file mode 100644 index 0000000..bfe769d --- /dev/null +++ b/SOURCES/tuned-2.25.0-revert-profile-migration.patch @@ -0,0 +1,187 @@ +diff --git a/doc/manual/modules/performance/con_inheritance-between-tuned-profiles.adoc b/doc/manual/modules/performance/con_inheritance-between-tuned-profiles.adoc +index f5ff98a..2662c29 100644 +--- a/doc/manual/modules/performance/con_inheritance-between-tuned-profiles.adoc ++++ b/doc/manual/modules/performance/con_inheritance-between-tuned-profiles.adoc +@@ -15,7 +15,7 @@ include=[replaceable]_parent_ + + All settings from the [replaceable]_parent_ profile are loaded in this _child_ profile. In the following sections, the _child_ profile can override certain settings inherited from the [replaceable]_parent_ profile or add new settings not present in the [replaceable]_parent_ profile. + +-You can create your own _child_ profile in the [filename]`/etc/tuned/profiles/` directory based on a pre-installed profile in [filename]`/usr/lib/tuned/profiles/` with only some parameters adjusted. ++You can create your own _child_ profile in the [filename]`/etc/tuned/` directory based on a pre-installed profile in [filename]`/usr/lib/tuned/` with only some parameters adjusted. + + If the [replaceable]_parent_ profile is updated, such as after a *TuneD* upgrade, the changes are reflected in the _child_ profile. + +diff --git a/doc/manual/modules/performance/con_the-location-of-tuned-profiles.adoc b/doc/manual/modules/performance/con_the-location-of-tuned-profiles.adoc +index 4cd35b3..678ff6a 100644 +--- a/doc/manual/modules/performance/con_the-location-of-tuned-profiles.adoc ++++ b/doc/manual/modules/performance/con_the-location-of-tuned-profiles.adoc +@@ -5,17 +5,17 @@ + [role="_abstract"] + *TuneD* stores profiles in the following directories: + +-[filename]`/usr/lib/tuned/profiles/`:: +-Distribution-specific profiles are stored in the [filename]`/usr/lib/tuned/profiles/` directory. Each profile has its own directory. The profile consists of the main configuration file called `tuned.conf`, and optionally other files, for example helper scripts. ++[filename]`/usr/lib/tuned/`:: ++Distribution-specific profiles are stored in the [filename]`/usr/lib/tuned/` directory. Each profile has its own directory. The profile consists of the main configuration file called `tuned.conf`, and optionally other files, for example helper scripts. + +-[filename]`/etc/tuned/profiles/`:: +-If you need to customize a profile, copy the profile directory into the [filename]`/etc/tuned/profiles/` directory, which is used for custom profiles, and then adjust it. If there is a system profile and a custom profile of the same name, the custom profile located in [filename]`/etc/tuned/profiles` is used. ++[filename]`/etc/tuned/`:: ++If you need to customize a profile, copy the profile directory into the [filename]`/etc/tuned/` directory, which is used for custom profiles, and then adjust it. If there is a system profile and a custom profile of the same name, the custom profile located in [filename]`/etc/tuned/` is used. + + .User-defined profile directories + ==== +-If you want to make TuneD load profiles from a directory other than [filename]`/usr/lib/tuned/profiles/` and [filename]`/etc/tuned/profiles/`, you can list it in [filename]`/etc/tuned/tuned-main.conf` as follows: ++If you want to make TuneD load profiles from a directory other than [filename]`/usr/lib/tuned/` and [filename]`/etc/tuned/`, you can list it in [filename]`/etc/tuned/tuned-main.conf` as follows: + ---- +-profile_dirs=/usr/lib/tuned/profiles,/etc/tuned/profiles,/my/custom/profiles ++profile_dirs=/usr/lib/tuned,/etc/tuned,/my/custom/profiles + ---- + In this example, profiles are loaded also from [filename]`/my/custom/profiles/`. If two directories contain profiles with the same names, the one that is listed later takes precedence. + ==== +diff --git a/doc/manual/modules/performance/proc_creating-new-tuned-profiles.adoc b/doc/manual/modules/performance/proc_creating-new-tuned-profiles.adoc +index 7f7c75f..5c83a4c 100644 +--- a/doc/manual/modules/performance/proc_creating-new-tuned-profiles.adoc ++++ b/doc/manual/modules/performance/proc_creating-new-tuned-profiles.adoc +@@ -17,11 +17,11 @@ endif::[] + + .Procedure + +-. In the [filename]`/etc/tuned/profiles/` directory, create a new directory named the same as the profile that you want to create: ++. In the [filename]`/etc/tuned/` directory, create a new directory named the same as the profile that you want to create: + + + [subs="quotes"] + ---- +-# mkdir /etc/tuned/profiles/[replaceable]_my-profile_ ++# mkdir /etc/tuned/[replaceable]_my-profile_ + ---- + + . In the new directory, create a file named [filename]`tuned.conf`. Add a `[main]` section and plug-in definitions in it, according to your requirements. +diff --git a/doc/manual/modules/performance/proc_modifying-existing-tuned-profiles.adoc b/doc/manual/modules/performance/proc_modifying-existing-tuned-profiles.adoc +index 8134030..9ed5d0b 100644 +--- a/doc/manual/modules/performance/proc_modifying-existing-tuned-profiles.adoc ++++ b/doc/manual/modules/performance/proc_modifying-existing-tuned-profiles.adoc +@@ -17,11 +17,11 @@ endif::[] + + .Procedure + +-. In the [filename]`/etc/tuned/profiles/` directory, create a new directory named the same as the profile that you want to create: ++. In the [filename]`/etc/tuned/` directory, create a new directory named the same as the profile that you want to create: + + + [subs="quotes"] + ---- +-# mkdir /etc/tuned/profiles/[replaceable]_modified-profile_ ++# mkdir /etc/tuned/[replaceable]_modified-profile_ + ---- + + . In the new directory, create a file named [filename]`tuned.conf`, and set the `[main]` section as follows: +@@ -75,13 +75,13 @@ See TuneD log file ('/var/log/tuned/tuned.log') for details. + ---- + + // .An alternative approach +-// . Alternatively, copy the directory with a system profile from /usr/lib/tuned/profiles/ to /etc/tuned/profiles/. For example: ++// . Alternatively, copy the directory with a system profile from /user/lib/tuned/ to /etc/tuned/. For example: + // + + // ---- +-// # cp -r /usr/lib/tuned/profiles/throughput-performance /etc/tuned/profiles ++// # cp -r /usr/lib/tuned/throughput-performance /etc/tuned + // ---- + // +-// . Then, edit the profile in /etc/tuned/profiles/ according to your needs. Note that if there are two profiles of the same name, the profile located in /etc/tuned/profiles/ is loaded. The disadvantage of this approach is that if a system profile is updated after a TuneD upgrade, the changes will not be reflected in the now-outdated modified version. ++// . Then, edit the profile in /etc/tuned according to your needs. Note that if there are two profiles of the same name, the profile located in /etc/tuned/ is loaded. The disadvantage of this approach is that if a system profile is updated after a TuneD upgrade, the changes will not be reflected in the now-outdated modified version. + + [role="_additional-resources"] + .Additional resources +diff --git a/doc/manual/modules/performance/proc_setting-the-disk-scheduler-using-tuned.adoc b/doc/manual/modules/performance/proc_setting-the-disk-scheduler-using-tuned.adoc +index c4c5a3c..d66f261 100644 +--- a/doc/manual/modules/performance/proc_setting-the-disk-scheduler-using-tuned.adoc ++++ b/doc/manual/modules/performance/proc_setting-the-disk-scheduler-using-tuned.adoc +@@ -58,7 +58,7 @@ $ tuned-adm active + + + [subs="quotes"] + ---- +-# mkdir /etc/tuned/profiles/[replaceable]__my-profile__ ++# mkdir /etc/tuned/[replaceable]__my-profile__ + ---- + + . Find the system unique identifier of the selected block device: +@@ -77,7 +77,7 @@ ID_SERIAL_SHORT=_20120501030900000_ + The command in the this example will return all values identified as a World Wide Name (WWN) or serial number associated with the specified block device. Although it is preferred to use a WWN, the WWN is not always available for a given device and any values returned by the example command are acceptable to use as the _device system unique ID_. + ==== + +-. Create the `/etc/tuned/profiles/[replaceable]_my-profile_/tuned.conf` configuration file. In the file, set the following options: ++. Create the `/etc/tuned/_my-profile_/tuned.conf` configuration file. In the file, set the following options: + + .. Optional: Include an existing profile: + + +diff --git a/man/tuned-adm.8 b/man/tuned-adm.8 +index 972f8b6..f29966d 100644 +--- a/man/tuned-adm.8 ++++ b/man/tuned-adm.8 +@@ -31,8 +31,8 @@ This command line utility allows you to switch between user definable tuning + profiles. Several predefined profiles are already included. You can even + create your own profile, either based on one of the existing ones by copying + it or make a completely new one. The distribution provided profiles are stored +-in subdirectories below \fI/usr/lib/tuned/profiles/\fP and the user defined profiles in +-subdirectories below \fI/etc/tuned/profiles/\fP. If there are profiles with the same name ++in subdirectories below \fI/usr/lib/tuned\fP and the user defined profiles in ++subdirectories below \fI/etc/tuned\fP. If there are profiles with the same name + in both places, user defined profiles have precedence. + + .SH "OPTIONS" +diff --git a/man/tuned-profiles.7 b/man/tuned-profiles.7 +index 1fc8b6b..6bd98a5 100644 +--- a/man/tuned-profiles.7 ++++ b/man/tuned-profiles.7 +@@ -30,9 +30,9 @@ performance optimizations but there are also profiles targeted to + low power consumption, low latency and others. You can mostly deduce the + purpose of the profile by its name or you can see full description below. + +-The profiles are stored in subdirectories below \fI/usr/lib/tuned/profiles/\fP. If you +-need to customize the profiles, you can copy them to \fI/etc/tuned/profiles/\fP and modify +-them as you need. When loading profiles with the same name, \fI/etc/tuned/profiles/\fP takes ++The profiles are stored in subdirectories below \fI/usr/lib/tuned\fP. If you ++need to customize the profiles, you can copy them to \fI/etc/tuned\fP and modify ++them as you need. When loading profiles with the same name, the /etc/tuned takes + precedence. In such case you will not lose your customized profiles between + TuneD updates. + +@@ -150,8 +150,8 @@ throughput\-performance profile. + + .SH "FILES" + .nf +-.I /etc/tuned/profiles/* +-.I /usr/lib/tuned/profiles/* ++.I /etc/tuned/* ++.I /usr/lib/tuned/* + + .SH "SEE ALSO" + .BR tuned (8) +diff --git a/man/tuned.conf.5 b/man/tuned.conf.5 +index c319130..464b6be 100644 +--- a/man/tuned.conf.5 ++++ b/man/tuned.conf.5 +@@ -3,8 +3,8 @@ + tuned.conf - TuneD profile definition + .SH DESCRIPTION + This man page documents format of TuneD 2.0 profile definition files. +-The profile definition is stored in /etc/tuned/profiles//tuned.conf or in +-/usr/lib/tuned/profiles//tuned.conf file where the /etc/tuned/profiles/ directory has ++The profile definition is stored in /etc/tuned//tuned.conf or in ++/usr/lib/tuned//tuned.conf file where the /etc/tuned/ directory has + higher priority. + + The \fBtuned.conf\fR configures the profile and it is in ini-file format. +diff --git a/tuned-adm.bash b/tuned-adm.bash +index 18c716b..a4e6075 100644 +--- a/tuned-adm.bash ++++ b/tuned-adm.bash +@@ -9,7 +9,7 @@ _tuned_adm() + if [[ "$cword" -eq 1 ]]; then + COMPREPLY=( $(compgen -W "$commands" -- "$cur" ) ) + elif [[ "$cword" -eq 2 && ("$prev" == "profile" || "$prev" == "profile_info") ]]; then +- COMPREPLY=( $(compgen -W "$(command find /usr/lib/tuned/profiles /etc/tuned/profiles -mindepth 1 -maxdepth 1 -type d -printf "%f\n")" -- "$cur" ) ) ++ COMPREPLY=( $(compgen -W "$(command find /usr/lib/tuned /etc/tuned -mindepth 1 -maxdepth 1 -type d -printf "%f\n")" -- "$cur" ) ) + else + COMPREPLY=() + fi diff --git a/SOURCES/tuned-2.25.1-bootc-kargs.patch b/SOURCES/tuned-2.25.1-bootc-kargs.patch new file mode 100644 index 0000000..64a3b83 --- /dev/null +++ b/SOURCES/tuned-2.25.1-bootc-kargs.patch @@ -0,0 +1,311 @@ +From 91cb383ad7339873da3480463061500a308ba825 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Pavol=20=C5=BD=C3=A1=C4=8Dik?= +Date: Fri, 31 Jan 2025 12:43:08 +0100 +Subject: [PATCH 1/2] bootloader: Simplify tuning of rpm-ostree kargs + +The bootloader plugin claims that it does not mess +with existing kernel parameters; make sure we adhere +to that also for rpm-ostree systems: + +1. Only append a new karg if the same key=value pair +does not already appear in kernel parameters. If we would +duplicate it, it would not be possible to determine which +one to delete when unapplying the profile. + +2. Do not delete existing key=value pairs when the profile +adds a karg with another value for the key. A single key can +appear multiple times in the kernel parameter list with different +values. + +Also make sure new kargs are added exactly in the order in which +they appear in the profile. This is especially important for kargs +related to hugepages. + +Resolves: RHEL-45836 +--- + tuned/consts.py | 1 - + tuned/plugins/plugin_bootloader.py | 142 +++++++++++------------------ + 2 files changed, 53 insertions(+), 90 deletions(-) + +diff --git a/tuned/consts.py b/tuned/consts.py +index 577ad9583..a92c78060 100644 +--- a/tuned/consts.py ++++ b/tuned/consts.py +@@ -43,7 +43,6 @@ + INITRD_IMAGE_DIR = "/boot" + BOOT_CMDLINE_TUNED_VAR = "TUNED_BOOT_CMDLINE" + BOOT_CMDLINE_INITRD_ADD_VAR = "TUNED_BOOT_INITRD_ADD" +-BOOT_CMDLINE_KARGS_DELETED_VAR = "TUNED_BOOT_KARGS_DELETED" + BOOT_CMDLINE_FILE = "/etc/tuned/bootcmdline" + PETITBOOT_DETECT_DIR = "/sys/firmware/opal" + MACHINE_ID_FILE = "/etc/machine-id" +diff --git a/tuned/plugins/plugin_bootloader.py b/tuned/plugins/plugin_bootloader.py +index 4c66189fb..07a66d265 100644 +--- a/tuned/plugins/plugin_bootloader.py ++++ b/tuned/plugins/plugin_bootloader.py +@@ -209,24 +209,6 @@ def _get_config_options(cls): + "skip_grub_config": None, + } + +- @staticmethod +- def _options_to_dict(options, omit=""): +- """ +- Returns dict created from options +- e.g.: _options_to_dict("A=A A=B A B=A C=A", "A=B B=A B=B") returns {'A': ['A', None], 'C': ['A']} +- """ +- d = {} +- omit = omit.split() +- for o in options.split(): +- if o not in omit: +- arr = o.split('=', 1) +- d.setdefault(arr[0], []).append(arr[1] if len(arr) > 1 else None) +- return d +- +- @staticmethod +- def _dict_to_options(d): +- return " ".join([k + "=" + v1 if v1 is not None else k for k, v in d.items() for v1 in v]) +- + def _rpm_ostree_status(self): + """ + Returns status of rpm-ostree transactions or None if not run on rpm-ostree system +@@ -241,68 +223,45 @@ def _rpm_ostree_status(self): + return None + return splited[1] + +- def _wait_till_idle(self): ++ def _wait_till_rpm_ostree_idle(self): ++ """Check that rpm-ostree is idle, allowing some waiting time.""" + sleep_cycles = 10 + sleep_secs = 1.0 +- for i in range(sleep_cycles): ++ for _ in range(sleep_cycles): + if self._rpm_ostree_status() == "idle": + return True + sleep(sleep_secs) +- if self._rpm_ostree_status() == "idle": +- return True +- return False ++ return self._rpm_ostree_status() == "idle" ++ ++ def _get_rpm_ostree_kargs(self): ++ """Retrieve the output of rpm-ostree kargs, i.e., current default kernel arguments.""" ++ if not self._wait_till_rpm_ostree_idle(): ++ log.error("Error getting rpm-ostree kargs: rpm-ostree is busy") ++ return None ++ (rc, out, err) = self._cmd.execute(["rpm-ostree", "kargs"], return_err=True) ++ if out: ++ log.debug("rpm-ostree kargs: %s" % out) ++ if rc != 0: ++ log.error("Error getting rpm-ostree kargs: %s" % err) ++ return None ++ return out + +- def _rpm_ostree_kargs(self, append={}, delete={}): ++ def _modify_rpm_ostree_kargs(self, delete_kargs=[], append_kargs=[]): + """ +- Method for appending or deleting rpm-ostree karg +- returns None if rpm-ostree not present or is run on not ostree system +- or tuple with new kargs, appended kargs and deleted kargs ++ Modify (delete and append) kernel arguments in a rpm-ostree system. ++ Return a boolean indicating whether the operation was successful. + """ +- (rc, out, err) = self._cmd.execute(['rpm-ostree', 'kargs'], return_err=True) +- log.debug("rpm-ostree output stdout:\n%s\nstderr:\n%s" % (out, err)) +- if rc != 0: +- return None, None, None +- kargs = self._options_to_dict(out) +- +- if not self._wait_till_idle(): +- log.error("Cannot wait for transaction end") +- return None, None, None +- +- deleted = {} +- delete_params = self._dict_to_options(delete).split() +- # Deleting kargs, e.g. deleting added kargs by profile +- for k, val in delete.items(): +- for v in val: +- kargs[k].remove(v) +- deleted[k] = val +- +- appended = {} +- append_params = self._dict_to_options(append).split() +- # Appending kargs, e.g. new kargs by profile or restoring kargs replaced by profile +- for k, val in append.items(): +- if kargs.get(k): +- # If there is karg that we add with new value we want to delete it +- # and store old value for restoring after profile unload +- log.debug("adding rpm-ostree kargs %s: %s for delete" % (k, kargs[k])) +- deleted.setdefault(k, []).extend(kargs[k]) +- delete_params.extend([k + "=" + v if v is not None else k for v in kargs[k]]) +- kargs[k] = [] +- kargs.setdefault(k, []).extend(val) +- appended[k] = val +- +- if append_params == delete_params: +- log.info("skipping rpm-ostree kargs - append == deleting (%s)" % append_params) +- return kargs, appended, deleted +- +- log.info("rpm-ostree kargs - appending: '%s'; deleting: '%s'" % (append_params, delete_params)) +- (rc, _, err) = self._cmd.execute(['rpm-ostree', 'kargs'] + +- ['--append=%s' % v for v in append_params] + +- ['--delete=%s' % v for v in delete_params], return_err=True) ++ if not self._wait_till_rpm_ostree_idle(): ++ log.error("Error modifying rpm-ostree kargs: rpm-ostree is busy") ++ return False ++ (rc, _, err) = self._cmd.execute( ++ ["rpm-ostree", "kargs"] + ++ ["--delete=%s" % karg for karg in delete_kargs] + ++ ["--append=%s" % karg for karg in append_kargs], return_err=True) + if rc != 0: +- log.error("Something went wrong with rpm-ostree kargs\n%s" % (err)) +- return self._options_to_dict(out), None, None +- else: +- return kargs, appended, deleted ++ log.error("Error modifying rpm-ostree kargs: %s" % err) ++ return False ++ return True + + def _get_effective_options(self, options): + """Merge provided options with plugin default options and merge all cmdline.* options.""" +@@ -368,18 +327,16 @@ def _remove_grub2_tuning(self): + log.info("removing initrd image '%s'" % self._initrd_dst_img_val) + self._cmd.unlink(self._initrd_dst_img_val) + +- def _get_rpm_ostree_changes(self): ++ def _get_appended_rpm_ostree_kargs(self): ++ """Return the list of kernel arguments that were appended by this profile (in a rpm-ostree system).""" + f = self._cmd.read_file(consts.BOOT_CMDLINE_FILE) + appended = re.search(consts.BOOT_CMDLINE_TUNED_VAR + r"=\"(.*)\"", f, flags=re.MULTILINE) +- appended = appended[1] if appended else "" +- deleted = re.search(consts.BOOT_CMDLINE_KARGS_DELETED_VAR + r"=\"(.*)\"", f, flags=re.MULTILINE) +- deleted = deleted[1] if deleted else "" +- return appended, deleted ++ return appended[1].split() if appended else [] + + def _remove_rpm_ostree_tuning(self): +- appended, deleted = self._get_rpm_ostree_changes() +- self._rpm_ostree_kargs(append=self._options_to_dict(deleted), delete=self._options_to_dict(appended)) +- self._patch_bootcmdline({consts.BOOT_CMDLINE_TUNED_VAR: "", consts.BOOT_CMDLINE_KARGS_DELETED_VAR: ""}) ++ """Remove kernel parameter tuning in a rpm-ostree system.""" ++ self._modify_rpm_ostree_kargs(delete_kargs=self._get_appended_rpm_ostree_kargs()) ++ self._patch_bootcmdline({consts.BOOT_CMDLINE_TUNED_VAR: ""}) + + def _instance_unapply_static(self, instance, rollback = consts.ROLLBACK_SOFT): + if rollback == consts.ROLLBACK_FULL and not self._skip_grub_config_val: +@@ -489,14 +446,22 @@ def _grub2_cfg_patch(self, d): + return True + + def _rpm_ostree_update(self): +- appended, _ = self._get_rpm_ostree_changes() +- _cmdline_dict = self._options_to_dict(self._cmdline_val, appended) +- if not _cmdline_dict: +- return None +- (_, _, d) = self._rpm_ostree_kargs(append=_cmdline_dict) +- if d is None: ++ """Apply kernel parameter tuning in a rpm-ostree system.""" ++ if self._get_appended_rpm_ostree_kargs(): ++ # The kargs are already set in /etc/tuned/bootcmldine, ++ # we are likely post-reboot and done. ++ return ++ profile_kargs = self._cmdline_val.split() ++ active_kargs = self._get_rpm_ostree_kargs() ++ if active_kargs is None: ++ log.error("Not updating kernel arguments, could not read the current ones.") + return +- self._patch_bootcmdline({consts.BOOT_CMDLINE_TUNED_VAR : self._cmdline_val, consts.BOOT_CMDLINE_KARGS_DELETED_VAR : self._dict_to_options(d)}) ++ # Only append key=value pairs that do not yet appear in kernel parameters, ++ # otherwise we would not be able to restore the cmdline to the previous state ++ # via rpm-ostree kargs --delete. ++ kargs_to_append = [karg for karg in profile_kargs if karg not in active_kargs.split()] ++ if self._modify_rpm_ostree_kargs(append_kargs=kargs_to_append): ++ self._patch_bootcmdline({consts.BOOT_CMDLINE_TUNED_VAR : " ".join(kargs_to_append)}) + + def _grub2_update(self): + self._grub2_cfg_patch({consts.GRUB2_TUNED_VAR : self._cmdline_val, consts.GRUB2_TUNED_INITRD_VAR : self._initrd_val}) +@@ -646,11 +611,10 @@ def _cmdline(self, enabling, value, verify, ignore_missing, instance): + v = self._variables.expand(self._cmd.unquote(value)) + if verify: + if self._rpm_ostree: +- rpm_ostree_kargs = self._rpm_ostree_kargs()[0] +- cmdline = self._dict_to_options(rpm_ostree_kargs) ++ cmdline = self._get_rpm_ostree_kargs() + else: + cmdline = self._cmd.read_file("/proc/cmdline") +- if len(cmdline) == 0: ++ if cmdline is None or len(cmdline) == 0: + return None + cmdline_set = set(cmdline.split()) + value_set = set(v.split()) + +From 3e05cb783ee10ea78efb113c54bd2ad7d73a0e2e Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Pavol=20=C5=BD=C3=A1=C4=8Dik?= +Date: Fri, 16 May 2025 15:13:25 +0200 +Subject: [PATCH 2/2] bootloader: Remove previously appended rpm-ostree kargs + +If TuneD-appended kargs are present and do not match +the kargs to be appended, we should remove them. This +can happen if there was no profile rollback, e.g., +when using the no-daemon mode. + +Resolves: RHEL-86814 +--- + tuned/plugins/plugin_bootloader.py | 24 ++++++++++++++++-------- + 1 file changed, 16 insertions(+), 8 deletions(-) + +diff --git a/tuned/plugins/plugin_bootloader.py b/tuned/plugins/plugin_bootloader.py +index 07a66d265..2711e116f 100644 +--- a/tuned/plugins/plugin_bootloader.py ++++ b/tuned/plugins/plugin_bootloader.py +@@ -105,7 +105,7 @@ class BootloaderPlugin(base.Plugin): + ---- + [main] + include=profile_1 +- ++ + [bootloader] + cmdline_profile_2=-quiet + ---- +@@ -114,7 +114,7 @@ class BootloaderPlugin(base.Plugin): + ---- + [main] + include=profile_1 +- ++ + [bootloader] + cmdline_profile_1=-quiet + ---- +@@ -447,20 +447,28 @@ def _grub2_cfg_patch(self, d): + + def _rpm_ostree_update(self): + """Apply kernel parameter tuning in a rpm-ostree system.""" +- if self._get_appended_rpm_ostree_kargs(): +- # The kargs are already set in /etc/tuned/bootcmldine, +- # we are likely post-reboot and done. +- return ++ appended_kargs = self._get_appended_rpm_ostree_kargs() + profile_kargs = self._cmdline_val.split() + active_kargs = self._get_rpm_ostree_kargs() + if active_kargs is None: + log.error("Not updating kernel arguments, could not read the current ones.") + return ++ # Ignore kargs previously appended by TuneD, these will be removed later. ++ non_tuned_kargs = active_kargs.split() ++ for karg in appended_kargs: ++ non_tuned_kargs.remove(karg) + # Only append key=value pairs that do not yet appear in kernel parameters, + # otherwise we would not be able to restore the cmdline to the previous state + # via rpm-ostree kargs --delete. +- kargs_to_append = [karg for karg in profile_kargs if karg not in active_kargs.split()] +- if self._modify_rpm_ostree_kargs(append_kargs=kargs_to_append): ++ kargs_to_append = [karg for karg in profile_kargs if karg not in non_tuned_kargs] ++ if appended_kargs == kargs_to_append: ++ # The correct kargs are already set in /etc/tuned/bootcmldine, ++ # we are likely post-reboot and done. ++ log.info("Kernel arguments already set, not updating.") ++ return ++ # If there are kargs in /etc/bootcmdline and they do not match ++ # the requested ones, there was no rollback, so remove them now. ++ if self._modify_rpm_ostree_kargs(delete_kargs=appended_kargs, append_kargs=kargs_to_append): + self._patch_bootcmdline({consts.BOOT_CMDLINE_TUNED_VAR : " ".join(kargs_to_append)}) + + def _grub2_update(self): diff --git a/SPECS/tuned.spec b/SPECS/tuned.spec index a284d35..6f26007 100644 --- a/SPECS/tuned.spec +++ b/SPECS/tuned.spec @@ -1,3 +1,11 @@ +%if 0%{?rhel} && 0%{?rhel} < 10 +%global user_profiles_dir %{_sysconfdir}/tuned +%global system_profiles_dir %{_prefix}/lib/tuned +%else +%global user_profiles_dir %{_sysconfdir}/tuned/profiles +%global system_profiles_dir %{_prefix}/lib/tuned/profiles +%endif + %if 0%{?fedora} %if 0%{?fedora} > 27 %bcond_without python3 @@ -34,8 +42,8 @@ Summary: A dynamic adaptive system tuning daemon Name: tuned -Version: 2.24.0 -Release: 1%{?prerel1}%{?dist} +Version: 2.25.1 +Release: 2%{?prerel1}%{?dist} License: GPLv2+ Source0: https://github.com/redhat-performance/%{name}/archive/v%{version}%{?prerel2}/%{name}-%{version}%{?prerel2}.tar.gz # RHEL-9 specific recommend.conf: @@ -60,7 +68,8 @@ BuildRequires: %{_py}-mock %endif BuildRequires: %{_py}-pyudev Requires: %{_py}-pyudev -Requires: %{_py}-linux-procfs, %{_py}-perf +Requires: %{_py}-linux-procfs +Requires: %{_py}-inotify %if %{without python3} Requires: %{_py}-schedutils %endif @@ -69,9 +78,6 @@ Requires: %{_py}-schedutils # BuildRequires for 'make test' BuildRequires: python3-dbus, python3-gobject-base Requires: python3-dbus, python3-gobject-base -%if 0%{?fedora} > 22 || 0%{?rhel} > 7 -Recommends: dmidecode -%endif %else # BuildRequires for 'make test' BuildRequires: dbus-python, pygobject3-base @@ -81,11 +87,15 @@ Requires: virt-what, ethtool, gawk Requires: util-linux, dbus, polkit %if 0%{?fedora} > 22 || 0%{?rhel} > 7 Recommends: dmidecode +# https://src.fedoraproject.org/rpms/tuned/pull-request/8 +Recommends: %{_py}-perf # i686 excluded Recommends: kernel-tools Requires: hdparm Requires: kmod Requires: iproute +%else +Requires: %{_py}-perf %endif # syspurpose %if 0%{?rhel} > 8 @@ -99,7 +109,8 @@ Requires: python3-syspurpose %endif %endif # Revert default profile directory migration only applicable for RHEL-10+ -Patch0: tuned-2.24.0-revert-profile-migration.patch +Patch0: tuned-2.25.0-revert-profile-migration.patch +Patch1: tuned-2.25.1-bootc-kargs.patch %description The tuned package contains a daemon that tunes system settings dynamically. @@ -189,7 +200,6 @@ Additional tuned profile(s) targeted to Atomic host and guest. %package profiles-realtime Summary: Additional tuned profile(s) targeted to realtime Requires: %{name} = %{version} -Requires: tuna %description profiles-realtime Additional tuned profile(s) targeted to realtime. @@ -198,7 +208,6 @@ Additional tuned profile(s) targeted to realtime. Summary: Additional tuned profile(s) targeted to Network Function Virtualization (NFV) guest Requires: %{name} = %{version} Requires: %{name}-profiles-realtime = %{version} -Requires: tuna %description profiles-nfv-guest Additional tuned profile(s) targeted to Network Function Virtualization (NFV) guest. @@ -207,7 +216,6 @@ Additional tuned profile(s) targeted to Network Function Virtualization (NFV) gu Summary: Additional tuned profile(s) targeted to Network Function Virtualization (NFV) host Requires: %{name} = %{version} Requires: %{name}-profiles-realtime = %{version} -Requires: tuna %description profiles-nfv-host Additional tuned profile(s) targeted to Network Function Virtualization (NFV) host. @@ -261,6 +269,9 @@ Additional TuneD profile(s) optimized for OpenShift. %package ppd Summary: PPD compatibility daemon Requires: %{name} = %{version} +%if 0%{?fedora} >= 41 || 0%{?rhel} >= 10 +Obsoletes: power-profiles-daemon < 0.23-2 +%endif # The compatibility daemon is swappable for power-profiles-daemon Provides: ppd-service Conflicts: ppd-service @@ -278,15 +289,15 @@ rm -f recommend.conf cp -p %{SOURCE1} recommend.conf %build -# Docs cannot be generated on RHEL now due to missing asciidoctor dependency -# asciidoc doesn't seem to be compatible -%if ! 0%{?rhel} make html %{make_python_arg} -%endif %install -make install DESTDIR=%{buildroot} DOCDIR=%{docdir} %{make_python_arg} -make install-ppd DESTDIR=%{buildroot} DOCDIR=%{docdir} %{make_python_arg} +make install DESTDIR="%{buildroot}" BINDIR="%{_bindir}" SBINDIR="%{_sbindir}" \ + DOCDIR="%{docdir}" %{make_python_arg} \ + TUNED_USER_PROFILES_DIR="%{user_profiles_dir}" \ + TUNED_SYSTEM_PROFILES_DIR="%{system_profiles_dir}" +make install-ppd DESTDIR="%{buildroot}" BINDIR="%{_bindir}" \ + SBINDIR="%{_sbindir}" DOCDIR="%{docdir}" %{make_python_arg} %if ! 0%{?rhel} # manual @@ -328,6 +339,15 @@ if [ -r "%{_sysconfdir}/default/grub" ]; then %{_sysconfdir}/default/grub fi +%if 0%{?fedora} || 0%{?rhel} >= 10 +# migrate all user-defined profiles from /etc/tuned/ to /etc/tuned/profiles/ +for f in %{_sysconfdir}/tuned/*; do + if [ -e "$f/tuned.conf" ]; then + mv -n "$f" %{_sysconfdir}/tuned/profiles/ + fi +done +%endif + %post ppd %systemd_post tuned-ppd.service @@ -443,38 +463,44 @@ fi %exclude %{_sysconfdir}/tuned/realtime-virtual-host-variables.conf %exclude %{_sysconfdir}/tuned/cpu-partitioning-variables.conf %exclude %{_sysconfdir}/tuned/cpu-partitioning-powersave-variables.conf -%exclude %{_prefix}/lib/tuned/default -%exclude %{_prefix}/lib/tuned/desktop-powersave -%exclude %{_prefix}/lib/tuned/laptop-ac-powersave -%exclude %{_prefix}/lib/tuned/server-powersave -%exclude %{_prefix}/lib/tuned/laptop-battery-powersave -%exclude %{_prefix}/lib/tuned/enterprise-storage -%exclude %{_prefix}/lib/tuned/spindown-disk -%exclude %{_prefix}/lib/tuned/sap-netweaver -%exclude %{_prefix}/lib/tuned/sap-hana -%exclude %{_prefix}/lib/tuned/sap-hana-kvm-guest -%exclude %{_prefix}/lib/tuned/mssql -%exclude %{_prefix}/lib/tuned/oracle -%exclude %{_prefix}/lib/tuned/atomic-host -%exclude %{_prefix}/lib/tuned/atomic-guest -%exclude %{_prefix}/lib/tuned/realtime -%exclude %{_prefix}/lib/tuned/realtime-virtual-guest -%exclude %{_prefix}/lib/tuned/realtime-virtual-host -%exclude %{_prefix}/lib/tuned/cpu-partitioning -%exclude %{_prefix}/lib/tuned/cpu-partitioning-powersave -%exclude %{_prefix}/lib/tuned/spectrumscale-ece -%exclude %{_prefix}/lib/tuned/postgresql -%exclude %{_prefix}/lib/tuned/openshift -%exclude %{_prefix}/lib/tuned/openshift-control-plane -%exclude %{_prefix}/lib/tuned/openshift-node +%exclude %{system_profiles_dir}/default +%exclude %{system_profiles_dir}/desktop-powersave +%exclude %{system_profiles_dir}/laptop-ac-powersave +%exclude %{system_profiles_dir}/server-powersave +%exclude %{system_profiles_dir}/laptop-battery-powersave +%exclude %{system_profiles_dir}/enterprise-storage +%exclude %{system_profiles_dir}/spindown-disk +%exclude %{system_profiles_dir}/sap-netweaver +%exclude %{system_profiles_dir}/sap-hana +%exclude %{system_profiles_dir}/sap-hana-kvm-guest +%exclude %{system_profiles_dir}/mssql +%exclude %{system_profiles_dir}/oracle +%exclude %{system_profiles_dir}/atomic-host +%exclude %{system_profiles_dir}/atomic-guest +%exclude %{system_profiles_dir}/realtime +%exclude %{system_profiles_dir}/realtime-virtual-guest +%exclude %{system_profiles_dir}/realtime-virtual-host +%exclude %{system_profiles_dir}/cpu-partitioning +%exclude %{system_profiles_dir}/cpu-partitioning-powersave +%exclude %{system_profiles_dir}/spectrumscale-ece +%exclude %{system_profiles_dir}/postgresql +%exclude %{system_profiles_dir}/openshift +%exclude %{system_profiles_dir}/openshift-control-plane +%exclude %{system_profiles_dir}/openshift-node %{_prefix}/lib/tuned %dir %{_sysconfdir}/tuned %dir %{_sysconfdir}/tuned/recommend.d + +%if "%{user_profiles_dir}" != "%{_sysconfdir}/tuned" +%dir %{user_profiles_dir} +%endif + %dir %{_libexecdir}/tuned %{_libexecdir}/tuned/defirqaffinity* %config(noreplace) %verify(not size mtime md5) %{_sysconfdir}/tuned/active_profile %config(noreplace) %verify(not size mtime md5) %{_sysconfdir}/tuned/profile_mode %config(noreplace) %verify(not size mtime md5) %{_sysconfdir}/tuned/post_loaded_profile +%config(noreplace) %verify(not size mtime md5) %{_sysconfdir}/tuned/ppd_base_profile %config(noreplace) %{_sysconfdir}/tuned/tuned-main.conf %config(noreplace) %verify(not size mtime md5) %{_sysconfdir}/tuned/bootcmdline %verify(not size mtime md5) %{_sysconfdir}/modprobe.d/tuned.conf @@ -523,40 +549,40 @@ fi %{_mandir}/man8/scomes.* %files profiles-sap -%{_prefix}/lib/tuned/sap-netweaver +%{system_profiles_dir}/sap-netweaver %{_mandir}/man7/tuned-profiles-sap.7* %files profiles-sap-hana -%{_prefix}/lib/tuned/sap-hana -%{_prefix}/lib/tuned/sap-hana-kvm-guest +%{system_profiles_dir}/sap-hana +%{system_profiles_dir}/sap-hana-kvm-guest %{_mandir}/man7/tuned-profiles-sap-hana.7* %files profiles-mssql -%{_prefix}/lib/tuned/mssql +%{system_profiles_dir}/mssql %{_mandir}/man7/tuned-profiles-mssql.7* %files profiles-oracle -%{_prefix}/lib/tuned/oracle +%{system_profiles_dir}/oracle %{_mandir}/man7/tuned-profiles-oracle.7* %files profiles-atomic -%{_prefix}/lib/tuned/atomic-host -%{_prefix}/lib/tuned/atomic-guest +%{system_profiles_dir}/atomic-host +%{system_profiles_dir}/atomic-guest %{_mandir}/man7/tuned-profiles-atomic.7* %files profiles-realtime %config(noreplace) %{_sysconfdir}/tuned/realtime-variables.conf -%{_prefix}/lib/tuned/realtime +%{system_profiles_dir}/realtime %{_mandir}/man7/tuned-profiles-realtime.7* %files profiles-nfv-guest %config(noreplace) %{_sysconfdir}/tuned/realtime-virtual-guest-variables.conf -%{_prefix}/lib/tuned/realtime-virtual-guest +%{system_profiles_dir}/realtime-virtual-guest %{_mandir}/man7/tuned-profiles-nfv-guest.7* %files profiles-nfv-host %config(noreplace) %{_sysconfdir}/tuned/realtime-virtual-host-variables.conf -%{_prefix}/lib/tuned/realtime-virtual-host +%{system_profiles_dir}/realtime-virtual-host %{_mandir}/man7/tuned-profiles-nfv-host.7* %files profiles-nfv @@ -565,32 +591,32 @@ fi %files profiles-cpu-partitioning %config(noreplace) %{_sysconfdir}/tuned/cpu-partitioning-variables.conf %config(noreplace) %{_sysconfdir}/tuned/cpu-partitioning-powersave-variables.conf -%{_prefix}/lib/tuned/cpu-partitioning -%{_prefix}/lib/tuned/cpu-partitioning-powersave +%{system_profiles_dir}/cpu-partitioning +%{system_profiles_dir}/cpu-partitioning-powersave %{_mandir}/man7/tuned-profiles-cpu-partitioning.7* %files profiles-spectrumscale -%{_prefix}/lib/tuned/spectrumscale-ece +%{system_profiles_dir}/spectrumscale-ece %{_mandir}/man7/tuned-profiles-spectrumscale-ece.7* %files profiles-compat -%{_prefix}/lib/tuned/default -%{_prefix}/lib/tuned/desktop-powersave -%{_prefix}/lib/tuned/laptop-ac-powersave -%{_prefix}/lib/tuned/server-powersave -%{_prefix}/lib/tuned/laptop-battery-powersave -%{_prefix}/lib/tuned/enterprise-storage -%{_prefix}/lib/tuned/spindown-disk +%{system_profiles_dir}/default +%{system_profiles_dir}/desktop-powersave +%{system_profiles_dir}/laptop-ac-powersave +%{system_profiles_dir}/server-powersave +%{system_profiles_dir}/laptop-battery-powersave +%{system_profiles_dir}/enterprise-storage +%{system_profiles_dir}/spindown-disk %{_mandir}/man7/tuned-profiles-compat.7* %files profiles-postgresql -%{_prefix}/lib/tuned/postgresql +%{system_profiles_dir}/postgresql %{_mandir}/man7/tuned-profiles-postgresql.7* %files profiles-openshift -%{_prefix}/lib/tuned/openshift -%{_prefix}/lib/tuned/openshift-control-plane -%{_prefix}/lib/tuned/openshift-node +%{system_profiles_dir}/openshift +%{system_profiles_dir}/openshift-control-plane +%{system_profiles_dir}/openshift-node %{_mandir}/man7/tuned-profiles-openshift.7* %files ppd @@ -599,9 +625,70 @@ fi %{_datadir}/dbus-1/system-services/net.hadess.PowerProfiles.service %{_datadir}/dbus-1/system.d/net.hadess.PowerProfiles.conf %{_datadir}/polkit-1/actions/net.hadess.PowerProfiles.policy +%{_datadir}/dbus-1/system-services/org.freedesktop.UPower.PowerProfiles.service +%{_datadir}/dbus-1/system.d/org.freedesktop.UPower.PowerProfiles.conf +%{_datadir}/polkit-1/actions/org.freedesktop.UPower.PowerProfiles.policy %config(noreplace) %{_sysconfdir}/tuned/ppd.conf %changelog +* Thu Jun 05 2025 Pavol Žáčik - 2.25.1-2 +- Fix handling of kernel arguments on bootc systems + resolves: RHEL-45836 + resolves: RHEL-86814 + +* Tue Feb 4 2025 Jaroslav Škarvada - 2.25.1-1 +- new release + - rebased tuned to latest upstream + related: RHEL-70457 + - plugins: added missing instance parameters + - disk: added missing remove parameter + - plugin_scheduler: added switch to disable processing of kthreads + - Makefile: added support for installation to custom LIBEXECDIR + - functions: create a new parser object for each string expansion + resolves: RHEL-75773 + +* Fri Jan 31 2025 Jaroslav Škarvada - 2.25.0-1 +- new release + - rebased tuned to latest upstream + related: RHEL-70457 + - sap-hana: Set transparent_hugepages to madvise + - plugin_bootloader: export Grub variables to make them available in submenus + - utils.commands: fixed CPU online detection when not present + - plugin_net: handled cqe-mode-rx ethtool option + - profiles: correct CPU governor settings + +* Sun Jan 19 2025 Jaroslav Škarvada - 2.25.0-0.1.rc1 +- new release + - rebased tuned to latest upstream + resolves: RHEL-70457 + - tuned-ppd: removed the use of StrEnum + - tuned-ppd: fixed traceback + - tuned-ppd: multiple fixes and updates + - docs: plugins docs are now automatically generated from the docstrings + - plugin_cpu: fixed no_turbo boolean option parsing + resolves: RHEL-51760 + - plugin_cpu: allowed raw energy_performance_preference values + - plugin_vm: added support for dirty_(bytes|ratio) sysctl parameters + resolves: RHEL-58820 + - plugin_bootloader: added variables to BLS entries only if grub is used + - plugin_scheduler: do not assume that perf events have type attribute + - plugin_scheduler: updated sched knobs for kernels 6.6+ + - plugin_scheduler: log process info when its affinity cannot be changed + - plugin_scheduler: postpone cgroup blacklist check, double-check after fail + resolves: RHEL-72981 + - plugin_scheduler: made perf support optional + - plugin_net: added support for hotplug and rename + resolves: RHEL-60906 + - makefile: added support for installation to custom $BINDIR/$SBINDIR + - functions: dropped cpuspeed support + +* Mon Nov 18 2024 Jaroslav Škarvada - 2.24.0-2 +- Fixed privileged execution of arbitrary scripts by active local user, + (CVE-2024-52336) + Resolves: RHEL-66638 +- Added sanity checks for API methods parameters, (CVE-2024-52337) + Resolves: RHEL-66615 + * Wed Aug 7 2024 Jaroslav Škarvada - 2.24.0-1 - new release - rebased tuned to latest upstream