Message ID | 20221115212614.1308132-1-ammar.faizi@intel.com (mailing list archive) |
---|---|
Headers | show |
Series | io_uring uapi updates | expand |
On Wed, 16 Nov 2022 04:29:51 +0700, Ammar Faizi wrote: > From: Ammar Faizi <ammarfaizi2@gnuweeb.org> > > 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,
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 <ammarfaizi2@gnuweeb.org> >> >> 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; | ^~~~~~~
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 <ammarfaizi2@gnuweeb.org> >>> >>> 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/202211161421.AfP10hq6-lkp@intel.com
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 <ammarfaizi2@gnuweeb.org> >>> >>> 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.
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 <ammarfaizi2@gnuweeb.org> >>>> >>>> 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
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 <ammarfaizi2@gnuweeb.org> >>>>> >>>>> 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/20221116123556.79a7bbd8@canb.auug.org.au/ > 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?
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 <ammarfaizi2@gnuweeb.org> >>>>>> >>>>>> 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/20221116123556.79a7bbd8@canb.auug.org.au/ 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
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
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 <ammarfaizi2@gnuweeb.org> >>>>>>> >>>>>>> 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/20221116123556.79a7bbd8@canb.auug.org.au/ > > 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.