From: Pavel Begunkov <[email protected]>
To: [email protected]
Cc: [email protected], [email protected]
Subject: [PATCH liburing 1/1] tests/rw: test iowq offload
Date: Wed, 26 Feb 2025 20:37:09 +0000 [thread overview]
Message-ID: <0ba2c9c8302b4d2318bd33580e6170e3bce90e86.1740602134.git.asml.silence@gmail.com> (raw)
We miss fixed read/write + IOSQE_ASYNC tests, so add it
Signed-off-by: Pavel Begunkov <[email protected]>
---
test/read-write.c | 35 +++++++++++++++++++++--------------
1 file changed, 21 insertions(+), 14 deletions(-)
diff --git a/test/read-write.c b/test/read-write.c
index 23f1d582..ba98c744 100644
--- a/test/read-write.c
+++ b/test/read-write.c
@@ -46,7 +46,7 @@ static int create_nonaligned_buffers(void)
static int _test_io(const char *file, struct io_uring *ring, int write,
int buffered, int sqthread, int fixed, int nonvec,
- int buf_select, int seq, int exp_len)
+ int buf_select, int seq, int exp_len, bool worker_offload)
{
struct io_uring_sqe *sqe;
struct io_uring_cqe *cqe;
@@ -144,6 +144,10 @@ static int _test_io(const char *file, struct io_uring *ring, int write,
sqe->user_data = i;
if (sqthread)
sqe->flags |= IOSQE_FIXED_FILE;
+
+ if (worker_offload)
+ sqe->flags |= IOSQE_ASYNC;
+
if (buf_select) {
if (nonvec)
sqe->addr = 0;
@@ -227,12 +231,12 @@ err:
static int __test_io(const char *file, struct io_uring *ring, int write,
int buffered, int sqthread, int fixed, int nonvec,
- int buf_select, int seq, int exp_len)
+ int buf_select, int seq, int exp_len, bool worker_offload)
{
int ret;
ret = _test_io(file, ring, write, buffered, sqthread, fixed, nonvec,
- buf_select, seq, exp_len);
+ buf_select, seq, exp_len, worker_offload);
if (ret)
return ret;
@@ -263,7 +267,7 @@ static int __test_io(const char *file, struct io_uring *ring, int write,
return ret;
}
ret = _test_io(file, &ring2, write, buffered, sqthread, 2,
- nonvec, buf_select, seq, exp_len);
+ nonvec, buf_select, seq, exp_len, worker_offload);
if (ret)
return ret;
@@ -284,7 +288,7 @@ static int __test_io(const char *file, struct io_uring *ring, int write,
}
static int test_io(const char *file, int write, int buffered, int sqthread,
- int fixed, int nonvec, int exp_len)
+ int fixed, int nonvec, int exp_len, bool worker_offload)
{
struct io_uring ring;
int ret, ring_flags = 0;
@@ -301,7 +305,7 @@ static int test_io(const char *file, int write, int buffered, int sqthread,
}
ret = __test_io(file, &ring, write, buffered, sqthread, fixed, nonvec,
- 0, 0, exp_len);
+ 0, 0, exp_len, worker_offload);
io_uring_queue_exit(&ring);
return ret;
}
@@ -481,7 +485,8 @@ static int test_buf_select_short(const char *filename, int nonvec)
io_uring_cqe_seen(&ring, cqe);
}
- ret = __test_io(filename, &ring, 0, 0, 0, 0, nonvec, 1, 1, exp_len);
+ ret = __test_io(filename, &ring, 0, 0, 0, 0, nonvec, 1, 1, exp_len,
+ false);
io_uring_queue_exit(&ring);
return ret;
@@ -620,7 +625,7 @@ static int test_buf_select(const char *filename, int nonvec)
for (i = 0; i < BUFFERS; i++)
memset(vecs[i].iov_base, i, vecs[i].iov_len);
- ret = __test_io(filename, &ring, 1, 0, 0, 0, 0, 0, 1, BS);
+ ret = __test_io(filename, &ring, 1, 0, 0, 0, 0, 0, 1, BS, false);
if (ret) {
fprintf(stderr, "failed writing data\n");
return 1;
@@ -633,7 +638,7 @@ static int test_buf_select(const char *filename, int nonvec)
if (ret)
return ret;
- ret = __test_io(filename, &ring, 0, 0, 0, 0, nonvec, 1, 1, BS);
+ ret = __test_io(filename, &ring, 0, 0, 0, 0, nonvec, 1, 1, BS, false);
io_uring_queue_exit(&ring);
return ret;
}
@@ -933,17 +938,18 @@ int main(int argc, char *argv[])
vecs = t_create_buffers(BUFFERS, BS);
/* if we don't have nonvec read, skip testing that */
- nr = has_nonvec_read() ? 32 : 16;
+ nr = has_nonvec_read() ? 64 : 32;
for (i = 0; i < nr; i++) {
int write = (i & 1) != 0;
int buffered = (i & 2) != 0;
int sqthread = (i & 4) != 0;
int fixed = (i & 8) != 0;
- int nonvec = (i & 16) != 0;
+ int offload = (i & 16) != 0;
+ int nonvec = (i & 32) != 0;
ret = test_io(fname, write, buffered, sqthread, fixed, nonvec,
- BS);
+ BS, offload);
if (ret) {
fprintf(stderr, "test_io failed %d/%d/%d/%d/%d\n",
write, buffered, sqthread, fixed, nonvec);
@@ -1047,14 +1053,15 @@ int main(int argc, char *argv[])
int buffered = (i & 2) != 0;
int sqthread = (i & 4) != 0;
int fixed = (i & 8) != 0;
- int nonvec = (i & 16) != 0;
+ int offload = (i & 16) != 0;
+ int nonvec = (i & 32) != 0;
/* direct IO requires alignment, skip it */
if (!buffered || !fixed || nonvec)
continue;
ret = test_io(fname, write, buffered, sqthread, fixed, nonvec,
- -1);
+ -1, offload);
if (ret) {
fprintf(stderr, "test_io failed %d/%d/%d/%d/%d\n",
write, buffered, sqthread, fixed, nonvec);
--
2.48.1
next reply other threads:[~2025-02-26 20:36 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-02-26 20:37 Pavel Begunkov [this message]
2025-02-26 23:40 ` [PATCH liburing 1/1] tests/rw: test iowq offload Jens Axboe
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=0ba2c9c8302b4d2318bd33580e6170e3bce90e86.1740602134.git.asml.silence@gmail.com \
[email protected] \
[email protected] \
[email protected] \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox