import realtime-tests-2.1-6.el9

This commit is contained in:
CentOS Sources 2022-01-11 13:15:33 -05:00 committed by Stepan Oksanichenko
parent 312d40f2c1
commit 123bbb1ade
5 changed files with 265 additions and 1 deletions

View File

@ -0,0 +1,35 @@
From 419aa72080b78210a0c8ef0c23cf56aeada1d880 Mon Sep 17 00:00:00 2001
From: Leah Leshchinsky <lleshchi@redhat.com>
Date: Mon, 13 Sep 2021 15:29:51 -0400
Subject: [PATCH] rt-tests: Add missing option F to optstring
The cyclictest help output lists -F as the short version of the
--fifo option, yet calling cyclictest -F produces an error
cyclictest: invalid option --'F'".
followed by the usage() message
This patch adds -F as a valid argument.
Signed-off-by: Leah Leshchinsky <lleshchi@redhat.com>
-Minor Fix to the commit message
Signed-off-by: John Kacur <jkacur@redhat.com>
---
src/cyclictest/cyclictest.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/cyclictest/cyclictest.c b/src/cyclictest/cyclictest.c
index a08c91d..f8f7dbc 100644
--- a/src/cyclictest/cyclictest.c
+++ b/src/cyclictest/cyclictest.c
@@ -1011,7 +1011,7 @@ static void process_options(int argc, char *argv[], int max_cpus)
{"posix_timers", no_argument, NULL, OPT_POSIX_TIMERS },
{NULL, 0, NULL, 0 },
};
- int c = getopt_long(argc, argv, "a::A::b:c:d:D:h:H:i:l:MNo:p:mqrRsSt::uvD:x",
+ int c = getopt_long(argc, argv, "a::A::b:c:d:D:F:h:H:i:l:MNo:p:mqrRsSt::uvD:x",
long_options, &option_index);
if (c == -1)
break;
--
2.27.0

View File

@ -0,0 +1,87 @@
From a933af2b82ea90a51a2600cf88cfcc5f2fba9804 Mon Sep 17 00:00:00 2001
From: John Kacur <jkacur@redhat.com>
Date: Thu, 18 Nov 2021 14:12:23 -0500
Subject: [PATCH 2/2] rt-tests: cyclicdeadline: Fix double mount of cgroups
If /sys/fs/cgroup exists and it is type cgroup2, cyclicdeadline mounts it a
second time as cgroup.
systemd is creating cgroup2 for logins and this can hang the machine and
not allow logins.
Fix this by:
If /sys/fs/cgroup exists, then use it for cyclicdeadline_test.
If it exists but the type is not recognized, exit with an error.
Do not simply mount it as type cgroup.
TODO: If the file doesn't exit but cgroups are supported in the kernel,
the file could be created and mounted.
Signed-off-by: John Kacur <jkacur@redhat.com>
---
src/sched_deadline/cyclicdeadline.c | 39 +++++++++++++++++++++++------
1 file changed, 32 insertions(+), 7 deletions(-)
diff --git a/src/sched_deadline/cyclicdeadline.c b/src/sched_deadline/cyclicdeadline.c
index 4860a40f5e6b..1f9a5df42d4f 100644
--- a/src/sched_deadline/cyclicdeadline.c
+++ b/src/sched_deadline/cyclicdeadline.c
@@ -358,6 +358,32 @@ static int mounted(const char *path, long magic)
#define CGROUP_PATH "/sys/fs/cgroup"
#define CPUSET_PATH CGROUP_PATH "/cpuset"
+/**
+ * cgroup_mounted - test if the path /sys/fs/cgroup exists
+ * and is a supported type
+ *
+ * Returns -1 if the path does not exist
+ * Returns 0 if the path exists but is not a cgroup type
+ * Returns 1 if the path exists and supports cgroups
+ */
+static int cgroup_mounted(void)
+{
+ int ret;
+
+ ret = mounted(CGROUP_PATH, TMPFS_MAGIC);
+ if (ret == -1)
+ return -1; /* path doesn't exist */
+ if (ret == 1)
+ return 1; /* tmpfs */
+ ret = mounted(CGROUP_PATH, CGROUP_SUPER_MAGIC);
+ if (ret == 1)
+ return 1; /* cgroup v1 */
+ ret = mounted(CGROUP_PATH, CGROUP2_SUPER_MAGIC);
+ if (ret == 1)
+ return 1;
+ return 0; /* path exists but type is not recognized */
+}
+
static int open_cpuset(const char *path, const char *name)
{
char buf[MAXPATH];
@@ -383,14 +409,13 @@ static int mount_cpuset(void)
int fd;
/* Check if cgroups is already mounted. */
- ret = mounted(CGROUP_PATH, TMPFS_MAGIC);
- if (ret < 0)
+ ret = cgroup_mounted();
+ if (ret < 0) /* /sys/fs/cgroup doesn't exist */
return ret;
- if (!ret) {
- ret = mount("cgroup_root", CGROUP_PATH, "tmpfs", 0, NULL);
- if (ret < 0)
- return ret;
- }
+
+ if (!ret) /* /sys/fs/cgroup exists, but we don't recognize the type */
+ return -1;
+
ret = stat(CPUSET_PATH, &st);
if (ret < 0) {
ret = mkdir(CPUSET_PATH, 0755);
--
2.31.1

View File

@ -0,0 +1,87 @@
From 8100a3ae8c6abff99fb512d126055f4b603f4517 Mon Sep 17 00:00:00 2001
From: John Kacur <jkacur@redhat.com>
Date: Thu, 18 Nov 2021 13:48:10 -0500
Subject: [PATCH 1/2] rt-tests: deadline_test: Fix double mount of cgroups
If /sys/fs/cgroup exists and it is type cgroup2, deadline mounts it a
second time as cgroup.
systemd is creating cgroup2 for logins and this can hang the machine and
not allow logins.
Fix this by:
If /sys/fs/cgroup exists, then use it for deadline_test.
If it exists but the type is not recognized, exit with an error.
Do not simply mount it as type cgroup.
TODO: If the file doesn't exit but cgroups are supported in the kernel,
the file could be created and mounted.
Signed-off-by: John Kacur <jkacur@redhat.com>
---
src/sched_deadline/deadline_test.c | 39 ++++++++++++++++++++++++------
1 file changed, 32 insertions(+), 7 deletions(-)
diff --git a/src/sched_deadline/deadline_test.c b/src/sched_deadline/deadline_test.c
index b7e1e045b57c..11d669025425 100644
--- a/src/sched_deadline/deadline_test.c
+++ b/src/sched_deadline/deadline_test.c
@@ -518,6 +518,32 @@ static int mounted(const char *path, long magic)
#define CGROUP_PATH "/sys/fs/cgroup"
#define CPUSET_PATH CGROUP_PATH "/cpuset"
+/**
+ * cgroup_mounted - test if the path /sys/fs/cgroup exists
+ * and is a supported type
+ *
+ * Returns -1 if the path does not exist
+ * Returns 0 if the path exists but is not a cgroup type
+ * Returns 1 if the path exists and supports cgroups
+ */
+static int cgroup_mounted(void)
+{
+ int ret;
+
+ ret = mounted(CGROUP_PATH, TMPFS_MAGIC);
+ if (ret == -1)
+ return -1; /* path doesn't exist */
+ if (ret == 1)
+ return 1; /* tmpfs */
+ ret = mounted(CGROUP_PATH, CGROUP_SUPER_MAGIC);
+ if (ret == 1)
+ return 1; /* cgroup v1 */
+ ret = mounted(CGROUP_PATH, CGROUP2_SUPER_MAGIC);
+ if (ret == 1)
+ return 1;
+ return 0; /* path exists but type is not recognized */
+}
+
/**
* open_cpuset - open a file (usually a cpuset file)
* @path: The path of the directory the file is in
@@ -568,14 +594,13 @@ static int mount_cpuset(void)
int fd;
/* Check if cgroups is already mounted. */
- ret = mounted(CGROUP_PATH, TMPFS_MAGIC);
- if (ret < 0)
+ ret = cgroup_mounted();
+ if (ret < 0) /* /sys/fs/cgroup doesn't exist */
return ret;
- if (!ret) {
- ret = mount("cgroup_root", CGROUP_PATH, "tmpfs", 0, NULL);
- if (ret < 0)
- return ret;
- }
+
+ if (!ret) /* /sys/fs/cgroup exists, but we don't recognize the type */
+ return -1;
+
ret = stat(CPUSET_PATH, &st);
if (ret < 0) {
ret = mkdir(CPUSET_PATH, 0755);
--
2.31.1

View File

@ -0,0 +1,34 @@
From 6a3dd40539c1804db8b1fe1684afa5fa111636fe Mon Sep 17 00:00:00 2001
From: John Kacur <jkacur@redhat.com>
Date: Thu, 11 Nov 2021 08:56:54 -0500
Subject: [PATCH] rt-tests: deadline_tests: Null check to prevent floating
point exception
Fix a floating point exception that can occur if sd->nr_adjust is 0
by checking it before performing a division by zero.
Signed-off-by: John Kacur <jkacur@redhat.com>
---
src/sched_deadline/deadline_test.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/src/sched_deadline/deadline_test.c b/src/sched_deadline/deadline_test.c
index 53abd4d2ca6b..b7e1e045b57c 100644
--- a/src/sched_deadline/deadline_test.c
+++ b/src/sched_deadline/deadline_test.c
@@ -2050,8 +2050,10 @@ int main(int argc, char **argv)
printf("missed deadlines = %d\n", sd->missed_deadlines);
printf("missed periods = %d\n", sd->missed_periods);
printf("Total adjustments = %lld us\n", sd->total_adjust);
- printf("# adjustments = %lld avg: %lld us\n",
- sd->nr_adjust, sd->total_adjust / sd->nr_adjust);
+ if (sd->nr_adjust) {
+ printf("# adjustments = %lld avg: %lld us\n",
+ sd->nr_adjust, sd->total_adjust / sd->nr_adjust);
+ }
printf("deadline : %lld us\n", sd->deadline_us);
printf("runtime : %lld us\n", sd->runtime_us);
printf("nr_periods : %lld\n", sd->nr_periods);
--
2.31.1

View File

@ -6,7 +6,7 @@ Name: realtime-tests
# Numa argument to make: NUMA=1
#
Version: 2.1
Release: 3%{?dist}
Release: 6%{?dist}
License: GPLv2
URL: https://git.kernel.org/pub/scm/utils/rt-tests/rt-tests.git
Source0: https://www.kernel.org/pub/linux/utils/rt-tests/rt-tests-%{version}.tar.xz
@ -22,6 +22,10 @@ Requires: bc
#Patches
Patch1: sched_deadline-Accommodate-new-location-of-HRTICK-file.patch
Patch2: sched_deadline-Use-HRTICK_DL-for-sched_deadline-tests.patch
Patch3: rt-tests-Add-missing-option-F-to-optstring.patch
Patch4: rt-tests-deadline_tests-Null-check-to-prevent-exception.patch
Patch5: rt-tests-deadline_test-Fix-double-mount-of-cgroups.patch
Patch6: rt-tests-cyclicdeadline-Fix-double-mount-of-cgroups.patch
%description
realtime-tests is a set of programs that test and measure various components of
@ -32,6 +36,10 @@ latency. It also tests the functioning of priority-inheritance mutexes.
%setup -q -n rt-tests-%{version}
%patch1 -p1
%patch2 -p1
%patch3 -p1
%patch4 -p1
%patch5 -p1
%patch6 -p1
%build
%set_build_flags
@ -82,6 +90,19 @@ latency. It also tests the functioning of priority-inheritance mutexes.
%{_mandir}/man8/determine_maximum_mpps.8.*
%changelog
* Thu Nov 18 2021 John Kacur <jkacur@redhat.com> - 2.1-6
- Fix potential double mount of cgroups for deadline_test
- Fix potential double mount of cgroups for cyclicdeadline_test
Resolves: rhbz#2011415
* Thu Nov 18 2021 John Kacur <jkacur@redhat.com> - 2.1-5
- Null check to prevent floating point exception in deadline test
Resolves: rhbz#2023501
* Tue Nov 02 2021 Leah Leshchinsky <lleshchi@redhat.com> - 2.1-4
- Add missing option -F to optstring
Resolved: rhbz#2007021
* Tue Aug 10 2021 Mohan Boddu <mboddu@redhat.com> - 2.1-3
- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags
Related: rhbz#1991688