!7 update to 5.10

From: @xinghe_1
Reviewed-by: @SuperSix173,@georgecao,@SuperSix173
Signed-off-by: @SuperSix173,@SuperSix173
This commit is contained in:
openeuler-ci-bot 2021-02-02 16:55:45 +08:00 committed by Gitee
commit 7b05ed8132
6 changed files with 5 additions and 301 deletions

View File

@ -1,151 +0,0 @@
From 592b915033de37322e19f3e6413de33317d272fe Mon Sep 17 00:00:00 2001
From: Chris Packham <chris.packham@alliedtelesis.co.nz>
Date: Tue, 10 Nov 2020 10:02:26 +0800
Subject: [PATCH] io_uring: Add io_cqring_offset flags
Add support for displaying struct io_cqring_offsets.flags introduced
by Linux kernel commits v5.8-rc1~190^2~22 and v5.8-rc1~190^2~21.
* types/io_uring.h (struct_io_cqring_offsets): Replace resv array
with flags, resv1, and resv2 fields.
* xlat/uring_cqring_flags.in: New file.
* configure.ac (AC_CHECK_MEMBERS): Check struct io_cqring_offsets.flags.
* io_uring.c: Include "xlat/uring_cqring_flags.h".
(SYS_FUNC(io_uring_setup)): Replace printing of the resv array
of struct io_cqring_offsets with flags, resv1, and resv2 fields.
* tests/io_uring_setup.c: Check it.
Signed-off-by: Dmitry V. Levin <ldv@altlinux.org>
Resolves: https://github.com/strace/strace/issues/138
---
configure.ac | 1 +
io_uring.c | 11 +++++++----
tests/io_uring_setup.c | 31 ++++++++++++++++++++++++++-----
types/io_uring.h | 4 +++-
xlat/uring_cqring_flags.in | 1 +
5 files changed, 38 insertions(+), 10 deletions(-)
create mode 100644 xlat/uring_cqring_flags.in
diff --git a/configure.ac b/configure.ac
index 7c4f929..958c097 100644
--- a/configure.ac
+++ b/configure.ac
@@ -475,6 +475,7 @@ AC_CHECK_HEADERS([linux/bpf.h], [
AC_CHECK_HEADERS([linux/io_uring.h], [
AC_CHECK_MEMBERS(m4_normalize([
+ struct io_cqring_offsets.flags,
struct io_uring_params.features,
struct io_uring_params.wq_fd,
struct io_uring_params.resv
diff --git a/io_uring.c b/io_uring.c
index cd18345..7da371f 100644
--- a/io_uring.c
+++ b/io_uring.c
@@ -17,6 +17,7 @@
#include "xlat/uring_setup_flags.h"
#include "xlat/uring_enter_flags.h"
#include "xlat/uring_register_opcodes.h"
+#include "xlat/uring_cqring_flags.h"
#ifdef HAVE_STRUCT_IO_CQRING_OFFSETS
# ifdef HAVE_STRUCT_IO_CQRING_OFFSETS_RESV
@@ -103,10 +104,12 @@ SYS_FUNC(io_uring_setup)
PRINT_FIELD_U(", ", params.cq_off, ring_entries);
PRINT_FIELD_U(", ", params.cq_off, overflow);
PRINT_FIELD_U(", ", params.cq_off, cqes);
- if (!IS_ARRAY_ZERO(params.cq_off.resv)) {
- PRINT_FIELD_ARRAY(", ", params.cq_off, resv, tcp,
- print_xint64_array_member);
- }
+ PRINT_FIELD_FLAGS(", ", params.cq_off, flags,
+ uring_cqring_flags, "IORING_CQ_???");
+ if (params.cq_off.resv1)
+ PRINT_FIELD_X(", ", params.cq_off, resv1);
+ if (params.cq_off.resv2)
+ PRINT_FIELD_X(", ", params.cq_off, resv2);
tprints("}");
}
tprints("}");
diff --git a/tests/io_uring_setup.c b/tests/io_uring_setup.c
index 317b0d7..3d362b8 100644
--- a/tests/io_uring_setup.c
+++ b/tests/io_uring_setup.c
@@ -27,6 +27,7 @@
# include "xlat.h"
# include "xlat/uring_setup_features.h"
+# include "xlat/uring_cqring_flags.h"
# ifdef HAVE_STRUCT_IO_URING_PARAMS_FEATURES
# ifdef HAVE_STRUCT_IO_URING_PARAMS_WQ_FD
@@ -144,20 +145,40 @@ main(void)
params->sq_off.resv2);
printf("}, cq_off={head=%u, tail=%u, ring_mask=%u"
- ", ring_entries=%u, overflow=%u, cqes=%u",
+ ", ring_entries=%u, overflow=%u, cqes=%u", flags=",
params->cq_off.head,
params->cq_off.tail,
params->cq_off.ring_mask,
params->cq_off.ring_entries,
params->cq_off.overflow,
params->cq_off.cqes);
- if (params->cq_off.resv[0] || params->cq_off.resv[1]) {
- printf(", resv=[%#llx, %#llx]",
+#ifdef HAVE_STRUCT_IO_CQRING_OFFSETS_FLAGS
+ printflags(uring_cqring_flags,
+ params->cq_off.flags,
+ "IORING_CQ_???");
+ if (params->cq_off.resv1)
+ printf(", resv1=%#x", params->cq_off.resv1);
+ if (params->cq_off.resv2)
+ printf(", resv2=%#llx",
(unsigned long long)
- params->cq_off.resv[0],
+ params->cq_off.resv2);
+#else
+ union {
+ struct {
+ uint32_t flags;
+ uint32_t resv1;
+ } s;
+ uint64_t v;
+ } u = { .v = params->cq_off.resv[0] };
+ printflags(uring_cqring_flags, u.s.flags,
+ "IORING_CQ_???");
+ if (u.s.resv1)
+ printf(", resv1=%#x", u.s.resv1);
+ if (params->cq_off.resv[1])
+ printf(", resv2=%#llx",
(unsigned long long)
params->cq_off.resv[1]);
- }
+#endif
printf("}}) = %ld<anon_inode:[io_uring]>\n", rc);
}
diff --git a/types/io_uring.h b/types/io_uring.h
index 76f432c..2fe1c13 100644
--- a/types/io_uring.h
+++ b/types/io_uring.h
@@ -31,7 +31,9 @@ typedef struct {
uint32_t ring_entries;
uint32_t overflow;
uint32_t cqes;
- uint64_t resv[2];
+ /** Added by v5.8-rc1~190^2~22 */ uint32_t flags;
+ /** Added by v5.8-rc1~190^2~22 */ uint32_t resv1;
+ /** Added by v5.8-rc1~190^2~22 */ uint64_t resv2;
} struct_io_cqring_offsets;
typedef struct {
diff --git a/xlat/uring_cqring_flags.in b/xlat/uring_cqring_flags.in
new file mode 100644
index 0000000..c81fbc2
--- /dev/null
+++ b/xlat/uring_cqring_flags.in
@@ -0,0 +1 @@
+IORING_CQ_EVENTFD_DISABLED 1U
--
2.27.0

View File

@ -1,46 +0,0 @@
From fded17c15bca4150165f899cc47f67bab963d9a7 Mon Sep 17 00:00:00 2001
From: Chris Packham <chris.packham@alliedtelesis.co.nz>
Date: Mon, 15 Jun 2020 22:01:25 +1200
Subject: [PATCH 1/2] io_uring: Remove struct io_cqring_offsets compile time
asserts
The generated types/check-io_uring.c already checks the kernel's struct
io_cqring_offsets for compatibility with the strace definition so
there's no need for manual checks.
* io_uring.c [HAVE_STRUCT_IO_CQRING_OFFSETS]: Remove static_asserts.
Signed-off-by: Chris Packham <chris.packham@alliedtelesis.co.nz>
Resolves: https://github.com/strace/strace/issues/143
---
io_uring.c | 15 ---------------
1 file changed, 15 deletions(-)
diff --git a/io_uring.c b/io_uring.c
index cd18345..cfeea82 100644
--- a/io_uring.c
+++ b/io_uring.c
@@ -18,21 +18,6 @@
#include "xlat/uring_register_opcodes.h"
#include "xlat/uring_cqring_flags.h"
-#ifdef HAVE_STRUCT_IO_CQRING_OFFSETS
-# ifdef HAVE_STRUCT_IO_CQRING_OFFSETS_RESV
-static_assert(offsetof(struct_io_cqring_offsets, resv)
- >= offsetof(struct io_cqring_offsets, resv),
- "struct io_cqring_offsets.resv offset mismatch"
- ", please update the decoder");
-static_assert(sizeof_field(struct_io_cqring_offsets, resv)
- <= sizeof_field(struct io_cqring_offsets, resv),
- "struct io_cqring_offsets.resv size mismatch"
- ", please update the decoder");
-# else /* !HAVE_STRUCT_IO_CQRING_OFFSETS_RESV */
-static_assert(0, "struct io_cqring_offsets.resv is missing"
- ", please update the decoder");
-# endif
-#endif /* HAVE_STRUCT_IO_CQRING_OFFSETS */
#ifdef HAVE_STRUCT_IO_URING_PARAMS
# ifdef HAVE_STRUCT_IO_URING_PARAMS_RESV
static_assert(offsetof(struct_io_uring_params, resv)
--
1.8.3.1

View File

@ -1,99 +0,0 @@
From 8dda6b8ddbe18b6bb83cf1fa6bc71ebdc82e1b72 Mon Sep 17 00:00:00 2001
From: Bruce Ashfield <bruce.ashfield@gmail.com>
Date: Tue, 10 Nov 2020 10:53:58 +0800
Subject: [PATCH] uring: fix build against 5.8 libc-headers
To get strace building against v5.8 headers before the next
version of strace is released, we need to copy in a bootstrapped
file from the latest git (xlat/uring_cqring_flags.h) and remove
remove unnecessary asserts for v5.8+ (in a similar manner to the
main strace repository).
Upstream-status: inappropriate. oe specific (upstream builds bootstrap)
Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
https://patchwork.openembedded.org/patch/175096/
---
types/check-io_uring.c | 10 --------
xlat/uring_cqring_flags.h | 48 +++++++++++++++++++++++++++++++++++++++
2 files changed, 48 insertions(+), 10 deletions(-)
create mode 100644 xlat/uring_cqring_flags.h
diff --git a/types/check-io_uring.c b/types/check-io_uring.c
index dc21569..d5bd4b1 100644
--- a/types/check-io_uring.c
+++ b/types/check-io_uring.c
@@ -13,16 +13,6 @@ static_assert(sizeof(struct io_sqring_offsets) <= offsetof(struct_io_sqring_offs
# endif /* HAVE_STRUCT_IO_SQRING_OFFSETS_RESV2 */
#endif /* HAVE_STRUCT_IO_SQRING_OFFSETS */
-#ifdef HAVE_STRUCT_IO_CQRING_OFFSETS
-# ifdef HAVE_STRUCT_IO_CQRING_OFFSETS_RESV
-static_assert(sizeof(struct io_cqring_offsets) == sizeof(struct_io_cqring_offsets),
- "struct io_cqring_offsets size mismatch, please update the decoder or fix the kernel");
-# else
-static_assert(sizeof(struct io_cqring_offsets) <= offsetof(struct_io_cqring_offsets, resv),
-"struct io_cqring_offsets size mismatch, please update the decoder or fix the kernel");
-# endif /* HAVE_STRUCT_IO_CQRING_OFFSETS_RESV */
-#endif /* HAVE_STRUCT_IO_CQRING_OFFSETS */
-
#ifdef HAVE_STRUCT_IO_URING_PARAMS
# ifdef HAVE_STRUCT_IO_URING_PARAMS_CQ_OFF
static_assert(sizeof(struct io_uring_params) == sizeof(struct_io_uring_params),
diff --git a/xlat/uring_cqring_flags.h b/xlat/uring_cqring_flags.h
new file mode 100644
index 0000000..0352749
--- /dev/null
+++ b/xlat/uring_cqring_flags.h
@@ -0,0 +1,48 @@
+/* Generated by ./xlat/gen.sh from ./xlat/uring_cqring_flags.in; do not edit. */
+
+#include "gcc_compat.h"
+#include "static_assert.h"
+
+#if defined(IORING_CQ_EVENTFD_DISABLED) || (defined(HAVE_DECL_IORING_CQ_EVENTFD_DISABLED) && HAVE_DECL_IORING_CQ_EVENTFD_DISABLED)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((IORING_CQ_EVENTFD_DISABLED) == (1U), "IORING_CQ_EVENTFD_DISABLED != 1U");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define IORING_CQ_EVENTFD_DISABLED 1U
+#endif
+
+#ifndef XLAT_MACROS_ONLY
+
+# ifdef IN_MPERS
+
+# error static const struct xlat uring_cqring_flags in mpers mode
+
+# else
+
+static const struct xlat_data uring_cqring_flags_xdata[] = {
+ XLAT(IORING_CQ_EVENTFD_DISABLED),
+ #define XLAT_VAL_0 ((unsigned) (IORING_CQ_EVENTFD_DISABLED))
+ #define XLAT_STR_0 STRINGIFY(IORING_CQ_EVENTFD_DISABLED)
+};
+static
+const struct xlat uring_cqring_flags[1] = { {
+ .data = uring_cqring_flags_xdata,
+ .size = ARRAY_SIZE(uring_cqring_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+# ifdef XLAT_VAL_0
+ | XLAT_VAL_0
+# endif
+ ,
+ .flags_strsz = 0
+# ifdef XLAT_STR_0
+ + sizeof(XLAT_STR_0)
+# endif
+ ,
+} };
+
+# undef XLAT_STR_0
+# undef XLAT_VAL_0
+# endif /* !IN_MPERS */
+
+#endif /* !XLAT_MACROS_ONLY */
--
2.27.0

BIN
strace-5.10.tar.xz Normal file

Binary file not shown.

Binary file not shown.

View File

@ -2,8 +2,8 @@
# This spec file is from upstream.
Summary: Tracks and displays system calls associated with a running process
Name: strace
Version: 5.6
Release: 2
Version: 5.10
Release: 1
# The test suite is GPLv2+, all the rest is LGPLv2.1+.
License: LGPL-2.1+ and GPL-2.0+
# Some distros require Group tag to be present,
@ -19,9 +19,6 @@ Source: strace-%{version}.tar.gz
%endif
BuildRequires: gcc gzip
Patch0: backport-io_uring-Add-io_cqring_offset-flags.patch
Patch1: backport-io_uring-Remove-struct-io_cqring_offsets-compile-tim.patch
Patch2: backport-uring-fix-build-against-5.8-libc-headers.patch
# Install Bluetooth headers for AF_BLUETOOTH sockets decoding.
%if 0%{?fedora} >= 18 || 0%{?centos} >= 6 || 0%{?rhel} >= 8 || 0%{?suse_version} >= 1200 || 0%{?openEuler} >= 1
BuildRequires: pkgconfig(bluez)
@ -104,6 +101,9 @@ wait
%{_mandir}/man1/*
%changelog
* Mon Feb 1 2021 xinghe <xinghe1@huawei.com> - 5.10-1
- update to 5.10
* Thu Nov 10 2020 xinghe <xinghe1@huawei.com> - 5.6-2
- fix master build error