Sync from SUSE:SLFO:Main libnvme revision 8f9331a5fce6b786f18832e09922ff58
This commit is contained in:
parent
5d82ad119b
commit
326d625e83
81
0002-test-mock-pass-thru-unknown-ioctls.patch
Normal file
81
0002-test-mock-pass-thru-unknown-ioctls.patch
Normal file
@ -0,0 +1,81 @@
|
||||
From 3ea902f4c8b5a1896bb4087e95c9a90614ef2d9b Mon Sep 17 00:00:00 2001
|
||||
From: Daniel Wagner <wagi@kernel.org>
|
||||
Date: Mon, 25 Nov 2024 13:48:37 +0100
|
||||
Subject: [PATCH] test/mock: pass thru unknown ioctls
|
||||
|
||||
On s390, tests which use the mock infrastructure fail, because all
|
||||
unhandled ioctl are considered as fail. The tests issue kvm related
|
||||
ioctls (0x7a). No need to fail or intercept them, just pass them thru to
|
||||
the real ioctl.
|
||||
|
||||
Signed-off-by: Daniel Wagner <wagi@kernel.org>
|
||||
---
|
||||
test/ioctl/mock.c | 21 ++++++++++++++++-----
|
||||
1 file changed, 16 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/test/ioctl/mock.c b/test/ioctl/mock.c
|
||||
index 1fb3ec1f9b07..14f6e71bdde0 100644
|
||||
--- a/test/ioctl/mock.c
|
||||
+++ b/test/ioctl/mock.c
|
||||
@@ -7,6 +7,7 @@
|
||||
#include <stdarg.h>
|
||||
#include <string.h>
|
||||
#include <sys/ioctl.h>
|
||||
+#include <dlfcn.h>
|
||||
|
||||
#include "../../src/nvme/ioctl.h"
|
||||
#include "util.h"
|
||||
@@ -118,18 +119,20 @@ void end_mock_cmds(void)
|
||||
})
|
||||
|
||||
#ifdef HAVE_GLIBC_IOCTL
|
||||
+typedef int (*ioctl_func_t)(int, unsigned long, void *);
|
||||
int ioctl(int fd, unsigned long request, ...)
|
||||
#else
|
||||
+typedef int (*ioctl_func_t)(int, int, void *);
|
||||
int ioctl(int fd, int request, ...)
|
||||
#endif
|
||||
{
|
||||
+ ioctl_func_t real_ioctl = NULL;
|
||||
struct mock_cmds *mock_cmds;
|
||||
bool result64;
|
||||
const struct mock_cmd *mock_cmd;
|
||||
va_list args;
|
||||
void *cmd;
|
||||
|
||||
- check(fd == mock_fd, "got fd %d, expected %d", fd, mock_fd);
|
||||
switch (request) {
|
||||
case NVME_IOCTL_ADMIN_CMD:
|
||||
mock_cmds = &mock_admin_cmds;
|
||||
@@ -148,16 +151,24 @@ int ioctl(int fd, int request, ...)
|
||||
result64 = true;
|
||||
break;
|
||||
default:
|
||||
- fail("unexpected %s %lu", __func__, (unsigned long) request);
|
||||
+ real_ioctl = dlsym(RTLD_NEXT, "ioctl");
|
||||
+ if (!real_ioctl)
|
||||
+ fail("Error: dlsym failed to find original ioctl\n");
|
||||
}
|
||||
+
|
||||
+ va_start(args, request);
|
||||
+ cmd = va_arg(args, void *);
|
||||
+ va_end(args);
|
||||
+
|
||||
+ if (real_ioctl)
|
||||
+ return real_ioctl(fd, request, cmd);
|
||||
+
|
||||
+ check(fd == mock_fd, "got fd %d, expected %d", fd, mock_fd);
|
||||
check(mock_cmds->remaining_cmds,
|
||||
"unexpected %s command", mock_cmds->name);
|
||||
mock_cmd = mock_cmds->cmds++;
|
||||
mock_cmds->remaining_cmds--;
|
||||
|
||||
- va_start(args, request);
|
||||
- cmd = va_arg(args, void *);
|
||||
- va_end(args);
|
||||
if (result64) {
|
||||
execute_ioctl((struct nvme_passthru_cmd64 *)cmd, mock_cmd);
|
||||
} else {
|
||||
--
|
||||
2.47.0
|
||||
|
@ -1,3 +1,9 @@
|
||||
-------------------------------------------------------------------
|
||||
Mon Nov 25 13:15:00 UTC 2024 - Daniel Wagner <daniel.wagner@suse.com>
|
||||
|
||||
- Fix tests on s390
|
||||
* add 0002-test-mock-pass-thru-unknown-ioctls.patch
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Oct 31 13:06:35 UTC 2024 - Daniel Wagner <daniel.wagner@suse.com>
|
||||
|
||||
|
@ -28,6 +28,7 @@ License: LGPL-2.1-or-later
|
||||
URL: https://github.com/linux-nvme/libnvme/
|
||||
Source0: libnvme-%{version}.tar.gz
|
||||
Patch01: 0001-linux-fix-derive_psk_digest-OpenSSL-1.1-version.patch
|
||||
Patch02: 0002-test-mock-pass-thru-unknown-ioctls.patch
|
||||
BuildRequires: dbus-1-devel
|
||||
BuildRequires: gcc
|
||||
BuildRequires: gcc-c++
|
||||
|
Loading…
Reference in New Issue
Block a user