* [PATCH 0/3] src/feature: add IO_URING feature checking
@ 2020-09-16 12:23 Zorro Lang
2020-09-16 12:23 ` [PATCH 1/3] " Zorro Lang
` (3 more replies)
0 siblings, 4 replies; 5+ messages in thread
From: Zorro Lang @ 2020-09-16 12:23 UTC (permalink / raw)
To: fstests; +Cc: io-uring
This patchset bases on https://patchwork.kernel.org/cover/11769847/, which
makes xfstests fsstress and fsx supports IO_URING.
The io_uring IOs in fsstress will be run automatically when fsstress get
running. But fsx need a special option '-U' to run IO_URING read/write, so
add two new cases to xfstests to do fsx buffered and direct IO IO_URING
test.
[1/3] new helper to require io_uring feature
[2/3] fsx buffered IO io_uring test
[3/3] fsx direct IO io_uring test
And the [2/3] just found an io_uring regression bug (need LVM TEST_DEV):
https://bugzilla.kernel.org/show_bug.cgi?id=209243
Feel free to tell me, if you have more suggestions to test io_uring on
filesystem.
Thanks,
Zorro
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH 1/3] src/feature: add IO_URING feature checking
2020-09-16 12:23 [PATCH 0/3] src/feature: add IO_URING feature checking Zorro Lang
@ 2020-09-16 12:23 ` Zorro Lang
2020-09-16 12:23 ` [PATCH 2/3] generic: fsx IO_URING soak tests Zorro Lang
` (2 subsequent siblings)
3 siblings, 0 replies; 5+ messages in thread
From: Zorro Lang @ 2020-09-16 12:23 UTC (permalink / raw)
To: fstests; +Cc: io-uring
IO_URING is a new feature for GNU/Linux system, if someone case of
xfstests tests this feature, better to check if current system
supports it, or need _notrun.
Signed-off-by: Zorro Lang <zlang@redhat.com>
---
src/Makefile | 4 ++++
src/feature.c | 41 ++++++++++++++++++++++++++++++++++++++---
2 files changed, 42 insertions(+), 3 deletions(-)
diff --git a/src/Makefile b/src/Makefile
index 643c1916..f1422c5c 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -65,6 +65,10 @@ SUBDIRS += aio-dio-regress
LLDLIBS += -laio
endif
+ifeq ($(HAVE_URING), true)
+LLDLIBS += -luring
+endif
+
CFILES = $(TARGETS:=.c)
LDIRT = $(TARGETS) fssum
diff --git a/src/feature.c b/src/feature.c
index a7eb7595..df550cf6 100644
--- a/src/feature.c
+++ b/src/feature.c
@@ -19,6 +19,7 @@
*
* Test for machine features
* -A test whether AIO syscalls are available
+ * -R test whether IO_URING syscalls are available
* -o report a number of online cpus
* -s report pagesize
* -w report bits per long
@@ -39,6 +40,10 @@
#include <libaio.h>
#endif
+#ifdef HAVE_LIBURING_H
+#include <liburing.h>
+#endif
+
#ifndef USRQUOTA
#define USRQUOTA 0
#endif
@@ -59,7 +64,7 @@ usage(void)
fprintf(stderr, "Usage: feature [-v] -<q|u|g|p|U|G|P> <filesystem>\n");
fprintf(stderr, " feature [-v] -c <file>\n");
fprintf(stderr, " feature [-v] -t <file>\n");
- fprintf(stderr, " feature -A | -o | -s | -w\n");
+ fprintf(stderr, " feature -A | -R | -o | -s | -w\n");
exit(1);
}
@@ -215,6 +220,29 @@ check_aio_support(void)
#endif
}
+static int
+check_uring_support(void)
+{
+#ifdef HAVE_LIBURING_H
+ struct io_uring ring;
+ int err;
+
+ err = io_uring_queue_init(1, &ring, 0);
+ if (err == 0)
+ return 0;
+
+ if (err == -ENOSYS) /* CONFIG_IO_URING=n */
+ return 1;
+
+ fprintf(stderr, "unexpected error from io_uring_queue_init(): %s\n",
+ strerror(-err));
+ return 2;
+#else
+ /* liburing is unavailable, assume IO_URING is unsupported */
+ return 1;
+#endif
+}
+
int
main(int argc, char **argv)
@@ -228,6 +256,7 @@ main(int argc, char **argv)
int pflag = 0;
int Pflag = 0;
int qflag = 0;
+ int Rflag = 0;
int sflag = 0;
int uflag = 0;
int Uflag = 0;
@@ -235,7 +264,7 @@ main(int argc, char **argv)
int oflag = 0;
char *fs = NULL;
- while ((c = getopt(argc, argv, "ActgGopPqsuUvw")) != EOF) {
+ while ((c = getopt(argc, argv, "ActgGopPqRsuUvw")) != EOF) {
switch (c) {
case 'A':
Aflag++;
@@ -264,6 +293,9 @@ main(int argc, char **argv)
case 'q':
qflag++;
break;
+ case 'R':
+ Rflag++;
+ break;
case 's':
sflag++;
break;
@@ -289,7 +321,7 @@ main(int argc, char **argv)
if (optind != argc-1) /* need a device */
usage();
fs = argv[argc-1];
- } else if (Aflag || wflag || sflag || oflag) {
+ } else if (Aflag || Rflag || wflag || sflag || oflag) {
if (optind != argc)
usage();
} else
@@ -317,6 +349,9 @@ main(int argc, char **argv)
if (Aflag)
return(check_aio_support());
+ if (Rflag)
+ return(check_uring_support());
+
if (sflag) {
printf("%d\n", getpagesize());
exit(0);
--
2.20.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH 2/3] generic: fsx IO_URING soak tests
2020-09-16 12:23 [PATCH 0/3] src/feature: add IO_URING feature checking Zorro Lang
2020-09-16 12:23 ` [PATCH 1/3] " Zorro Lang
@ 2020-09-16 12:23 ` Zorro Lang
2020-09-16 12:23 ` [PATCH 3/3] generic: IO_URING direct IO fsx test Zorro Lang
2020-09-17 4:05 ` [PATCH 0/3] src/feature: add IO_URING feature checking Zorro Lang
3 siblings, 0 replies; 5+ messages in thread
From: Zorro Lang @ 2020-09-16 12:23 UTC (permalink / raw)
To: fstests; +Cc: io-uring
After fsx supports IO_URING read/write, add a test to do IO_URING
soak test of fsx.
Signed-off-by: Zorro Lang <zlang@redhat.com>
---
common/rc | 16 ++++++++++++
tests/generic/609 | 58 +++++++++++++++++++++++++++++++++++++++++++
tests/generic/609.out | 2 ++
tests/generic/group | 1 +
4 files changed, 77 insertions(+)
create mode 100755 tests/generic/609
create mode 100644 tests/generic/609.out
diff --git a/common/rc b/common/rc
index aa5a7409..b6b39eba 100644
--- a/common/rc
+++ b/common/rc
@@ -1984,6 +1984,22 @@ _require_aiodio()
_require_odirect
}
+# this test requires that the kernel supports IO_URING
+_require_io_uring()
+{
+ $here/src/feature -R
+ case $? in
+ 0)
+ ;;
+ 1)
+ _notrun "kernel does not support IO_URING"
+ ;;
+ *)
+ _fail "unexpected error testing for IO_URING support"
+ ;;
+ esac
+}
+
# this test requires that a test program exists under src/
# $1 - command (require)
#
diff --git a/tests/generic/609 b/tests/generic/609
new file mode 100755
index 00000000..1d9b6fed
--- /dev/null
+++ b/tests/generic/609
@@ -0,0 +1,58 @@
+#! /bin/bash
+# SPDX-License-Identifier: GPL-2.0
+# Copyright (c) 2020 Red Hat Inc. All Rights Reserved.
+#
+# FS QA Test 609
+#
+# IO_URING soak buffered fsx test
+#
+seq=`basename $0`
+seqres=$RESULT_DIR/$seq
+echo "QA output created by $seq"
+
+here=`pwd`
+tmp=/tmp/$$
+status=1 # failure is the default!
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+_cleanup()
+{
+ cd /
+ rm -f $tmp.*
+}
+
+# get standard environment, filters and checks
+. ./common/rc
+. ./common/filter
+
+# remove previous $seqres.full before test
+rm -f $seqres.full
+
+# real QA test starts here
+
+# Modify as appropriate.
+_supported_fs generic
+_supported_os Linux
+_require_test
+_require_io_uring
+
+# Run fsx for a million ops or more
+nr_ops=$((100000 * TIME_FACTOR))
+op_sz=$((128000 * LOAD_FACTOR))
+file_sz=$((600000 * LOAD_FACTOR))
+fsx_file=$TEST_DIR/fsx.$seq
+
+fsx_args=(-S 0)
+fsx_args+=(-U)
+fsx_args+=(-q)
+fsx_args+=(-N $nr_ops)
+fsx_args+=(-p $((nr_ops / 100)))
+fsx_args+=(-o $op_sz)
+fsx_args+=(-l $file_sz)
+
+run_fsx "${fsx_args[@]}" | sed -e '/^fsx.*/d'
+
+# success, all done
+echo "Silence is golden"
+status=0
+exit
diff --git a/tests/generic/609.out b/tests/generic/609.out
new file mode 100644
index 00000000..0d75b384
--- /dev/null
+++ b/tests/generic/609.out
@@ -0,0 +1,2 @@
+QA output created by 609
+Silence is golden
diff --git a/tests/generic/group b/tests/generic/group
index aa969bcb..cf50f4a1 100644
--- a/tests/generic/group
+++ b/tests/generic/group
@@ -611,3 +611,4 @@
606 auto attr quick dax
607 auto attr quick dax
608 auto attr quick dax
+609 auto rw io_uring
--
2.20.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH 3/3] generic: IO_URING direct IO fsx test
2020-09-16 12:23 [PATCH 0/3] src/feature: add IO_URING feature checking Zorro Lang
2020-09-16 12:23 ` [PATCH 1/3] " Zorro Lang
2020-09-16 12:23 ` [PATCH 2/3] generic: fsx IO_URING soak tests Zorro Lang
@ 2020-09-16 12:23 ` Zorro Lang
2020-09-17 4:05 ` [PATCH 0/3] src/feature: add IO_URING feature checking Zorro Lang
3 siblings, 0 replies; 5+ messages in thread
From: Zorro Lang @ 2020-09-16 12:23 UTC (permalink / raw)
To: fstests; +Cc: io-uring
After fsx supports IO_URING read/write, add IO_URING direct IO fsx
test with different read/write size and concurrent buffered IO.
Signed-off-by: Zorro Lang <zlang@redhat.com>
---
tests/generic/610 | 52 +++++++++++++++++++++++++++++++++++++++++++
tests/generic/610.out | 7 ++++++
tests/generic/group | 1 +
3 files changed, 60 insertions(+)
create mode 100755 tests/generic/610
create mode 100644 tests/generic/610.out
diff --git a/tests/generic/610 b/tests/generic/610
new file mode 100755
index 00000000..fc3f4c2a
--- /dev/null
+++ b/tests/generic/610
@@ -0,0 +1,52 @@
+#! /bin/bash
+# SPDX-License-Identifier: GPL-2.0
+# Copyright (c) 2020 YOUR NAME HERE. All Rights Reserved.
+#
+# FS QA Test 610
+#
+# IO_URING direct IO fsx test
+#
+seq=`basename $0`
+seqres=$RESULT_DIR/$seq
+echo "QA output created by $seq"
+
+here=`pwd`
+tmp=/tmp/$$
+status=1 # failure is the default!
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+_cleanup()
+{
+ cd /
+ rm -f $tmp.*
+}
+
+# get standard environment, filters and checks
+. ./common/rc
+. ./common/filter
+
+# remove previous $seqres.full before test
+rm -f $seqres.full
+
+# real QA test starts here
+_supported_fs generic
+_supported_os Linux
+_require_test
+_require_odirect
+_require_io_uring
+
+psize=`$here/src/feature -s`
+bsize=`_min_dio_alignment $TEST_DEV`
+run_fsx -S 0 -U -N 20000 -l 600000 -r PSIZE -w BSIZE -Z -R -W
+run_fsx -S 0 -U -N 20000 -o 8192 -l 600000 -r PSIZE -w BSIZE -Z -R -W
+run_fsx -S 0 -U -N 20000 -o 128000 -l 600000 -r PSIZE -w BSIZE -Z -R -W
+
+# change readbdy/writebdy to double page size
+psize=$((psize * 2))
+run_fsx -S 0 -U -N 20000 -l 600000 -r PSIZE -w PSIZE -Z -R -W
+run_fsx -S 0 -U -N 20000 -o 256000 -l 600000 -r PSIZE -w PSIZE -Z -R -W
+run_fsx -S 0 -U -N 20000 -o 128000 -l 600000 -r PSIZE -w BSIZE -Z -W
+
+# success, all done
+status=0
+exit
diff --git a/tests/generic/610.out b/tests/generic/610.out
new file mode 100644
index 00000000..97ad41a3
--- /dev/null
+++ b/tests/generic/610.out
@@ -0,0 +1,7 @@
+QA output created by 610
+fsx -S 0 -U -N 20000 -l 600000 -r PSIZE -w BSIZE -Z -R -W
+fsx -S 0 -U -N 20000 -o 8192 -l 600000 -r PSIZE -w BSIZE -Z -R -W
+fsx -S 0 -U -N 20000 -o 128000 -l 600000 -r PSIZE -w BSIZE -Z -R -W
+fsx -S 0 -U -N 20000 -l 600000 -r PSIZE -w PSIZE -Z -R -W
+fsx -S 0 -U -N 20000 -o 256000 -l 600000 -r PSIZE -w PSIZE -Z -R -W
+fsx -S 0 -U -N 20000 -o 128000 -l 600000 -r PSIZE -w BSIZE -Z -W
diff --git a/tests/generic/group b/tests/generic/group
index cf50f4a1..60280dc2 100644
--- a/tests/generic/group
+++ b/tests/generic/group
@@ -612,3 +612,4 @@
607 auto attr quick dax
608 auto attr quick dax
609 auto rw io_uring
+610 auto rw io_uring
--
2.20.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH 0/3] src/feature: add IO_URING feature checking
2020-09-16 12:23 [PATCH 0/3] src/feature: add IO_URING feature checking Zorro Lang
` (2 preceding siblings ...)
2020-09-16 12:23 ` [PATCH 3/3] generic: IO_URING direct IO fsx test Zorro Lang
@ 2020-09-17 4:05 ` Zorro Lang
3 siblings, 0 replies; 5+ messages in thread
From: Zorro Lang @ 2020-09-17 4:05 UTC (permalink / raw)
To: fstests; +Cc: io-uring
On Wed, Sep 16, 2020 at 08:23:24PM +0800, Zorro Lang wrote:
> This patchset bases on https://patchwork.kernel.org/cover/11769847/, which
> makes xfstests fsstress and fsx supports IO_URING.
>
> The io_uring IOs in fsstress will be run automatically when fsstress get
> running. But fsx need a special option '-U' to run IO_URING read/write, so
> add two new cases to xfstests to do fsx buffered and direct IO IO_URING
> test.
>
> [1/3] new helper to require io_uring feature
> [2/3] fsx buffered IO io_uring test
> [3/3] fsx direct IO io_uring test
>
> And the [2/3] just found an io_uring regression bug (need LVM TEST_DEV):
> https://bugzilla.kernel.org/show_bug.cgi?id=209243
>
> Feel free to tell me, if you have more suggestions to test io_uring on
> filesystem.
>
> Thanks,
> Zorro
Err... Sorry about 3 duplicate patchset. I tried to sent this patchset 3 times
yesterday, but all failed, and I got feedback from server:
"The message you sent to fstests@vger.kernel.org hasn't been delivered yet due to: Communications error."
I thought these emails have been abandoned, never know they're delayed. Please
only review the last patchset of these duplicate things.
Thanks,
Zorro
>
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2020-09-17 3:58 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-09-16 12:23 [PATCH 0/3] src/feature: add IO_URING feature checking Zorro Lang
2020-09-16 12:23 ` [PATCH 1/3] " Zorro Lang
2020-09-16 12:23 ` [PATCH 2/3] generic: fsx IO_URING soak tests Zorro Lang
2020-09-16 12:23 ` [PATCH 3/3] generic: IO_URING direct IO fsx test Zorro Lang
2020-09-17 4:05 ` [PATCH 0/3] src/feature: add IO_URING feature checking Zorro Lang
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.