Linux Test Project
 help / color / mirror / Atom feed
* [LTP] [PATCH 0/2] Optimize io_uring related testcases
@ 2022-09-15  6:27 Zhao Gongyi via ltp
  2022-09-15  6:27 ` [LTP] [PATCH 1/2] syscalls/io_uring: Add .needs_kconfigs Zhao Gongyi via ltp
  2022-09-15  6:27 ` [LTP] [PATCH 2/2] io_uring.h: Remove io_uring_setup_supported_by_kernel() Zhao Gongyi via ltp
  0 siblings, 2 replies; 8+ messages in thread
From: Zhao Gongyi via ltp @ 2022-09-15  6:27 UTC (permalink / raw)
  To: ltp

1. Add .needs_kconfigs for io_uring01.c/io_uring02.c
2. Remove redundant io_uring_setup_supported_by_kernel()

Zhao Gongyi (2):
  syscalls/io_uring: Add .needs_kconfigs
  io_uring.h: Remove io_uring_setup_supported_by_kernel()

 include/lapi/io_uring.h                         | 13 -------------
 testcases/kernel/syscalls/io_uring/io_uring01.c |  5 ++++-
 testcases/kernel/syscalls/io_uring/io_uring02.c |  6 ++++--
 3 files changed, 8 insertions(+), 16 deletions(-)

--
2.17.1


-- 
Mailing list info: https://lists.linux.it/listinfo/ltp

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [LTP] [PATCH 1/2] syscalls/io_uring: Add .needs_kconfigs
  2022-09-15  6:27 [LTP] [PATCH 0/2] Optimize io_uring related testcases Zhao Gongyi via ltp
@ 2022-09-15  6:27 ` Zhao Gongyi via ltp
  2022-09-15  9:49   ` Cyril Hrubis
  2022-09-15  6:27 ` [LTP] [PATCH 2/2] io_uring.h: Remove io_uring_setup_supported_by_kernel() Zhao Gongyi via ltp
  1 sibling, 1 reply; 8+ messages in thread
From: Zhao Gongyi via ltp @ 2022-09-15  6:27 UTC (permalink / raw)
  To: ltp

Add .needs_kconfigs for io_uring01.c/io_uring02.c.

Signed-off-by: Zhao Gongyi <zhaogongyi@huawei.com>
---
 testcases/kernel/syscalls/io_uring/io_uring01.c | 4 ++++
 testcases/kernel/syscalls/io_uring/io_uring02.c | 4 ++++
 2 files changed, 8 insertions(+)

diff --git a/testcases/kernel/syscalls/io_uring/io_uring01.c b/testcases/kernel/syscalls/io_uring/io_uring01.c
index 70151bb85..cb1cabcb7 100644
--- a/testcases/kernel/syscalls/io_uring/io_uring01.c
+++ b/testcases/kernel/syscalls/io_uring/io_uring01.c
@@ -261,6 +261,10 @@ static struct tst_test test = {
 	.test = run,
 	.needs_tmpdir = 1,
 	.tcnt = ARRAY_SIZE(tcases),
+	.needs_kconfigs = (const char *const[]){
+		"CONFIG_IO_URING=y",
+		NULL
+	},
 	.bufs = (struct tst_buffers []) {
 		{&iov, .iov_sizes = (int[]){BLOCK_SZ, -1}},
 		{}
diff --git a/testcases/kernel/syscalls/io_uring/io_uring02.c b/testcases/kernel/syscalls/io_uring/io_uring02.c
index c5c770074..c7ea87ae5 100644
--- a/testcases/kernel/syscalls/io_uring/io_uring02.c
+++ b/testcases/kernel/syscalls/io_uring/io_uring02.c
@@ -255,6 +255,10 @@ static struct tst_test test = {
 		TST_CAP(TST_CAP_REQ, CAP_SYS_CHROOT),
 		{}
 	},
+	.needs_kconfigs = (const char *const[]){
+		"CONFIG_IO_URING=y",
+		NULL
+	},
 	.tags = (const struct tst_tag[]) {
 		{"linux-git", "9392a27d88b9"},
 		{"linux-git", "ff002b30181d"},
--
2.17.1


-- 
Mailing list info: https://lists.linux.it/listinfo/ltp

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [LTP] [PATCH 2/2] io_uring.h: Remove io_uring_setup_supported_by_kernel()
  2022-09-15  6:27 [LTP] [PATCH 0/2] Optimize io_uring related testcases Zhao Gongyi via ltp
  2022-09-15  6:27 ` [LTP] [PATCH 1/2] syscalls/io_uring: Add .needs_kconfigs Zhao Gongyi via ltp
@ 2022-09-15  6:27 ` Zhao Gongyi via ltp
  2022-09-15 10:01   ` Cyril Hrubis
  1 sibling, 1 reply; 8+ messages in thread
From: Zhao Gongyi via ltp @ 2022-09-15  6:27 UTC (permalink / raw)
  To: ltp

There is a kernel config CONFIG_IO_URING to control whether
io_uring is supported, so checking of the kernel version seems
redundant.

Signed-off-by: Zhao Gongyi <zhaogongyi@huawei.com>
---
 include/lapi/io_uring.h                         | 13 -------------
 testcases/kernel/syscalls/io_uring/io_uring01.c |  1 -
 testcases/kernel/syscalls/io_uring/io_uring02.c |  2 --
 3 files changed, 16 deletions(-)

diff --git a/include/lapi/io_uring.h b/include/lapi/io_uring.h
index 397324511..8f1dfd64c 100644
--- a/include/lapi/io_uring.h
+++ b/include/lapi/io_uring.h
@@ -294,17 +294,4 @@ static inline int io_uring_enter(int fd, unsigned int to_submit,
 }
 #endif /* HAVE_IO_URING_ENTER */

-static inline void io_uring_setup_supported_by_kernel(void)
-{
-	long ret;
-	if ((tst_kvercmp(5, 1, 0)) < 0) {
-		ret = syscall(__NR_io_uring_setup, NULL, 0);
-		if (ret != -1)
-			SAFE_CLOSE(ret);
-		else if (errno == ENOSYS)
-			tst_brk(TCONF,
-				"Test not supported on kernel version < v5.1");
-	}
-}
-
 #endif /* LAPI_IO_URING_H__ */
diff --git a/testcases/kernel/syscalls/io_uring/io_uring01.c b/testcases/kernel/syscalls/io_uring/io_uring01.c
index cb1cabcb7..41aa05da0 100644
--- a/testcases/kernel/syscalls/io_uring/io_uring01.c
+++ b/testcases/kernel/syscalls/io_uring/io_uring01.c
@@ -252,7 +252,6 @@ static void run(unsigned int n)

 static void setup(void)
 {
-	io_uring_setup_supported_by_kernel();
 	tst_fill_file(TEST_FILE, 'a', 1024, 1);
 }

diff --git a/testcases/kernel/syscalls/io_uring/io_uring02.c b/testcases/kernel/syscalls/io_uring/io_uring02.c
index c7ea87ae5..a04e759f8 100644
--- a/testcases/kernel/syscalls/io_uring/io_uring02.c
+++ b/testcases/kernel/syscalls/io_uring/io_uring02.c
@@ -75,8 +75,6 @@ static void setup(void)
 	if (ret >= (int)sizeof(addr.sun_path))
 		tst_brk(TBROK, "Tempdir path is too long");

-	io_uring_setup_supported_by_kernel();
-
 	sendsock = SAFE_SOCKET(AF_UNIX, SOCK_DGRAM, 0);
 	recvsock = SAFE_SOCKET(AF_UNIX, SOCK_DGRAM, 0);
 	SAFE_BIND(recvsock, (struct sockaddr *)&addr, sizeof(addr));
--
2.17.1


-- 
Mailing list info: https://lists.linux.it/listinfo/ltp

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [LTP] [PATCH 1/2] syscalls/io_uring: Add .needs_kconfigs
  2022-09-15  6:27 ` [LTP] [PATCH 1/2] syscalls/io_uring: Add .needs_kconfigs Zhao Gongyi via ltp
@ 2022-09-15  9:49   ` Cyril Hrubis
  0 siblings, 0 replies; 8+ messages in thread
From: Cyril Hrubis @ 2022-09-15  9:49 UTC (permalink / raw)
  To: Zhao Gongyi; +Cc: ltp

Hi!
> Add .needs_kconfigs for io_uring01.c/io_uring02.c.

We do call io_uring_supported_by_kernel() in the setup() of these tests
so this shouldn't be needed at all. What is the problem you are trying
to fix?

> Signed-off-by: Zhao Gongyi <zhaogongyi@huawei.com>
> ---
>  testcases/kernel/syscalls/io_uring/io_uring01.c | 4 ++++
>  testcases/kernel/syscalls/io_uring/io_uring02.c | 4 ++++
>  2 files changed, 8 insertions(+)
> 
> diff --git a/testcases/kernel/syscalls/io_uring/io_uring01.c b/testcases/kernel/syscalls/io_uring/io_uring01.c
> index 70151bb85..cb1cabcb7 100644
> --- a/testcases/kernel/syscalls/io_uring/io_uring01.c
> +++ b/testcases/kernel/syscalls/io_uring/io_uring01.c
> @@ -261,6 +261,10 @@ static struct tst_test test = {
>  	.test = run,
>  	.needs_tmpdir = 1,
>  	.tcnt = ARRAY_SIZE(tcases),
> +	.needs_kconfigs = (const char *const[]){
> +		"CONFIG_IO_URING=y",
> +		NULL
> +	},
>  	.bufs = (struct tst_buffers []) {
>  		{&iov, .iov_sizes = (int[]){BLOCK_SZ, -1}},
>  		{}
> diff --git a/testcases/kernel/syscalls/io_uring/io_uring02.c b/testcases/kernel/syscalls/io_uring/io_uring02.c
> index c5c770074..c7ea87ae5 100644
> --- a/testcases/kernel/syscalls/io_uring/io_uring02.c
> +++ b/testcases/kernel/syscalls/io_uring/io_uring02.c
> @@ -255,6 +255,10 @@ static struct tst_test test = {
>  		TST_CAP(TST_CAP_REQ, CAP_SYS_CHROOT),
>  		{}
>  	},
> +	.needs_kconfigs = (const char *const[]){
> +		"CONFIG_IO_URING=y",
> +		NULL
> +	},
>  	.tags = (const struct tst_tag[]) {
>  		{"linux-git", "9392a27d88b9"},
>  		{"linux-git", "ff002b30181d"},
> --
> 2.17.1
> 
> 
> -- 
> Mailing list info: https://lists.linux.it/listinfo/ltp

-- 
Cyril Hrubis
chrubis@suse.cz

-- 
Mailing list info: https://lists.linux.it/listinfo/ltp

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [LTP] [PATCH 1/2] syscalls/io_uring: Add .needs_kconfigs
@ 2022-09-15  9:53 zhaogongyi via ltp
  2022-09-15 10:02 ` Cyril Hrubis
  0 siblings, 1 reply; 8+ messages in thread
From: zhaogongyi via ltp @ 2022-09-15  9:53 UTC (permalink / raw)
  To: Cyril Hrubis; +Cc: ltp@lists.linux.it

Hi!

The test broken on my system that kernel version is 5.10, and report:

io_uring01.c:82: TFAIL: io_uring_setup() failed: EOPNOTSUPP (95)

Maybe we can add checking of kconfig to report TCONF at first.


> Hi!
> > Add .needs_kconfigs for io_uring01.c/io_uring02.c.
> 
> We do call io_uring_supported_by_kernel() in the setup() of these tests
> so this shouldn't be needed at all. What is the problem you are trying to
> fix?
> 
> > Signed-off-by: Zhao Gongyi <zhaogongyi@huawei.com>
> > ---
> >  testcases/kernel/syscalls/io_uring/io_uring01.c | 4 ++++
> > testcases/kernel/syscalls/io_uring/io_uring02.c | 4 ++++
> >  2 files changed, 8 insertions(+)
> >
> > diff --git a/testcases/kernel/syscalls/io_uring/io_uring01.c
> > b/testcases/kernel/syscalls/io_uring/io_uring01.c
> > index 70151bb85..cb1cabcb7 100644
> > --- a/testcases/kernel/syscalls/io_uring/io_uring01.c
> > +++ b/testcases/kernel/syscalls/io_uring/io_uring01.c
> > @@ -261,6 +261,10 @@ static struct tst_test test = {
> >  	.test = run,
> >  	.needs_tmpdir = 1,
> >  	.tcnt = ARRAY_SIZE(tcases),
> > +	.needs_kconfigs = (const char *const[]){
> > +		"CONFIG_IO_URING=y",
> > +		NULL
> > +	},
> >  	.bufs = (struct tst_buffers []) {
> >  		{&iov, .iov_sizes = (int[]){BLOCK_SZ, -1}},
> >  		{}
> > diff --git a/testcases/kernel/syscalls/io_uring/io_uring02.c
> > b/testcases/kernel/syscalls/io_uring/io_uring02.c
> > index c5c770074..c7ea87ae5 100644
> > --- a/testcases/kernel/syscalls/io_uring/io_uring02.c
> > +++ b/testcases/kernel/syscalls/io_uring/io_uring02.c
> > @@ -255,6 +255,10 @@ static struct tst_test test = {
> >  		TST_CAP(TST_CAP_REQ, CAP_SYS_CHROOT),
> >  		{}
> >  	},
> > +	.needs_kconfigs = (const char *const[]){
> > +		"CONFIG_IO_URING=y",
> > +		NULL
> > +	},
> >  	.tags = (const struct tst_tag[]) {
> >  		{"linux-git", "9392a27d88b9"},
> >  		{"linux-git", "ff002b30181d"},
> > --
> > 2.17.1
> >
> >
> > --
> > Mailing list info: https://lists.linux.it/listinfo/ltp
> 
> --
> Cyril Hrubis
> chrubis@suse.cz

-- 
Mailing list info: https://lists.linux.it/listinfo/ltp

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [LTP] [PATCH 2/2] io_uring.h: Remove io_uring_setup_supported_by_kernel()
  2022-09-15  6:27 ` [LTP] [PATCH 2/2] io_uring.h: Remove io_uring_setup_supported_by_kernel() Zhao Gongyi via ltp
@ 2022-09-15 10:01   ` Cyril Hrubis
  2022-09-15 10:03     ` Cyril Hrubis
  0 siblings, 1 reply; 8+ messages in thread
From: Cyril Hrubis @ 2022-09-15 10:01 UTC (permalink / raw)
  To: Zhao Gongyi; +Cc: ltp

Hi!
> -static inline void io_uring_setup_supported_by_kernel(void)
> -{
> -	long ret;
> -	if ((tst_kvercmp(5, 1, 0)) < 0) {
> -		ret = syscall(__NR_io_uring_setup, NULL, 0);
> -		if (ret != -1)
> -			SAFE_CLOSE(ret);
> -		else if (errno == ENOSYS)
> -			tst_brk(TCONF,
> -				"Test not supported on kernel version < v5.1");
> -	}
> -}

I guess I see the problem now, with the CONFIG_IO_URING not set this
will fail to detect that io_uring() is not supported. So the easiest
solution here would be:

diff --git a/include/lapi/io_uring.h b/include/lapi/io_uring.h
index 397324511..43d28f74a 100644
--- a/include/lapi/io_uring.h
+++ b/include/lapi/io_uring.h
@@ -297,14 +297,22 @@ static inline int io_uring_enter(int fd, unsigned int to_submit,
 static inline void io_uring_setup_supported_by_kernel(void)
 {
        long ret;
+
+       ret = syscall(__NR_io_uring_setup, NULL, 0);
+
+       if (ret != -1) {
+               SAFE_CLOSE(ret);
+               return;
+       }
+
        if ((tst_kvercmp(5, 1, 0)) < 0) {
-               ret = syscall(__NR_io_uring_setup, NULL, 0);
-               if (ret != -1)
-                       SAFE_CLOSE(ret);
-               else if (errno == ENOSYS)
+               if (errno == ENOSYS)
                        tst_brk(TCONF,
                                "Test not supported on kernel version < v5.1");
        }
+
+       if (errno == ENOSYS)
+               tst_brk(TCONF, "CONFIG_IO_URING not set?");
 }


-- 
Cyril Hrubis
chrubis@suse.cz

-- 
Mailing list info: https://lists.linux.it/listinfo/ltp

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [LTP] [PATCH 1/2] syscalls/io_uring: Add .needs_kconfigs
  2022-09-15  9:53 [LTP] [PATCH 1/2] syscalls/io_uring: Add .needs_kconfigs zhaogongyi via ltp
@ 2022-09-15 10:02 ` Cyril Hrubis
  0 siblings, 0 replies; 8+ messages in thread
From: Cyril Hrubis @ 2022-09-15 10:02 UTC (permalink / raw)
  To: zhaogongyi; +Cc: ltp@lists.linux.it

Hi!
> The test broken on my system that kernel version is 5.10, and report:
> 
> io_uring01.c:82: TFAIL: io_uring_setup() failed: EOPNOTSUPP (95)
> 
> Maybe we can add checking of kconfig to report TCONF at first.

I would avoid checking kconfig as long as we can just check return
values and errno, see my other reply.

-- 
Cyril Hrubis
chrubis@suse.cz

-- 
Mailing list info: https://lists.linux.it/listinfo/ltp

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [LTP] [PATCH 2/2] io_uring.h: Remove io_uring_setup_supported_by_kernel()
  2022-09-15 10:01   ` Cyril Hrubis
@ 2022-09-15 10:03     ` Cyril Hrubis
  0 siblings, 0 replies; 8+ messages in thread
From: Cyril Hrubis @ 2022-09-15 10:03 UTC (permalink / raw)
  To: Zhao Gongyi; +Cc: ltp

Hi!
> diff --git a/include/lapi/io_uring.h b/include/lapi/io_uring.h
> index 397324511..43d28f74a 100644
> --- a/include/lapi/io_uring.h
> +++ b/include/lapi/io_uring.h
> @@ -297,14 +297,22 @@ static inline int io_uring_enter(int fd, unsigned int to_submit,
>  static inline void io_uring_setup_supported_by_kernel(void)
>  {
>         long ret;
> +
> +       ret = syscall(__NR_io_uring_setup, NULL, 0);
> +
> +       if (ret != -1) {
> +               SAFE_CLOSE(ret);
> +               return;
> +       }
> +
>         if ((tst_kvercmp(5, 1, 0)) < 0) {
> -               ret = syscall(__NR_io_uring_setup, NULL, 0);
> -               if (ret != -1)
> -                       SAFE_CLOSE(ret);
> -               else if (errno == ENOSYS)
> +               if (errno == ENOSYS)
>                         tst_brk(TCONF,
>                                 "Test not supported on kernel version < v5.1");
>         }
> +
> +       if (errno == ENOSYS)

Based on your latest reply this should be EOPNOTSUPP.

> +               tst_brk(TCONF, "CONFIG_IO_URING not set?");
>  }
> 
> 
> -- 
> Cyril Hrubis
> chrubis@suse.cz
> 
> -- 
> Mailing list info: https://lists.linux.it/listinfo/ltp

-- 
Cyril Hrubis
chrubis@suse.cz

-- 
Mailing list info: https://lists.linux.it/listinfo/ltp

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2022-09-15 10:01 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-09-15  6:27 [LTP] [PATCH 0/2] Optimize io_uring related testcases Zhao Gongyi via ltp
2022-09-15  6:27 ` [LTP] [PATCH 1/2] syscalls/io_uring: Add .needs_kconfigs Zhao Gongyi via ltp
2022-09-15  9:49   ` Cyril Hrubis
2022-09-15  6:27 ` [LTP] [PATCH 2/2] io_uring.h: Remove io_uring_setup_supported_by_kernel() Zhao Gongyi via ltp
2022-09-15 10:01   ` Cyril Hrubis
2022-09-15 10:03     ` Cyril Hrubis
  -- strict thread matches above, loose matches on Subject: below --
2022-09-15  9:53 [LTP] [PATCH 1/2] syscalls/io_uring: Add .needs_kconfigs zhaogongyi via ltp
2022-09-15 10:02 ` Cyril Hrubis

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox