From: Cyril Hrubis <chrubis@suse.cz>
To: Wei Gao <wegao@suse.com>
Cc: ltp@lists.linux.it
Subject: Re: [LTP] [PATCH v7] io_submit04: Add test case for RWF_NOWAIT flag
Date: Wed, 8 Apr 2026 17:11:03 +0200 [thread overview]
Message-ID: <adZot378W4Rg-g4V@yuki.lan> (raw)
In-Reply-To: <20260404011340.13288-1-wegao@suse.com>
Hi!
> --- /dev/null
> +++ b/testcases/kernel/syscalls/io_submit/io_submit04.c
> @@ -0,0 +1,99 @@
> +// SPDX-License-Identifier: GPL-2.0-or-later
> +/*
> + * Copyright (c) 2025 Wei Gao <wegao@suse.com>
> + */
> +
> +/*\
> + * Test RWF_NOWAIT support in io_submit(), verifying that an
> + * asynchronous read operation on a blocking resource (empty pipe)
> + * will cause -EAGAIN. This is done by checking that io_getevents()
> + * :manpage:`io_getevents(2)` syscall returns immediately and
> + * io_event.res is equal to -EAGAIN.
> + */
> +
> +#include "config.h"
> +#include "tst_test.h"
> +#include "lapi/syscalls.h"
> +#include "lapi/aio_abi.h"
> +
> +#define BUF_SIZE 100
> +
> +static int fd[2] = {-1, -1};
> +static aio_context_t ctx;
> +static char *buf;
> +static iocb *cb;
> +static iocb **iocbs;
> +
> +static void setup(void)
> +{
> + if (tst_syscall(__NR_io_setup, 1, &ctx))
> + tst_brk(TBROK | TERRNO, "io_setup failed");
Sorry if that was asked in previous reviews. Why are we using
tst_syscall() instead of the libaio functions like we do in the rest of
the tests?
> + SAFE_PIPE(fd);
> +
> + cb->aio_fildes = fd[0];
> + cb->aio_lio_opcode = IOCB_CMD_PREAD;
> + cb->aio_buf = TST_PTR_TO_UINT(buf);
> + cb->aio_offset = 0;
> + cb->aio_nbytes = BUF_SIZE;
> + cb->aio_rw_flags = RWF_NOWAIT;
> +
> + iocbs[0] = cb;
> +}
> +
> +static void cleanup(void)
> +{
> + if (fd[0] != -1)
> + SAFE_CLOSE(fd[0]);
> +
> + if (fd[1] != -1)
> + SAFE_CLOSE(fd[1]);
> +
> + if (ctx && tst_syscall(__NR_io_destroy, ctx))
> + tst_brk(TBROK | TERRNO, "io_destroy() failed");
> +}
> +
> +static void run(void)
> +{
> + struct io_event evbuf;
> + struct timespec timeout = { .tv_sec = 1 };
> + long nr = 1;
> +
> + TEST(tst_syscall(__NR_io_submit, ctx, nr, iocbs));
> +
> + if (TST_RET == -1 && TST_ERR == EOPNOTSUPP) {
> + tst_brk(TCONF, "RWF_NOWAIT not supported by kernel");
> + } else if (TST_RET != nr) {
> + tst_brk(TBROK | TTERRNO, "io_submit() returns %ld, expected %ld",
> + TST_RET, nr);
> + }
> +
> + TEST(tst_syscall(__NR_io_getevents, ctx, 1, 1, &evbuf, &timeout));
> +
> + if (TST_RET != 1) {
> + tst_res(TFAIL | TTERRNO, "io_getevents() failed to get 1 event");
> + return;
> + }
> +
> + if (evbuf.res == -EAGAIN)
> + tst_res(TPASS, "io_getevents() returned EAGAIN on read event");
> + else
> + tst_res(TFAIL, "io_getevents() returned with %s instead of EAGAIN",
> + strerror(-evbuf.res));
^
tst_strerrno()
Other than these two minor issues I do not see any problems in the code,
the rest looks fine.
--
Cyril Hrubis
chrubis@suse.cz
--
Mailing list info: https://lists.linux.it/listinfo/ltp
next prev parent reply other threads:[~2026-04-08 15:11 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-10-29 1:27 [LTP] [PATCH v1] io_submit04: Add test case for RWF_NOWAIT flag Wei Gao via ltp
2024-02-06 15:59 ` Petr Vorel
2025-10-22 2:05 ` [LTP] [PATCH v2] " Wei Gao via ltp
2025-12-18 13:21 ` Andrea Cervesato via ltp
2025-12-24 8:49 ` [LTP] [PATCH v3] " Wei Gao via ltp
2026-01-05 12:53 ` Andrea Cervesato via ltp
2026-01-06 6:26 ` Wei Gao via ltp
2026-01-06 8:39 ` Andrea Cervesato via ltp
2026-01-06 8:39 ` Petr Vorel
2026-01-07 8:53 ` Jan Stancek via ltp
2026-01-07 6:10 ` [LTP] [PATCH v4] " Wei Gao via ltp
2026-02-18 12:21 ` Andrea Cervesato via ltp
2026-03-05 4:41 ` Wei Gao via ltp
2026-03-17 7:43 ` [LTP] [PATCH v5] " Wei Gao via ltp
2026-03-17 9:54 ` Andrea Cervesato via ltp
2026-03-17 11:46 ` [LTP] [PATCH v6] " Wei Gao via ltp
2026-03-20 12:54 ` Andrea Cervesato via ltp
2026-03-27 18:17 ` Petr Vorel
2026-03-30 8:08 ` Wei Gao via ltp
2026-04-04 1:00 ` Wei Gao via ltp
2026-03-31 11:18 ` [LTP] [PATCH v7] fanotify22.c: handle multiple asynchronous error events Wei Gao via ltp
2026-04-29 14:51 ` [LTP] " linuxtestproject.agent
2026-05-07 2:58 ` Wei Gao via ltp
2026-05-07 2:53 ` [LTP] [PATCH v8] " Wei Gao via ltp
2026-05-07 6:18 ` [LTP] " linuxtestproject.agent
2026-05-07 7:37 ` [LTP] [PATCH v8] " Andrea Cervesato via ltp
2026-05-11 11:30 ` Jan Kara
2026-05-13 10:33 ` Petr Vorel
2026-04-04 1:13 ` [LTP] [PATCH v7] io_submit04: Add test case for RWF_NOWAIT flag Wei Gao via ltp
2026-04-08 15:11 ` Cyril Hrubis [this message]
2026-04-09 2:26 ` Wei Gao via ltp
2026-04-09 8:03 ` Cyril Hrubis
2026-04-09 13:45 ` Cyril Hrubis
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=adZot378W4Rg-g4V@yuki.lan \
--to=chrubis@suse.cz \
--cc=ltp@lists.linux.it \
--cc=wegao@suse.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.