import CS tuned-2.25.1-2.el9_6

This commit is contained in:
eabdullin 2025-06-24 11:37:33 +00:00
parent a1552d677f
commit a9bb8dcecc
6 changed files with 651 additions and 574 deletions

2
.gitignore vendored
View File

@ -1 +1 @@
SOURCES/tuned-2.24.0.tar.gz
SOURCES/tuned-2.25.1.tar.gz

View File

@ -1 +1 @@
15e516facaececaa788c2decae4bcd9f46781ffc SOURCES/tuned-2.24.0.tar.gz
2041e65c2e31cd76c60c401bdf538eb4253ea7b4 SOURCES/tuned-2.25.1.tar.gz

View File

@ -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/<profile_name>/tuned.conf or in
-/usr/lib/tuned/profiles/<profile_name>/tuned.conf file where the /etc/tuned/profiles/ directory has
+The profile definition is stored in /etc/tuned/<profile_name>/tuned.conf or in
+/usr/lib/tuned/<profile_name>/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"

View File

@ -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/<profile_name>/tuned.conf or in
-/usr/lib/tuned/profiles/<profile_name>/tuned.conf file where the /etc/tuned/profiles/ directory has
+The profile definition is stored in /etc/tuned/<profile_name>/tuned.conf or in
+/usr/lib/tuned/<profile_name>/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

View File

@ -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?= <zacik.pa@gmail.com>
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?= <zacik.pa@gmail.com>
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):

View File

@ -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 <pzacik@redhat.com> - 2.25.1-2
- Fix handling of kernel arguments on bootc systems
resolves: RHEL-45836
resolves: RHEL-86814
* Tue Feb 4 2025 Jaroslav Škarvada <jskarvad@redhat.com> - 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 <jskarvad@redhat.com> - 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 <jskarvad@redhat.com> - 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 <jskarvad@redhat.com> - 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 <jskarvad@redhat.com> - 2.24.0-1
- new release
- rebased tuned to latest upstream