public inbox for [email protected]
 help / color / mirror / Atom feed
* [PATCH v1 0/2] io_uring uapi updates
@ 2022-11-15 21:29 Ammar Faizi
  2022-11-15 21:29 ` [PATCH v1 1/2] io_uring: uapi: Don't force linux/time_types.h for userspace Ammar Faizi
                   ` (2 more replies)
  0 siblings, 3 replies; 15+ messages in thread
From: Ammar Faizi @ 2022-11-15 21:29 UTC (permalink / raw)
  To: Jens Axboe
  Cc: Pavel Begunkov, Stefan Metzmacher, Linux Kernel Mailing List,
	io-uring Mailing List, GNU/Weeb Mailing List, Ammar Faizi

From: Ammar Faizi <[email protected]>

Hi Jens,

io_uring uapi updates:

1) Don't force linux/time_types.h for userspace. Linux's io_uring.h is
   synced 1:1 into liburing's io_uring.h. liburing has a configure
   check to detect the need for linux/time_types.h (Stefan).

2) Do not use a zero-size array because it doesn't allow the user to
   compile an app that uses liburing with the `-pedantic-errors` flag:

       io_uring.h:611:28: error: zero size arrays are an extension [-Werror,-Wzero-length-array]

   Replace the array size from 0 to 1 (me).

Signed-off-by: Ammar Faizi <[email protected]>
---

Ammar Faizi (1):
  io_uring: uapi: Don't use a zero-size array

Stefan Metzmacher (1):
  io_uring: uapi: Don't force linux/time_types.h for userspace

 include/uapi/linux/io_uring.h | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)


base-commit: 5576035f15dfcc6cb1cec236db40c2c0733b0ba4
-- 
Ammar Faizi


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

* [PATCH v1 1/2] io_uring: uapi: Don't force linux/time_types.h for userspace
  2022-11-15 21:29 [PATCH v1 0/2] io_uring uapi updates Ammar Faizi
@ 2022-11-15 21:29 ` Ammar Faizi
  2022-11-15 21:29 ` [PATCH v1 2/2] io_uring: uapi: Don't use a zero-size array Ammar Faizi
  2022-11-15 23:14 ` (subset) [PATCH v1 0/2] io_uring uapi updates Jens Axboe
  2 siblings, 0 replies; 15+ messages in thread
From: Ammar Faizi @ 2022-11-15 21:29 UTC (permalink / raw)
  To: Jens Axboe
  Cc: Pavel Begunkov, Stefan Metzmacher, Linux Kernel Mailing List,
	io-uring Mailing List, GNU/Weeb Mailing List, Ammar Faizi

From: Stefan Metzmacher <[email protected]>

include/uapi/linux/io_uring.h is synced 1:1 into
liburing:src/include/liburing/io_uring.h.

liburing has a configure check to detect the need for
linux/time_types.h.

Fixes: 78a861b9495920f8609dee5b670dacbff09d359f ("io_uring: add sync cancelation API through io_uring_register()")
Link: https://github.com/axboe/liburing/issues/708
Link: https://github.com/axboe/liburing/pull/709
Signed-off-by: Stefan Metzmacher <[email protected]>
Signed-off-by: Ammar Faizi <[email protected]>
---
 include/uapi/linux/io_uring.h | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/include/uapi/linux/io_uring.h b/include/uapi/linux/io_uring.h
index 2df3225b562f..77027cbaf786 100644
--- a/include/uapi/linux/io_uring.h
+++ b/include/uapi/linux/io_uring.h
@@ -1,25 +1,34 @@
 /* SPDX-License-Identifier: (GPL-2.0 WITH Linux-syscall-note) OR MIT */
 /*
  * Header file for the io_uring interface.
  *
  * Copyright (C) 2019 Jens Axboe
  * Copyright (C) 2019 Christoph Hellwig
  */
 #ifndef LINUX_IO_URING_H
 #define LINUX_IO_URING_H
 
 #include <linux/fs.h>
 #include <linux/types.h>
+/*
+ * This file is shared with liburing and it has to autodetect
+ * if linux/time_types.h is available
+ */
+#ifdef __KERNEL__
+#define HAVE_LINUX_TIME_TYPES_H 1
+#endif
+#ifdef HAVE_LINUX_TIME_TYPES_H
 #include <linux/time_types.h>
+#endif
 
 #ifdef __cplusplus
 extern "C" {
 #endif
 
 /*
  * IO submission data structure (Submission Queue Entry)
  */
 struct io_uring_sqe {
 	__u8	opcode;		/* type of operation for this sqe */
 	__u8	flags;		/* IOSQE_ flags */
 	__u16	ioprio;		/* ioprio for the request */
-- 
Ammar Faizi


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

* [PATCH v1 2/2] io_uring: uapi: Don't use a zero-size array
  2022-11-15 21:29 [PATCH v1 0/2] io_uring uapi updates Ammar Faizi
  2022-11-15 21:29 ` [PATCH v1 1/2] io_uring: uapi: Don't force linux/time_types.h for userspace Ammar Faizi
@ 2022-11-15 21:29 ` Ammar Faizi
  2022-11-15 23:09   ` Jens Axboe
  2022-11-16 10:14   ` Pavel Begunkov
  2022-11-15 23:14 ` (subset) [PATCH v1 0/2] io_uring uapi updates Jens Axboe
  2 siblings, 2 replies; 15+ messages in thread
From: Ammar Faizi @ 2022-11-15 21:29 UTC (permalink / raw)
  To: Jens Axboe
  Cc: Pavel Begunkov, Stefan Metzmacher, Linux Kernel Mailing List,
	io-uring Mailing List, GNU/Weeb Mailing List, Ammar Faizi

From: Ammar Faizi <[email protected]>

Don't use a zero-size array because it doesn't allow the user to
compile an app that uses liburing with the `-pedantic-errors` flag:

  io_uring.h:611:28: error: zero size arrays are an extension [-Werror,-Wzero-length-array]

Replace the array size from 0 to 1.

  - No functional change is intended.
  - No struct/union size change.

Signed-off-by: Ammar Faizi <[email protected]>
---
 include/uapi/linux/io_uring.h | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/include/uapi/linux/io_uring.h b/include/uapi/linux/io_uring.h
index 77027cbaf786..0890784fcc9e 100644
--- a/include/uapi/linux/io_uring.h
+++ b/include/uapi/linux/io_uring.h
@@ -85,25 +85,25 @@ struct io_uring_sqe {
 			__u16	__pad3[1];
 		};
 	};
 	union {
 		struct {
 			__u64	addr3;
 			__u64	__pad2[1];
 		};
 		/*
 		 * If the ring is initialized with IORING_SETUP_SQE128, then
 		 * this field is used for 80 bytes of arbitrary command data
 		 */
-		__u8	cmd[0];
+		__u8	cmd[1];
 	};
 };
 
 /*
  * If sqe->file_index is set to this for opcodes that instantiate a new
  * direct descriptor (like openat/openat2/accept), then io_uring will allocate
  * an available direct descriptor instead of having the application pass one
  * in. The picked direct descriptor will be returned in cqe->res, or -ENFILE
  * if the space is full.
  */
 #define IORING_FILE_INDEX_ALLOC		(~0U)
 
@@ -599,25 +599,25 @@ struct io_uring_buf {
 struct io_uring_buf_ring {
 	union {
 		/*
 		 * To avoid spilling into more pages than we need to, the
 		 * ring tail is overlaid with the io_uring_buf->resv field.
 		 */
 		struct {
 			__u64	resv1;
 			__u32	resv2;
 			__u16	resv3;
 			__u16	tail;
 		};
-		struct io_uring_buf	bufs[0];
+		struct io_uring_buf	bufs[1];
 	};
 };
 
 /* argument for IORING_(UN)REGISTER_PBUF_RING */
 struct io_uring_buf_reg {
 	__u64	ring_addr;
 	__u32	ring_entries;
 	__u16	bgid;
 	__u16	pad;
 	__u64	resv[3];
 };
 
-- 
Ammar Faizi


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

* Re: [PATCH v1 2/2] io_uring: uapi: Don't use a zero-size array
  2022-11-15 21:29 ` [PATCH v1 2/2] io_uring: uapi: Don't use a zero-size array Ammar Faizi
@ 2022-11-15 23:09   ` Jens Axboe
  2022-11-16 10:14   ` Pavel Begunkov
  1 sibling, 0 replies; 15+ messages in thread
From: Jens Axboe @ 2022-11-15 23:09 UTC (permalink / raw)
  To: Ammar Faizi
  Cc: Pavel Begunkov, Stefan Metzmacher, Linux Kernel Mailing List,
	io-uring Mailing List, GNU/Weeb Mailing List

On 11/15/22 2:29 PM, Ammar Faizi wrote:
> From: Ammar Faizi <[email protected]>
> 
> Don't use a zero-size array because it doesn't allow the user to
> compile an app that uses liburing with the `-pedantic-errors` flag:
> 
>   io_uring.h:611:28: error: zero size arrays are an extension [-Werror,-Wzero-length-array]
> 
> Replace the array size from 0 to 1.
> 
>   - No functional change is intended.
>   - No struct/union size change.

The only reason why they don't grow the struct, is because it's in
a union. I don't like this patch, as the zero sized array is a clear
sign that this struct has data past it. If it's a single entry, that's
very different.

Yes that apparently makes pendantic errors unhappy, but I care more
about the readability of it.

-- 
Jens Axboe



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

* Re: (subset) [PATCH v1 0/2] io_uring uapi updates
  2022-11-15 21:29 [PATCH v1 0/2] io_uring uapi updates Ammar Faizi
  2022-11-15 21:29 ` [PATCH v1 1/2] io_uring: uapi: Don't force linux/time_types.h for userspace Ammar Faizi
  2022-11-15 21:29 ` [PATCH v1 2/2] io_uring: uapi: Don't use a zero-size array Ammar Faizi
@ 2022-11-15 23:14 ` Jens Axboe
  2022-11-16  6:34   ` Ammar Faizi
  2 siblings, 1 reply; 15+ messages in thread
From: Jens Axboe @ 2022-11-15 23:14 UTC (permalink / raw)
  To: Ammar Faizi
  Cc: GNU/Weeb Mailing List, io-uring Mailing List, Pavel Begunkov,
	Stefan Metzmacher, Linux Kernel Mailing List

On Wed, 16 Nov 2022 04:29:51 +0700, Ammar Faizi wrote:
> From: Ammar Faizi <[email protected]>
> 
> Hi Jens,
> 
> io_uring uapi updates:
> 
> 1) Don't force linux/time_types.h for userspace. Linux's io_uring.h is
>    synced 1:1 into liburing's io_uring.h. liburing has a configure
>    check to detect the need for linux/time_types.h (Stefan).
> 
> [...]

Applied, thanks!

[1/2] io_uring: uapi: Don't force linux/time_types.h for userspace
      commit: 958bfdd734b6074ba88ee3abc69d0053e26b7b9c

Best regards,
-- 
Jens Axboe



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

* Re: (subset) [PATCH v1 0/2] io_uring uapi updates
  2022-11-15 23:14 ` (subset) [PATCH v1 0/2] io_uring uapi updates Jens Axboe
@ 2022-11-16  6:34   ` Ammar Faizi
  2022-11-16  6:49     ` Ammar Faizi
  2022-11-16 13:50     ` Jens Axboe
  0 siblings, 2 replies; 15+ messages in thread
From: Ammar Faizi @ 2022-11-16  6:34 UTC (permalink / raw)
  To: Jens Axboe
  Cc: GNU/Weeb Mailing List, io-uring Mailing List, Pavel Begunkov,
	Stefan Metzmacher, Linux Kernel Mailing List

On 11/16/22 6:14 AM, Jens Axboe wrote:
> On Wed, 16 Nov 2022 04:29:51 +0700, Ammar Faizi wrote:
>> From: Ammar Faizi <[email protected]>
>>
>> Hi Jens,
>>
>> io_uring uapi updates:
>>
>> 1) Don't force linux/time_types.h for userspace. Linux's io_uring.h is
>>     synced 1:1 into liburing's io_uring.h. liburing has a configure
>>     check to detect the need for linux/time_types.h (Stefan).
>>
>> [...]
> 
> Applied, thanks!
> 
> [1/2] io_uring: uapi: Don't force linux/time_types.h for userspace
>        commit: 958bfdd734b6074ba88ee3abc69d0053e26b7b9c

Jens, please drop this commit. It breaks the build:

All errors (new ones prefixed by >>):

    In file included from <command-line>:
>> ./usr/include/linux/io_uring.h:654:41: error: field 'timeout' has incomplete type
      654 |         struct __kernel_timespec        timeout;
          |                                         ^~~~~~~

-- 
Ammar Faizi


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

* Re: (subset) [PATCH v1 0/2] io_uring uapi updates
  2022-11-16  6:34   ` Ammar Faizi
@ 2022-11-16  6:49     ` Ammar Faizi
  2022-11-16 13:50     ` Jens Axboe
  1 sibling, 0 replies; 15+ messages in thread
From: Ammar Faizi @ 2022-11-16  6:49 UTC (permalink / raw)
  To: Jens Axboe
  Cc: GNU/Weeb Mailing List, io-uring Mailing List, Pavel Begunkov,
	Stefan Metzmacher, Linux Kernel Mailing List

On 11/16/22 1:34 PM, Ammar Faizi wrote:
> On 11/16/22 6:14 AM, Jens Axboe wrote:
>> On Wed, 16 Nov 2022 04:29:51 +0700, Ammar Faizi wrote:
>>> From: Ammar Faizi <[email protected]>
>>>
>>> Hi Jens,
>>>
>>> io_uring uapi updates:
>>>
>>> 1) Don't force linux/time_types.h for userspace. Linux's io_uring.h is
>>>     synced 1:1 into liburing's io_uring.h. liburing has a configure
>>>     check to detect the need for linux/time_types.h (Stefan).
>>>
>>> [...]
>>
>> Applied, thanks!
>>
>> [1/2] io_uring: uapi: Don't force linux/time_types.h for userspace
>>        commit: 958bfdd734b6074ba88ee3abc69d0053e26b7b9c
> 
> Jens, please drop this commit. It breaks the build:
> 
> All errors (new ones prefixed by >>):
> 
>     In file included from <command-line>:
>>> ./usr/include/linux/io_uring.h:654:41: error: field 'timeout' has incomplete type
>       654 |         struct __kernel_timespec        timeout;
>           |                                         ^~~~~~~

https://lore.kernel.org/r/[email protected]

-- 
Ammar Faizi


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

* Re: [PATCH v1 2/2] io_uring: uapi: Don't use a zero-size array
  2022-11-15 21:29 ` [PATCH v1 2/2] io_uring: uapi: Don't use a zero-size array Ammar Faizi
  2022-11-15 23:09   ` Jens Axboe
@ 2022-11-16 10:14   ` Pavel Begunkov
  2022-11-16 10:28     ` Ammar Faizi
  1 sibling, 1 reply; 15+ messages in thread
From: Pavel Begunkov @ 2022-11-16 10:14 UTC (permalink / raw)
  To: Ammar Faizi, Jens Axboe
  Cc: Stefan Metzmacher, Linux Kernel Mailing List,
	io-uring Mailing List, GNU/Weeb Mailing List

On 11/15/22 21:29, Ammar Faizi wrote:
> From: Ammar Faizi <[email protected]>
> 
> Don't use a zero-size array because it doesn't allow the user to
> compile an app that uses liburing with the `-pedantic-errors` flag:

Ammar, I'd strongly encourage you to at least compile your
patches or even better actually test them. There is an explicit
BUILD_BUG_ON() violated by this change.

-- 
Pavel Begunkov

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

* Re: [PATCH v1 2/2] io_uring: uapi: Don't use a zero-size array
  2022-11-16 10:14   ` Pavel Begunkov
@ 2022-11-16 10:28     ` Ammar Faizi
  0 siblings, 0 replies; 15+ messages in thread
From: Ammar Faizi @ 2022-11-16 10:28 UTC (permalink / raw)
  To: Pavel Begunkov, Jens Axboe
  Cc: Stefan Metzmacher, Linux Kernel Mailing List,
	io-uring Mailing List, GNU/Weeb Mailing List

On 11/16/22 5:14 PM, Pavel Begunkov wrote:
> On 11/15/22 21:29, Ammar Faizi wrote:
>> From: Ammar Faizi <[email protected]>
>>
>> Don't use a zero-size array because it doesn't allow the user to
>> compile an app that uses liburing with the `-pedantic-errors` flag:
> 
> Ammar, I'd strongly encourage you to at least compile your
> patches or even better actually test them. There is an explicit
> BUILD_BUG_ON() violated by this change.

Oh yeah, I didn't realize that. This patch breaks this assertion:

   BUILD_BUG_ON failed: sizeof_field(struct io_uring_sqe, cmd) != 0

This assertion wants the size of cmd[] to be zero. Which is obviously
violated in this patch.

I only tested a liburing app that uses this header and validated
that the struct size is the same, but not its field. That's my
mistake.

I'm *not* going to send a v2 per Jens' comment.

-- 
Ammar Faizi


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

* Re: (subset) [PATCH v1 0/2] io_uring uapi updates
  2022-11-16  6:34   ` Ammar Faizi
  2022-11-16  6:49     ` Ammar Faizi
@ 2022-11-16 13:50     ` Jens Axboe
  2022-11-16 14:22       ` Stefan Metzmacher
  1 sibling, 1 reply; 15+ messages in thread
From: Jens Axboe @ 2022-11-16 13:50 UTC (permalink / raw)
  To: Ammar Faizi
  Cc: GNU/Weeb Mailing List, io-uring Mailing List, Pavel Begunkov,
	Stefan Metzmacher, Linux Kernel Mailing List

On 11/15/22 11:34 PM, Ammar Faizi wrote:
> On 11/16/22 6:14 AM, Jens Axboe wrote:
>> On Wed, 16 Nov 2022 04:29:51 +0700, Ammar Faizi wrote:
>>> From: Ammar Faizi <[email protected]>
>>>
>>> Hi Jens,
>>>
>>> io_uring uapi updates:
>>>
>>> 1) Don't force linux/time_types.h for userspace. Linux's io_uring.h is
>>>     synced 1:1 into liburing's io_uring.h. liburing has a configure
>>>     check to detect the need for linux/time_types.h (Stefan).
>>>
>>> [...]
>>
>> Applied, thanks!
>>
>> [1/2] io_uring: uapi: Don't force linux/time_types.h for userspace
>>        commit: 958bfdd734b6074ba88ee3abc69d0053e26b7b9c
> 
> Jens, please drop this commit. It breaks the build:

Dropped - please actually build your patches, or make it clear that
they were not built at all. None of these 2 patches were any good.

-- 
Jens Axboe



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

* Re: (subset) [PATCH v1 0/2] io_uring uapi updates
  2022-11-16 13:50     ` Jens Axboe
@ 2022-11-16 14:22       ` Stefan Metzmacher
  2022-11-16 19:46         ` Jens Axboe
  0 siblings, 1 reply; 15+ messages in thread
From: Stefan Metzmacher @ 2022-11-16 14:22 UTC (permalink / raw)
  To: Jens Axboe, Ammar Faizi
  Cc: GNU/Weeb Mailing List, io-uring Mailing List, Pavel Begunkov,
	Linux Kernel Mailing List

Am 16.11.22 um 14:50 schrieb Jens Axboe:
> On 11/15/22 11:34 PM, Ammar Faizi wrote:
>> On 11/16/22 6:14 AM, Jens Axboe wrote:
>>> On Wed, 16 Nov 2022 04:29:51 +0700, Ammar Faizi wrote:
>>>> From: Ammar Faizi <[email protected]>
>>>>
>>>> Hi Jens,
>>>>
>>>> io_uring uapi updates:
>>>>
>>>> 1) Don't force linux/time_types.h for userspace. Linux's io_uring.h is
>>>>      synced 1:1 into liburing's io_uring.h. liburing has a configure
>>>>      check to detect the need for linux/time_types.h (Stefan).
>>>>
>>>> [...]
>>>
>>> Applied, thanks!
>>>
>>> [1/2] io_uring: uapi: Don't force linux/time_types.h for userspace
>>>         commit: 958bfdd734b6074ba88ee3abc69d0053e26b7b9c
>>
>> Jens, please drop this commit. It breaks the build:
> 
> Dropped - please actually build your patches, or make it clear that
> they were not built at all. None of these 2 patches were any good.

Is it tools/testing/selftests/net/io_uring_zerocopy_tx.c that doesn't build?
and needs a '#define HAVE_LINUX_TIME_TYPES_H 1'

BTW, the original commit I posted was here:
https://lore.kernel.org/io-uring/c7782923deeb4016f2ac2334bc558921e8d91a67.1666605446.git.metze@samba.org/

What's the magic to compile tools/testing/selftests/net/io_uring_zerocopy_tx.c ?

My naive tries both fail (even without my patch):
All other files including any io_uring.h build and the patch was also included
in a branch where I build a complete working kernel with 'make -j33 bindeb-pkg'

metze@SERNOX19:~/devel/kernel/linux-4.4$ LANG=C make $(find io_uring/*.c fs/file_table.c fs/exec.c kernel/exit.c kernel/fork.c net/socket.c  net/unix/scm.c 
security/selinux/hooks.c security/smack/smack_lsm.c tools/testing/selftests/net/io_uring_zerocopy_tx.c | sed -e 's!\.c$!.o!') EXTRA_CFLAGS="-Wfatal-errors"
   UPD     include/config/kernel.release
   UPD     include/generated/utsrelease.h
   CALL    scripts/checksyscalls.sh
   DESCEND objtool
   DESCEND bpf/resolve_btfids
   CC      fs/file_table.o
   CC      fs/exec.o
   CC      io_uring/advise.o
   CC      io_uring/cancel.o
   CC      io_uring/epoll.o
   CC      io_uring/fdinfo.o
   CC      io_uring/filetable.o
   CC      io_uring/fs.o
   CC      io_uring/io_uring.o
   CC      io_uring/io-wq.o
   CC      io_uring/kbuf.o
   CC      io_uring/msg_ring.o
   CC      io_uring/net.o
   CC      io_uring/nop.o
   CC      io_uring/notif.o
   CC      io_uring/opdef.o
   CC      io_uring/openclose.o
   CC      io_uring/poll.o
   CC      io_uring/rsrc.o
   CC      io_uring/rw.o
   CC      io_uring/splice.o
   CC      io_uring/sqpoll.o
   CC      io_uring/statx.o
   CC      io_uring/sync.o
   CC      io_uring/tctx.o
   CC      io_uring/timeout.o
   CC      io_uring/uring_cmd.o
   CC      io_uring/xattr.o
   CC      kernel/exit.o
   CC      kernel/fork.o
   CC      net/socket.o
   CC      net/unix/scm.o
   CC      security/selinux/hooks.o
   CC      security/smack/smack_lsm.o
   CC      tools/testing/selftests/net/io_uring_zerocopy_tx.o
tools/testing/selftests/net/io_uring_zerocopy_tx.c:3:10: fatal error: assert.h: No such file or directory
     3 | #include <assert.h>
       |          ^~~~~~~~~~
compilation terminated.
make[1]: *** [scripts/Makefile.build:258: tools/testing/selftests/net/io_uring_zerocopy_tx.o] Error 1
make: *** [Makefile:1997: .] Error 2


metze@SERNOX19:~/devel/kernel/linux-4.4/tools/testing/selftests/net$ make io_uring_zerocopy_tx.o
gcc -Wall -Wl,--no-as-needed -O2 -g -I../../../../usr/include/ -isystem /home/metze/devel/kernel/linux-4.4/tools/testing/selftests/../../../usr/include   -c -o 
io_uring_zerocopy_tx.o io_uring_zerocopy_tx.c
io_uring_zerocopy_tx.c: In function ‘io_uring_prep_sendzc’:
io_uring_zerocopy_tx.c:287:30: error: ‘IORING_OP_SEND_ZC’ undeclared (first use in this function); did you mean ‘IORING_OP_SEND’?
   287 |         sqe->opcode = (__u8) IORING_OP_SEND_ZC;
       |                              ^~~~~~~~~~~~~~~~~
       |                              IORING_OP_SEND
io_uring_zerocopy_tx.c:287:30: note: each undeclared identifier is reported only once for each function it appears in
io_uring_zerocopy_tx.c: In function ‘do_tx’:
io_uring_zerocopy_tx.c:407:56: error: ‘IORING_RECVSEND_FIXED_BUF’ undeclared (first use in this function)
   407 |                                         sqe->ioprio |= IORING_RECVSEND_FIXED_BUF;
       |                                                        ^~~~~~~~~~~~~~~~~~~~~~~~~
io_uring_zerocopy_tx.c:429:42: error: ‘IORING_CQE_F_NOTIF’ undeclared (first use in this function); did you mean ‘IORING_CQE_F_MORE’?
   429 |                         if (cqe->flags & IORING_CQE_F_NOTIF) {
       |                                          ^~~~~~~~~~~~~~~~~~
       |                                          IORING_CQE_F_MORE
make: *** [<eingebaut>: io_uring_zerocopy_tx.o] Fehler 1




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

* Re: (subset) [PATCH v1 0/2] io_uring uapi updates
  2022-11-16 14:22       ` Stefan Metzmacher
@ 2022-11-16 19:46         ` Jens Axboe
  2022-11-16 20:03           ` Stefan Metzmacher
  2022-11-16 20:18           ` Stefan Metzmacher
  0 siblings, 2 replies; 15+ messages in thread
From: Jens Axboe @ 2022-11-16 19:46 UTC (permalink / raw)
  To: Stefan Metzmacher, Ammar Faizi
  Cc: GNU/Weeb Mailing List, io-uring Mailing List, Pavel Begunkov,
	Linux Kernel Mailing List, Stephen Rothwell

On 11/16/22 7:22 AM, Stefan Metzmacher wrote:
> Am 16.11.22 um 14:50 schrieb Jens Axboe:
>> On 11/15/22 11:34 PM, Ammar Faizi wrote:
>>> On 11/16/22 6:14 AM, Jens Axboe wrote:
>>>> On Wed, 16 Nov 2022 04:29:51 +0700, Ammar Faizi wrote:
>>>>> From: Ammar Faizi <[email protected]>
>>>>>
>>>>> Hi Jens,
>>>>>
>>>>> io_uring uapi updates:
>>>>>
>>>>> 1) Don't force linux/time_types.h for userspace. Linux's io_uring.h is
>>>>> ???? synced 1:1 into liburing's io_uring.h. liburing has a configure
>>>>> ???? check to detect the need for linux/time_types.h (Stefan).
>>>>>
>>>>> [...]
>>>>
>>>> Applied, thanks!
>>>>
>>>> [1/2] io_uring: uapi: Don't force linux/time_types.h for userspace
>>>> ??????? commit: 958bfdd734b6074ba88ee3abc69d0053e26b7b9c
>>>
>>> Jens, please drop this commit. It breaks the build:
>>
>> Dropped - please actually build your patches, or make it clear that
>> they were not built at all. None of these 2 patches were any good.
> 
> Is it tools/testing/selftests/net/io_uring_zerocopy_tx.c that doesn't build?

Honestly not sure, but saw a few reports come in. Here's the one from
linux-next:

https://lore.kernel.org/all/[email protected]/

> and needs a '#define HAVE_LINUX_TIME_TYPES_H 1'
> 
> BTW, the original commit I posted was here:
> https://lore.kernel.org/io-uring/c7782923deeb4016f2ac2334bc558921e8d91a67.1666605446.git.metze@samba.org/
> 
> What's the magic to compile tools/testing/selftests/net/io_uring_zerocopy_tx.c ?

Some variant of make kselftests-foo?

> My naive tries both fail (even without my patch):

Mine does too, in various other tests. Stephen?

-- 
Jens Axboe

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

* Re: (subset) [PATCH v1 0/2] io_uring uapi updates
  2022-11-16 19:46         ` Jens Axboe
@ 2022-11-16 20:03           ` Stefan Metzmacher
  2022-11-16 20:31             ` Pavel Begunkov
  2022-11-16 20:18           ` Stefan Metzmacher
  1 sibling, 1 reply; 15+ messages in thread
From: Stefan Metzmacher @ 2022-11-16 20:03 UTC (permalink / raw)
  To: Jens Axboe, Ammar Faizi
  Cc: GNU/Weeb Mailing List, io-uring Mailing List, Pavel Begunkov,
	Linux Kernel Mailing List, Stephen Rothwell

Am 16.11.22 um 20:46 schrieb Jens Axboe:
> On 11/16/22 7:22 AM, Stefan Metzmacher wrote:
>> Am 16.11.22 um 14:50 schrieb Jens Axboe:
>>> On 11/15/22 11:34 PM, Ammar Faizi wrote:
>>>> On 11/16/22 6:14 AM, Jens Axboe wrote:
>>>>> On Wed, 16 Nov 2022 04:29:51 +0700, Ammar Faizi wrote:
>>>>>> From: Ammar Faizi <[email protected]>
>>>>>>
>>>>>> Hi Jens,
>>>>>>
>>>>>> io_uring uapi updates:
>>>>>>
>>>>>> 1) Don't force linux/time_types.h for userspace. Linux's io_uring.h is
>>>>>> ???? synced 1:1 into liburing's io_uring.h. liburing has a configure
>>>>>> ???? check to detect the need for linux/time_types.h (Stefan).
>>>>>>
>>>>>> [...]
>>>>>
>>>>> Applied, thanks!
>>>>>
>>>>> [1/2] io_uring: uapi: Don't force linux/time_types.h for userspace
>>>>> ??????? commit: 958bfdd734b6074ba88ee3abc69d0053e26b7b9c
>>>>
>>>> Jens, please drop this commit. It breaks the build:
>>>
>>> Dropped - please actually build your patches, or make it clear that
>>> they were not built at all. None of these 2 patches were any good.
>>
>> Is it tools/testing/selftests/net/io_uring_zerocopy_tx.c that doesn't build?
> 
> Honestly not sure, but saw a few reports come in. Here's the one from
> linux-next:
> 
> https://lore.kernel.org/all/[email protected]/

Yes, but the output is pretty useless as it doesn't show what
.c file and what command is failing.

>> and needs a '#define HAVE_LINUX_TIME_TYPES_H 1'

Just guessing, but adding this into the commit has a chance to work...

--- a/tools/testing/selftests/net/io_uring_zerocopy_tx.c
+++ b/tools/testing/selftests/net/io_uring_zerocopy_tx.c
@@ -15,6 +15,7 @@
  #include <arpa/inet.h>
  #include <linux/errqueue.h>
  #include <linux/if_packet.h>
+#define HAVE_LINUX_TIME_TYPES_H 1
  #include <linux/io_uring.h>
  #include <linux/ipv6.h>
  #include <linux/socket.h>

>> BTW, the original commit I posted was here:
>> https://lore.kernel.org/io-uring/c7782923deeb4016f2ac2334bc558921e8d91a67.1666605446.git.metze@samba.org/
>>
>> What's the magic to compile tools/testing/selftests/net/io_uring_zerocopy_tx.c ?
> 
> Some variant of make kselftests-foo?
> 
>> My naive tries both fail (even without my patch):
> 
> Mine does too, in various other tests. Stephen?

Pavel, as you created that file, do you remember how you build it?

metze


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

* Re: (subset) [PATCH v1 0/2] io_uring uapi updates
  2022-11-16 19:46         ` Jens Axboe
  2022-11-16 20:03           ` Stefan Metzmacher
@ 2022-11-16 20:18           ` Stefan Metzmacher
  1 sibling, 0 replies; 15+ messages in thread
From: Stefan Metzmacher @ 2022-11-16 20:18 UTC (permalink / raw)
  To: Jens Axboe, Ammar Faizi
  Cc: GNU/Weeb Mailing List, io-uring Mailing List, Pavel Begunkov,
	Linux Kernel Mailing List, Stephen Rothwell

Hi Jens,

>> and needs a '#define HAVE_LINUX_TIME_TYPES_H 1'
>>
>> BTW, the original commit I posted was here:
>> https://lore.kernel.org/io-uring/c7782923deeb4016f2ac2334bc558921e8d91a67.1666605446.git.metze@samba.org/

I'll push a better version soon, it inverts the ifdef logic like this:

--- a/include/uapi/linux/io_uring.h
+++ b/include/uapi/linux/io_uring.h
@@ -10,7 +10,15 @@

  #include <linux/fs.h>
  #include <linux/types.h>
+/*
+ * this file is shared with liburing and that has to autodetect
+ * if linux/time_types.h is available or not, it can
+ * define UAPI_LINUX_IO_URING_H_SKIP_LINUX_TIME_TYPES_H
+ * if linux/time_types.h is not available
+ */
+#ifndef UAPI_LINUX_IO_URING_H_SKIP_LINUX_TIME_TYPES_H
  #include <linux/time_types.h>
+#endif

It also means that projects without liburing usage are not affected.
And developers only have to care if they want to build on legacy systems
without time_types.h

Once that's accepted into the kernel I'll adjust the logic in liburing

Does that sound like a plan?

metze


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

* Re: (subset) [PATCH v1 0/2] io_uring uapi updates
  2022-11-16 20:03           ` Stefan Metzmacher
@ 2022-11-16 20:31             ` Pavel Begunkov
  0 siblings, 0 replies; 15+ messages in thread
From: Pavel Begunkov @ 2022-11-16 20:31 UTC (permalink / raw)
  To: Stefan Metzmacher, Jens Axboe, Ammar Faizi
  Cc: GNU/Weeb Mailing List, io-uring Mailing List,
	Linux Kernel Mailing List, Stephen Rothwell

On 11/16/22 20:03, Stefan Metzmacher wrote:
> Am 16.11.22 um 20:46 schrieb Jens Axboe:
>> On 11/16/22 7:22 AM, Stefan Metzmacher wrote:
>>> Am 16.11.22 um 14:50 schrieb Jens Axboe:
>>>> On 11/15/22 11:34 PM, Ammar Faizi wrote:
>>>>> On 11/16/22 6:14 AM, Jens Axboe wrote:
>>>>>> On Wed, 16 Nov 2022 04:29:51 +0700, Ammar Faizi wrote:
>>>>>>> From: Ammar Faizi <[email protected]>
>>>>>>>
>>>>>>> Hi Jens,
>>>>>>>
>>>>>>> io_uring uapi updates:
>>>>>>>
>>>>>>> 1) Don't force linux/time_types.h for userspace. Linux's io_uring.h is
>>>>>>> ???? synced 1:1 into liburing's io_uring.h. liburing has a configure
>>>>>>> ???? check to detect the need for linux/time_types.h (Stefan).
>>>>>>>
>>>>>>> [...]
>>>>>>
>>>>>> Applied, thanks!
>>>>>>
>>>>>> [1/2] io_uring: uapi: Don't force linux/time_types.h for userspace
>>>>>> ??????? commit: 958bfdd734b6074ba88ee3abc69d0053e26b7b9c
>>>>>
>>>>> Jens, please drop this commit. It breaks the build:
>>>>
>>>> Dropped - please actually build your patches, or make it clear that
>>>> they were not built at all. None of these 2 patches were any good.
>>>
>>> Is it tools/testing/selftests/net/io_uring_zerocopy_tx.c that doesn't build?
>>
>> Honestly not sure, but saw a few reports come in. Here's the one from
>> linux-next:
>>
>> https://lore.kernel.org/all/[email protected]/
> 
> Yes, but the output is pretty useless as it doesn't show what
> .c file and what command is failing.
> 
>>> and needs a '#define HAVE_LINUX_TIME_TYPES_H 1'
> 
> Just guessing, but adding this into the commit has a chance to work...
> 
> --- a/tools/testing/selftests/net/io_uring_zerocopy_tx.c
> +++ b/tools/testing/selftests/net/io_uring_zerocopy_tx.c
> @@ -15,6 +15,7 @@
>   #include <arpa/inet.h>
>   #include <linux/errqueue.h>
>   #include <linux/if_packet.h>
> +#define HAVE_LINUX_TIME_TYPES_H 1
>   #include <linux/io_uring.h>
>   #include <linux/ipv6.h>
>   #include <linux/socket.h>
> 
>>> BTW, the original commit I posted was here:
>>> https://lore.kernel.org/io-uring/c7782923deeb4016f2ac2334bc558921e8d91a67.1666605446.git.metze@samba.org/
>>>
>>> What's the magic to compile tools/testing/selftests/net/io_uring_zerocopy_tx.c ?
>>
>> Some variant of make kselftests-foo?
>>
>>> My naive tries both fail (even without my patch):
>>
>> Mine does too, in various other tests. Stephen?
> 
> Pavel, as you created that file, do you remember how you build it?

make headers_install
make -C tools/testing/selftests/net/


IIRC, it uses system uapi headers and apparently yours don't have
IORING_CQE_F_NOTIF, etc. And I don't think it uses the right Makefile,
so -C executes it from the selftest/net folder.

-- 
Pavel Begunkov

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

end of thread, other threads:[~2022-11-16 20:32 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-11-15 21:29 [PATCH v1 0/2] io_uring uapi updates Ammar Faizi
2022-11-15 21:29 ` [PATCH v1 1/2] io_uring: uapi: Don't force linux/time_types.h for userspace Ammar Faizi
2022-11-15 21:29 ` [PATCH v1 2/2] io_uring: uapi: Don't use a zero-size array Ammar Faizi
2022-11-15 23:09   ` Jens Axboe
2022-11-16 10:14   ` Pavel Begunkov
2022-11-16 10:28     ` Ammar Faizi
2022-11-15 23:14 ` (subset) [PATCH v1 0/2] io_uring uapi updates Jens Axboe
2022-11-16  6:34   ` Ammar Faizi
2022-11-16  6:49     ` Ammar Faizi
2022-11-16 13:50     ` Jens Axboe
2022-11-16 14:22       ` Stefan Metzmacher
2022-11-16 19:46         ` Jens Axboe
2022-11-16 20:03           ` Stefan Metzmacher
2022-11-16 20:31             ` Pavel Begunkov
2022-11-16 20:18           ` Stefan Metzmacher

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