* [LTP] [PATCH 0/3] syscalls/aio: Convert libaio wrapper function to kernel syscall
@ 2021-04-29 11:50 Xie Ziyao
2021-04-29 11:50 ` [LTP] [PATCH 1/3] syscalls/io_destroy: " Xie Ziyao
` (3 more replies)
0 siblings, 4 replies; 14+ messages in thread
From: Xie Ziyao @ 2021-04-29 11:50 UTC (permalink / raw)
To: ltp
Instead of using the libaio wrapper function, the system call is changed to be invoked via syscall(2).
Xie Ziyao (3):
syscalls/io_destroy: Convert libaio wrapper function to kernel syscall
syscalls/io_setup: Convert libaio wrapper function to kernel syscall
syscalls/io_submit: Convert libaio wrapper function to kernel syscall
.../kernel/syscalls/io_destroy/io_destroy01.c | 49 ++------
.../kernel/syscalls/io_setup/io_setup01.c | 94 +++++----------
.../kernel/syscalls/io_submit/io_submit01.c | 110 ++++++++----------
3 files changed, 86 insertions(+), 167 deletions(-)
--
2.17.1
^ permalink raw reply [flat|nested] 14+ messages in thread
* [LTP] [PATCH 1/3] syscalls/io_destroy: Convert libaio wrapper function to kernel syscall
2021-04-29 11:50 [LTP] [PATCH 0/3] syscalls/aio: Convert libaio wrapper function to kernel syscall Xie Ziyao
@ 2021-04-29 11:50 ` Xie Ziyao
2021-04-29 11:50 ` [LTP] [PATCH 2/3] syscalls/io_setup: " Xie Ziyao
` (2 subsequent siblings)
3 siblings, 0 replies; 14+ messages in thread
From: Xie Ziyao @ 2021-04-29 11:50 UTC (permalink / raw)
To: ltp
Instead of using the libaio wrapper function, the system call is changed to be invoked via syscall(2).
Signed-off-by: Xie Ziyao <xieziyao@huawei.com>
---
.../kernel/syscalls/io_destroy/io_destroy01.c | 49 +++++--------------
1 file changed, 12 insertions(+), 37 deletions(-)
diff --git a/testcases/kernel/syscalls/io_destroy/io_destroy01.c b/testcases/kernel/syscalls/io_destroy/io_destroy01.c
index bb89f61f5..6f14bb8e6 100644
--- a/testcases/kernel/syscalls/io_destroy/io_destroy01.c
+++ b/testcases/kernel/syscalls/io_destroy/io_destroy01.c
@@ -1,55 +1,30 @@
// SPDX-License-Identifier: GPL-2.0-or-later
/*
- * Copyright (c) Crackerjack Project., 2007
- * Copyright (c) 2011 Cyril Hrubis <chrubis@suse.cz>
- * Copyright (c) 2017 Xiao Yang <yangx.jy@cn.fujitsu.com>
+ * Copyright (c) Crackerjack Project., 2007
+ * Ported from Crackerjack to LTP by Masatake YAMATO <yamato@redhat.com>
+ * Copyright (c) 2011 Cyril Hrubis <chrubis@suse.cz>
+ * Copyright (c) 2017 Xiao Yang <yangx.jy@cn.fujitsu.com>
*/
-/* Porting from Crackerjack to LTP is done
- * by Masatake YAMATO <yamato@redhat.com>
+/*\
+ * [Description]
*
- * Description:
- * io_destroy(2) fails and returns -EINVAL if ctx is invalid.
+ * Call io_destroy with an invalid ctx and expects it to return EINVAL.
*/
-#include <errno.h>
-#include <string.h>
+#include <linux/aio_abi.h>
+
#include "config.h"
#include "tst_test.h"
-
-#ifdef HAVE_LIBAIO
-#include <libaio.h>
+#include "lapi/syscalls.h"
static void verify_io_destroy(void)
{
- io_context_t ctx;
-
+ aio_context_t ctx;
memset(&ctx, 0xff, sizeof(ctx));
- TEST(io_destroy(ctx));
-
- if (TST_RET == 0) {
- tst_res(TFAIL, "io_destroy() succeeded unexpectedly");
- return;
- }
-
- if (TST_RET == -ENOSYS) {
- tst_res(TCONF, "io_destroy() not supported");
- return;
- }
-
- if (TST_RET == -EINVAL) {
- tst_res(TPASS, "io_destroy() failed as expected, returned -EINVAL");
- return;
- }
-
- tst_res(TFAIL, "io_destroy() failed unexpectedly, returned -%s expected -EINVAL",
- tst_strerrno(-TST_RET));
+ TST_EXP_FAIL(tst_syscall(__NR_io_destroy, ctx), EINVAL);
}
static struct tst_test test = {
.test_all = verify_io_destroy,
};
-
-#else
- TST_TEST_TCONF("test requires libaio and it's development packages");
-#endif
--
2.17.1
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [LTP] [PATCH 2/3] syscalls/io_setup: Convert libaio wrapper function to kernel syscall
2021-04-29 11:50 [LTP] [PATCH 0/3] syscalls/aio: Convert libaio wrapper function to kernel syscall Xie Ziyao
2021-04-29 11:50 ` [LTP] [PATCH 1/3] syscalls/io_destroy: " Xie Ziyao
@ 2021-04-29 11:50 ` Xie Ziyao
2021-04-29 11:50 ` [LTP] [PATCH 3/3] syscalls/io_submit: " Xie Ziyao
2021-05-03 19:03 ` [LTP] [PATCH 0/3] syscalls/aio: " Petr Vorel
3 siblings, 0 replies; 14+ messages in thread
From: Xie Ziyao @ 2021-04-29 11:50 UTC (permalink / raw)
To: ltp
Instead of using the libaio wrapper function, the system call is changed to be invoked via syscall(2).
Signed-off-by: Xie Ziyao <xieziyao@huawei.com>
---
.../kernel/syscalls/io_setup/io_setup01.c | 94 +++++--------------
1 file changed, 26 insertions(+), 68 deletions(-)
diff --git a/testcases/kernel/syscalls/io_setup/io_setup01.c b/testcases/kernel/syscalls/io_setup/io_setup01.c
index 28aee7831..6927aeafc 100644
--- a/testcases/kernel/syscalls/io_setup/io_setup01.c
+++ b/testcases/kernel/syscalls/io_setup/io_setup01.c
@@ -1,92 +1,50 @@
// SPDX-License-Identifier: GPL-2.0-or-later
/*
- * Copyright (c) Crackerjack Project., 2007
- * Copyright (c) 2011 Cyril Hrubis <chrubis@suse.cz>
- * Copyright (c) 2017 Xiao Yang <yangx.jy@cn.fujitsu.com>
+ * Copyright (c) Crackerjack Project., 2007
+ * Ported from Crackerjack to LTP by Masatake YAMATO <yamato@redhat.com>
+ * Copyright (c) 2011 Cyril Hrubis <chrubis@suse.cz>
+ * Copyright (c) 2017 Xiao Yang <yangx.jy@cn.fujitsu.com>
*/
-/* Porting from Crackerjack to LTP is done
- * by Masatake YAMATO <yamato@redhat.com>
+/*\
+ * [Description]
*
- * Description:
- * 1) io_setup(2) succeeds if both nr_events and ctxp are valid.
- * 2) io_setup(2) fails and returns -EINVAL if ctxp is not initialized to 0.
- * 3) io_setup(2) fails and returns -EINVAL if nr_events is invalid.
- * 4) io_setup(2) fails and returns -EFAULT if ctxp is NULL.
- * 5) io_setup(2) fails and returns -EAGAIN if nr_events exceeds the limit
- * of available events.
+ * - io_setup(2) fails and returns -EFAULT if ctxp is NULL;
+ * - io_setup(2) fails and returns -EINVAL if ctxp is not initialized to 0;
+ * - io_setup(2) fails and returns -EINVAL if nr_events is -1;
+ * - io_setup(2) fails and returns -EAGAIN if nr_events exceeds the limit
+ * of available events;
+ * - io_setup(2) succeeds if both nr_events and ctxp are valid;
*/
-#include <errno.h>
-#include <string.h>
-#include <unistd.h>
+#include <linux/aio_abi.h>
+
#include "config.h"
#include "tst_test.h"
-
-#ifdef HAVE_LIBAIO
-#include <libaio.h>
-
-static void verify_failure(unsigned int nr, io_context_t *ctx, int init_val, long exp_err)
-{
- if (ctx)
- memset(ctx, init_val, sizeof(*ctx));
-
- TEST(io_setup(nr, ctx));
- if (TST_RET == 0) {
- tst_res(TFAIL, "io_setup() passed unexpectedly");
- io_destroy(*ctx);
- return;
- }
-
- if (TST_RET == -exp_err) {
- tst_res(TPASS, "io_setup() failed as expected, returned -%s",
- tst_strerrno(exp_err));
- } else {
- tst_res(TFAIL, "io_setup() failed unexpectedly, returned -%s "
- "expected -%s", tst_strerrno(-TST_RET),
- tst_strerrno(exp_err));
- }
-}
-
-static void verify_success(unsigned int nr, io_context_t *ctx, int init_val)
-{
- memset(ctx, init_val, sizeof(*ctx));
-
- TEST(io_setup(nr, ctx));
- if (TST_RET == -ENOSYS)
- tst_brk(TCONF | TRERRNO, "io_setup(): AIO not supported by kernel");
- if (TST_RET != 0) {
- tst_res(TFAIL, "io_setup() failed unexpectedly with %li (%s)",
- TST_RET, tst_strerrno(-TST_RET));
- return;
- }
-
- tst_res(TPASS, "io_setup() passed as expected");
- io_destroy(*ctx);
-}
+#include "lapi/syscalls.h"
static void verify_io_setup(void)
{
- io_context_t ctx;
- unsigned int aio_max = 0;
+ aio_context_t ctx;
+ TST_EXP_FAIL(tst_syscall(__NR_io_setup, 1, NULL), EFAULT);
- verify_success(1, &ctx, 0);
- verify_failure(1, &ctx, 1, EINVAL);
- verify_failure(-1, &ctx, 0, EINVAL);
- verify_failure(1, NULL, 0, EFAULT);
+ memset(&ctx, 1, sizeof(ctx));
+ TST_EXP_FAIL(tst_syscall(__NR_io_setup, 1, &ctx), EINVAL);
+ memset(&ctx, 0, sizeof(ctx));
+ TST_EXP_FAIL(tst_syscall(__NR_io_setup, -1, &ctx), EINVAL);
+ unsigned aio_max = 0;
if (!access("/proc/sys/fs/aio-max-nr", F_OK)) {
SAFE_FILE_SCANF("/proc/sys/fs/aio-max-nr", "%u", &aio_max);
- verify_failure(aio_max + 1, &ctx, 0, EAGAIN);
+ TST_EXP_FAIL(tst_syscall(__NR_io_setup, aio_max + 1, &ctx), EAGAIN);
} else {
tst_res(TCONF, "the aio-max-nr file did not exist");
}
+
+ TST_EXP_PASS(tst_syscall(__NR_io_setup, 1, &ctx));
+ TST_EXP_PASS(tst_syscall(__NR_io_destroy, ctx));
}
static struct tst_test test = {
.test_all = verify_io_setup,
};
-
-#else
- TST_TEST_TCONF("test requires libaio and it's development packages");
-#endif
--
2.17.1
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [LTP] [PATCH 3/3] syscalls/io_submit: Convert libaio wrapper function to kernel syscall
2021-04-29 11:50 [LTP] [PATCH 0/3] syscalls/aio: Convert libaio wrapper function to kernel syscall Xie Ziyao
2021-04-29 11:50 ` [LTP] [PATCH 1/3] syscalls/io_destroy: " Xie Ziyao
2021-04-29 11:50 ` [LTP] [PATCH 2/3] syscalls/io_setup: " Xie Ziyao
@ 2021-04-29 11:50 ` Xie Ziyao
2021-05-04 12:09 ` Cyril Hrubis
2021-05-03 19:03 ` [LTP] [PATCH 0/3] syscalls/aio: " Petr Vorel
3 siblings, 1 reply; 14+ messages in thread
From: Xie Ziyao @ 2021-04-29 11:50 UTC (permalink / raw)
To: ltp
Instead of using the libaio wrapper function, the system call is changed to be invoked via syscall(2).
Signed-off-by: Xie Ziyao <xieziyao@huawei.com>
---
.../kernel/syscalls/io_submit/io_submit01.c | 110 ++++++++----------
1 file changed, 48 insertions(+), 62 deletions(-)
diff --git a/testcases/kernel/syscalls/io_submit/io_submit01.c b/testcases/kernel/syscalls/io_submit/io_submit01.c
index bbbbc9101..702a7721b 100644
--- a/testcases/kernel/syscalls/io_submit/io_submit01.c
+++ b/testcases/kernel/syscalls/io_submit/io_submit01.c
@@ -1,24 +1,29 @@
// SPDX-License-Identifier: GPL-2.0-or-later
/*
* Copyright (c) Crackerjack Project., 2007
+ * Ported from Crackerjack to LTP by Masatake YAMATO <yamato@redhat.com>
* Copyright (c) 2011-2017 Cyril Hrubis <chrubis@suse.cz>
*/
-/* Porting from Crackerjack to LTP is done
- by Masatake YAMATO <yamato@redhat.com> */
+/*\
+ * [Description]
+ *
+ * - io_submit(2) fails and returns EINVAL if ctx is invalid;
+ * - io_submit(2) fails and returns EINVAL if nr is invalid;
+ * - io_submit(2) fails and returns EFAULT if iocbpp pointer is invalid;
+ * - io_submit(2) fails and returns EBADF if fd is invalid;
+ * - io_submit(2) should work fine if no-op;
+ */
-#include <errno.h>
-#include <string.h>
-#include <fcntl.h>
+#include <linux/aio_abi.h>
#include "config.h"
#include "tst_test.h"
+#include "lapi/syscalls.h"
-#ifdef HAVE_LIBAIO
-#include <libaio.h>
-
-static io_context_t ctx;
-static io_context_t invalid_ctx;
+static aio_context_t ctx;
+static aio_context_t invalid_ctx;
+static char buf[100];
static struct iocb iocb;
static struct iocb *iocbs[] = {&iocb};
@@ -39,93 +44,74 @@ static struct iocb *zero_buf_iocbs[] = {&zero_buf_iocb};
static struct iocb *zero_iocbs[1];
-static char buf[100];
-
static struct tcase {
- io_context_t *ctx;
+ aio_context_t *ctx;
long nr;
struct iocb **iocbs;
int exp_errno;
const char *desc;
-} tcases[] = {
+} tc[] = {
/* Invalid ctx */
- {&invalid_ctx, 1, iocbs, -EINVAL, "invalid ctx"},
+ {&invalid_ctx, 1, iocbs, EINVAL, "invalid ctx"},
/* Invalid nr */
- {&ctx, -1, iocbs, -EINVAL, "invalid nr"},
+ {&ctx, -1, iocbs, EINVAL, "invalid nr"},
/* Invalid pointer */
- {&ctx, 1, (void*)-1, -EFAULT, "invalid iocbpp pointer"},
- {&ctx, 1, zero_iocbs, -EFAULT, "NULL iocb pointers"},
+ {&ctx, 1, (void*)-1, EFAULT, "invalid iocbpp pointer"},
+ {&ctx, 1, zero_iocbs, EFAULT, "NULL iocb pointers"},
/* Invalid fd */
- {&ctx, 1, inv_fd_iocbs, -EBADF, "invalid fd"},
- {&ctx, 1, rdonly_fd_iocbs, -EBADF, "readonly fd for write"},
- {&ctx, 1, wronly_fd_iocbs, -EBADF, "writeonly fd for read"},
+ {&ctx, 1, inv_fd_iocbs, EBADF, "invalid fd"},
+ {&ctx, 1, rdonly_fd_iocbs, EBADF, "readonly fd for write"},
+ {&ctx, 1, wronly_fd_iocbs, EBADF, "writeonly fd for read"},
/* No-op but should work fine */
- {&ctx, 1, zero_buf_iocbs, 1, "zero buf size"},
+ {&ctx, 1, zero_buf_iocbs, 0, "zero buf size"},
{&ctx, 0, NULL, 0, "zero nr"},
};
-static void setup(void)
+static inline void io_prep_option(struct iocb *cb, int fd, void *buf,
+ size_t count, long long offset, unsigned opcode)
{
- TEST(io_setup(1, &ctx));
- if (TST_RET == -ENOSYS)
- tst_brk(TCONF | TRERRNO, "io_setup(): AIO not supported by kernel");
- else if (TST_RET)
- tst_brk(TBROK | TRERRNO, "io_setup() failed");
+ memset(cb, 0, sizeof(*cb));
+ cb->aio_fildes = fd;
+ cb->aio_lio_opcode = opcode;
+ cb->aio_buf = (uint64_t)buf;
+ cb->aio_offset = offset;
+ cb->aio_nbytes = count;
+}
- io_prep_pread(&inv_fd_iocb, -1, buf, sizeof(buf), 0);
+static void setup(void)
+{
+ TST_EXP_PASS(tst_syscall(__NR_io_setup, 1, &ctx));
+ io_prep_option(&inv_fd_iocb, -1, buf, sizeof(buf), 0, IOCB_CMD_PREAD);
rdonly_fd = SAFE_OPEN("rdonly_file", O_RDONLY | O_CREAT, 0777);
- io_prep_pwrite(&rdonly_fd_iocb, rdonly_fd, buf, sizeof(buf), 0);
+ io_prep_option(&rdonly_fd_iocb, rdonly_fd, buf, sizeof(buf), 0, IOCB_CMD_PWRITE);
- io_prep_pread(&zero_buf_iocb, rdonly_fd, buf, 0, 0);
+ io_prep_option(&zero_buf_iocb, rdonly_fd, buf, 0, 0, IOCB_CMD_PREAD);
wronly_fd = SAFE_OPEN("wronly_file", O_WRONLY | O_CREAT, 0777);
- io_prep_pread(&wronly_fd_iocb, wronly_fd, buf, sizeof(buf), 0);
+ io_prep_option(&wronly_fd_iocb, wronly_fd, buf, sizeof(buf), 0, IOCB_CMD_PREAD);
}
static void cleanup(void)
{
if (rdonly_fd > 0)
SAFE_CLOSE(rdonly_fd);
-
if (wronly_fd > 0)
SAFE_CLOSE(wronly_fd);
}
-static const char *errno_name(int err)
+static void run(unsigned int i)
{
- if (err <= 0)
- return tst_strerrno(-err);
-
- return "SUCCESS";
-}
-
-static void verify_io_submit(unsigned int n)
-{
- struct tcase *t = &tcases[n];
- int ret;
-
- ret = io_submit(*t->ctx, t->nr, t->iocbs);
-
- if (ret == t->exp_errno) {
- tst_res(TPASS, "io_submit() with %s failed with %s",
- t->desc, errno_name(t->exp_errno));
- return;
- }
-
- tst_res(TFAIL, "io_submit() returned %i(%s), expected %s(%i)",
- ret, ret < 0 ? tst_strerrno(-ret) : "SUCCESS",
- errno_name(t->exp_errno), t->exp_errno);
+ TEST(tst_syscall(__NR_io_submit, *tc[i].ctx, tc[i].nr, tc[i].iocbs));
+ tst_res(TST_ERR == tc[i].exp_errno ? TPASS : TFAIL,
+ "io_submit(2) with %s returns %s, expected %s",
+ tc[i].desc, tst_strerrno(TST_ERR), tst_strerrno(tc[i].exp_errno));
}
static struct tst_test test = {
.setup = setup,
.cleanup = cleanup,
- .test = verify_io_submit,
- .tcnt = ARRAY_SIZE(tcases),
+ .test = run,
+ .tcnt = ARRAY_SIZE(tc),
.needs_tmpdir = 1,
};
-
-#else
- TST_TEST_TCONF("test requires libaio and it's development packages");
-#endif
--
2.17.1
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [LTP] [PATCH 0/3] syscalls/aio: Convert libaio wrapper function to kernel syscall
2021-04-29 11:50 [LTP] [PATCH 0/3] syscalls/aio: Convert libaio wrapper function to kernel syscall Xie Ziyao
` (2 preceding siblings ...)
2021-04-29 11:50 ` [LTP] [PATCH 3/3] syscalls/io_submit: " Xie Ziyao
@ 2021-05-03 19:03 ` Petr Vorel
2021-05-04 4:08 ` Jan Stancek
3 siblings, 1 reply; 14+ messages in thread
From: Petr Vorel @ 2021-05-03 19:03 UTC (permalink / raw)
To: ltp
Hi Ziyao,
> Instead of using the libaio wrapper function, the system call is changed to be invoked via syscall(2).
Generally LGTM. Major thing for me is to replace <libaio.h> with <linux/aio_abi.h>.
Do you plan to transform other tests which now still use <libaio.h>
(testcases/kernel/io/aio/ and testcases/kernel/io/ltp-aiodio/, which are BTW
problematic on mainline kernel)? I guess it'd be good to keep some test using <libaio.h>.
FYI if you don't prefer put your copyright, I'll update it with LTP copyright.
You also mix more things in single commit: using kernel API instead of libaio
API (that you mentioned) with both code and comments cleanup. But commits are
quite compact thus LGTM.
Reviewed-by: Petr Vorel <pvorel@suse.cz>
For whole patchset.
Kind regards,
Petr
> Xie Ziyao (3):
> syscalls/io_destroy: Convert libaio wrapper function to kernel syscall
> syscalls/io_setup: Convert libaio wrapper function to kernel syscall
> syscalls/io_submit: Convert libaio wrapper function to kernel syscall
> .../kernel/syscalls/io_destroy/io_destroy01.c | 49 ++------
> .../kernel/syscalls/io_setup/io_setup01.c | 94 +++++----------
> .../kernel/syscalls/io_submit/io_submit01.c | 110 ++++++++----------
> 3 files changed, 86 insertions(+), 167 deletions(-)
^ permalink raw reply [flat|nested] 14+ messages in thread
* [LTP] [PATCH 0/3] syscalls/aio: Convert libaio wrapper function to kernel syscall
2021-05-03 19:03 ` [LTP] [PATCH 0/3] syscalls/aio: " Petr Vorel
@ 2021-05-04 4:08 ` Jan Stancek
2021-05-04 5:13 ` Petr Vorel
0 siblings, 1 reply; 14+ messages in thread
From: Jan Stancek @ 2021-05-04 4:08 UTC (permalink / raw)
To: ltp
On Mon, May 3, 2021 at 9:03 PM Petr Vorel <pvorel@suse.cz> wrote:
> Hi Ziyao,
>
> > Instead of using the libaio wrapper function, the system call is changed
> to be invoked via syscall(2).
>
I probably missed some discussion. Why are we replacing it with syscall?
> Generally LGTM. Major thing for me is to replace <libaio.h> with
> <linux/aio_abi.h>.
> Do you plan to transform other tests which now still use <libaio.h>
> (testcases/kernel/io/aio/ and testcases/kernel/io/ltp-aiodio/, which are
> BTW
> problematic on mainline kernel)? I guess it'd be good to keep some test
> using <libaio.h>.
>
> FYI if you don't prefer put your copyright, I'll update it with LTP
> copyright.
>
> You also mix more things in single commit: using kernel API instead of
> libaio
> API (that you mentioned) with both code and comments cleanup. But commits
> are
> quite compact thus LGTM.
>
> Reviewed-by: Petr Vorel <pvorel@suse.cz>
> For whole patchset.
>
> Kind regards,
> Petr
>
> > Xie Ziyao (3):
> > syscalls/io_destroy: Convert libaio wrapper function to kernel syscall
> > syscalls/io_setup: Convert libaio wrapper function to kernel syscall
> > syscalls/io_submit: Convert libaio wrapper function to kernel syscall
>
> > .../kernel/syscalls/io_destroy/io_destroy01.c | 49 ++------
> > .../kernel/syscalls/io_setup/io_setup01.c | 94 +++++----------
> > .../kernel/syscalls/io_submit/io_submit01.c | 110 ++++++++----------
> > 3 files changed, 86 insertions(+), 167 deletions(-)
>
> --
> Mailing list info: https://lists.linux.it/listinfo/ltp
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.linux.it/pipermail/ltp/attachments/20210504/4eb588ee/attachment.htm>
^ permalink raw reply [flat|nested] 14+ messages in thread
* [LTP] [PATCH 0/3] syscalls/aio: Convert libaio wrapper function to kernel syscall
2021-05-04 4:08 ` Jan Stancek
@ 2021-05-04 5:13 ` Petr Vorel
2021-05-04 6:19 ` xieziyao
0 siblings, 1 reply; 14+ messages in thread
From: Petr Vorel @ 2021-05-04 5:13 UTC (permalink / raw)
To: ltp
Hi Jan,
> On Mon, May 3, 2021 at 9:03 PM Petr Vorel <pvorel@suse.cz> wrote:
> > Hi Ziyao,
> > > Instead of using the libaio wrapper function, the system call is changed
> > to be invoked via syscall(2).
> I probably missed some discussion. Why are we replacing it with syscall?
you haven't missed anything. io_destroy(ctx) (libaio.h) is being replaced with
raw syscall (tst_syscall(__NR_io_destroy, ctx).
Kind regards,
Petr
^ permalink raw reply [flat|nested] 14+ messages in thread
* [LTP] [PATCH 0/3] syscalls/aio: Convert libaio wrapper function to kernel syscall
2021-05-04 5:13 ` Petr Vorel
@ 2021-05-04 6:19 ` xieziyao
0 siblings, 0 replies; 14+ messages in thread
From: xieziyao @ 2021-05-04 6:19 UTC (permalink / raw)
To: ltp
Hi, Petr, Jan,
I am working on adapting the new API to the testsuite of syscalls/io_*.
At the same time, I prefer to replace libaio wrapper function with raw system call(tst_syscall(__NR_io_*)) just for the aio testcases of kernel/syscalls, since this method may be more straightforward, no need to rely on other libraries.
Glad to see your discussion and participation, thanks.
Kind regards,
Ziyao
From: Petr Vorel<pvorel@suse.cz<mailto:pvorel@suse.cz>>
To: Jan Stancek<jstancek@redhat.com<mailto:jstancek@redhat.com>>
Cc: xieziyao<xieziyao@huawei.com<mailto:xieziyao@huawei.com>>;ltp<ltp@lists.linux.it<mailto:ltp@lists.linux.it>>;Richard Palethorpe<rpalethorpe@suse.com<mailto:rpalethorpe@suse.com>>
Subject: Re: [LTP] [PATCH 0/3] syscalls/aio: Convert libaio wrapper function to kernel syscall
Time: 2021-05-04 13:13:53
Hi Jan,
> On Mon, May 3, 2021 at 9:03 PM Petr Vorel <pvorel@suse.cz> wrote:
> > Hi Ziyao,
> > > Instead of using the libaio wrapper function, the system call is changed
> > to be invoked via syscall(2).
> I probably missed some discussion. Why are we replacing it with syscall?
you haven't missed anything. io_destroy(ctx) (libaio.h) is being replaced with
raw syscall (tst_syscall(__NR_io_destroy, ctx).
Kind regards,
Petr
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.linux.it/pipermail/ltp/attachments/20210504/f92c4e36/attachment-0001.htm>
^ permalink raw reply [flat|nested] 14+ messages in thread
* [LTP] [PATCH 3/3] syscalls/io_submit: Convert libaio wrapper function to kernel syscall
2021-04-29 11:50 ` [LTP] [PATCH 3/3] syscalls/io_submit: " Xie Ziyao
@ 2021-05-04 12:09 ` Cyril Hrubis
2021-05-06 12:27 ` Xie Ziyao
0 siblings, 1 reply; 14+ messages in thread
From: Cyril Hrubis @ 2021-05-04 12:09 UTC (permalink / raw)
To: ltp
Hi!
> Instead of using the libaio wrapper function, the system call is
> changed to be invoked via syscall(2).
Ideally we should test _both_ syscall() and the library to maximize the
coverage. We can easily do that with .test_variants, have a look at
stime tests and testcases/kernel/syscalls/stime/stime_var.h how this is
done.
--
Cyril Hrubis
chrubis@suse.cz
^ permalink raw reply [flat|nested] 14+ messages in thread
* [LTP] [PATCH 3/3] syscalls/io_submit: Convert libaio wrapper function to kernel syscall
2021-05-04 12:09 ` Cyril Hrubis
@ 2021-05-06 12:27 ` Xie Ziyao
2021-05-06 12:57 ` Petr Vorel
0 siblings, 1 reply; 14+ messages in thread
From: Xie Ziyao @ 2021-05-06 12:27 UTC (permalink / raw)
To: ltp
Hi, Cyril,
If we should test _both_ syscall() and the library, I would prefer to
split libaio and native aio into two testcases in this testsuite, since
<libaio.h> conflicts with <linux/aio_abi.h> during actual modification.
Excuse me, is there any other good way to solve this problem?
Thanks very much!
Kind Regards,
Ziyao
On 2021/5/4 20:09, Cyril Hrubis wrote:
> Hi!
>> Instead of using the libaio wrapper function, the system call is
>> changed to be invoked via syscall(2).
>
> Ideally we should test _both_ syscall() and the library to maximize the
> coverage. We can easily do that with .test_variants, have a look at
> stime tests and testcases/kernel/syscalls/stime/stime_var.h how this is
> done.
>
^ permalink raw reply [flat|nested] 14+ messages in thread
* [LTP] [PATCH 3/3] syscalls/io_submit: Convert libaio wrapper function to kernel syscall
2021-05-06 12:27 ` Xie Ziyao
@ 2021-05-06 12:57 ` Petr Vorel
2021-05-06 13:58 ` Cyril Hrubis
0 siblings, 1 reply; 14+ messages in thread
From: Petr Vorel @ 2021-05-06 12:57 UTC (permalink / raw)
To: ltp
Hi Ziyao,
> Hi, Cyril,
> If we should test _both_ syscall() and the library, I would prefer to split
> libaio and native aio into two testcases in this testsuite, since <libaio.h>
> conflicts with <linux/aio_abi.h> during actual modification.
> Excuse me, is there any other good way to solve this problem?
NOTE: if most of the test the same, with little help of #ifdef and maybe 1-2
macros we can have single source for both variants (compiling 2 binaries).
See setdomainname and sethostname tests (setdomainname.h).
Kind regards,
Petr
> Thanks very much!
> Kind Regards,
> Ziyao
> On 2021/5/4 20:09, Cyril Hrubis wrote:
> > Hi!
> > > Instead of using the libaio wrapper function, the system call is
> > > changed to be invoked via syscall(2).
> > Ideally we should test _both_ syscall() and the library to maximize the
> > coverage. We can easily do that with .test_variants, have a look at
> > stime tests and testcases/kernel/syscalls/stime/stime_var.h how this is
> > done.
^ permalink raw reply [flat|nested] 14+ messages in thread
* [LTP] [PATCH 3/3] syscalls/io_submit: Convert libaio wrapper function to kernel syscall
2021-05-06 12:57 ` Petr Vorel
@ 2021-05-06 13:58 ` Cyril Hrubis
2021-05-06 18:22 ` Petr Vorel
0 siblings, 1 reply; 14+ messages in thread
From: Cyril Hrubis @ 2021-05-06 13:58 UTC (permalink / raw)
To: ltp
Hi!
> > If we should test _both_ syscall() and the library, I would prefer to split
> > libaio and native aio into two testcases in this testsuite, since <libaio.h>
> > conflicts with <linux/aio_abi.h> during actual modification.
>
> > Excuse me, is there any other good way to solve this problem?
> NOTE: if most of the test the same, with little help of #ifdef and maybe 1-2
> macros we can have single source for both variants (compiling 2 binaries).
> See setdomainname and sethostname tests (setdomainname.h).
Not sure that it's that easy here, since we cannot include libaio.h and
aio_abi.h in a single file without getting conflicts, they define
structures with the same name with possibly different layout, which
makes this very tricky.
I guess that having separate tests for different interface would
probably be easiest solution in this case.
--
Cyril Hrubis
chrubis@suse.cz
^ permalink raw reply [flat|nested] 14+ messages in thread
* [LTP] [PATCH 3/3] syscalls/io_submit: Convert libaio wrapper function to kernel syscall
2021-05-06 13:58 ` Cyril Hrubis
@ 2021-05-06 18:22 ` Petr Vorel
2021-05-07 8:35 ` Xie Ziyao
0 siblings, 1 reply; 14+ messages in thread
From: Petr Vorel @ 2021-05-06 18:22 UTC (permalink / raw)
To: ltp
> Hi!
> > > If we should test _both_ syscall() and the library, I would prefer to split
> > > libaio and native aio into two testcases in this testsuite, since <libaio.h>
> > > conflicts with <linux/aio_abi.h> during actual modification.
> > > Excuse me, is there any other good way to solve this problem?
> > NOTE: if most of the test the same, with little help of #ifdef and maybe 1-2
> > macros we can have single source for both variants (compiling 2 binaries).
> > See setdomainname and sethostname tests (setdomainname.h).
> Not sure that it's that easy here, since we cannot include libaio.h and
> aio_abi.h in a single file without getting conflicts, they define
> structures with the same name with possibly different layout, which
> makes this very tricky.
> I guess that having separate tests for different interface would
> probably be easiest solution in this case.
Sounds reasonable, thanks for info.
Kind regards,
Petr
^ permalink raw reply [flat|nested] 14+ messages in thread
* [LTP] [PATCH 3/3] syscalls/io_submit: Convert libaio wrapper function to kernel syscall
2021-05-06 18:22 ` Petr Vorel
@ 2021-05-07 8:35 ` Xie Ziyao
0 siblings, 0 replies; 14+ messages in thread
From: Xie Ziyao @ 2021-05-07 8:35 UTC (permalink / raw)
To: ltp
Hi,
Thanks a lot for your suggestions. I just submitted new testcases for
native AIO.
Please see: https://patchwork.ozlabs.org/project/ltp/list/?series=242617
And if there are no questions, I'll continue with the following:
1. Convert the original libaio testcases to the new API;
2. Add native AIO testcases for other testsuites in kernel/syscalls.
Thanks very much!
Kind Regards,
Ziyao
^ permalink raw reply [flat|nested] 14+ messages in thread
end of thread, other threads:[~2021-05-07 8:35 UTC | newest]
Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-04-29 11:50 [LTP] [PATCH 0/3] syscalls/aio: Convert libaio wrapper function to kernel syscall Xie Ziyao
2021-04-29 11:50 ` [LTP] [PATCH 1/3] syscalls/io_destroy: " Xie Ziyao
2021-04-29 11:50 ` [LTP] [PATCH 2/3] syscalls/io_setup: " Xie Ziyao
2021-04-29 11:50 ` [LTP] [PATCH 3/3] syscalls/io_submit: " Xie Ziyao
2021-05-04 12:09 ` Cyril Hrubis
2021-05-06 12:27 ` Xie Ziyao
2021-05-06 12:57 ` Petr Vorel
2021-05-06 13:58 ` Cyril Hrubis
2021-05-06 18:22 ` Petr Vorel
2021-05-07 8:35 ` Xie Ziyao
2021-05-03 19:03 ` [LTP] [PATCH 0/3] syscalls/aio: " Petr Vorel
2021-05-04 4:08 ` Jan Stancek
2021-05-04 5:13 ` Petr Vorel
2021-05-04 6:19 ` xieziyao
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.