- Jul 25, 2022
-
-
Pavel Begunkov authored
Add internal part of send zerocopy notifications. There are two main structures, the first one is struct io_notif, which carries inside struct ubuf_info and maps 1:1 to it. io_uring will be binding a number of zerocopy send requests to it and ask to complete (aka flush) it. When flushed and all attached requests and skbs complete, it'll generate one and only one CQE. There are intended to be passed into the network layer as struct msghdr::msg_ubuf. The second concept is notification slots. The userspace will be able to register an array of slots and subsequently addressing them by the index in the array. Slots are independent of each other. Each slot can have only one notifier at a time (called active notifier) but many notifiers during the lifetime. When active, a notifier not going to post any completion but the userspace can attach requests to it by specifying the corresponding slot while issueing send zc requests. Eventually, the userspace will want to "flush" the notifier losing any way to attach new requests to it, however it can use the next atomatically added notifier of this slot or of any other slot. When the network layer is done with all enqueued skbs attached to a notifier and doesn't need the specified in them user data, the flushed notifier will post a CQE. Signed-off-by:
Pavel Begunkov <asml.silence@gmail.com> Link: https://lore.kernel.org/r/3ecf54c31a85762bf679b0a432c9f43ecf7e61cc.1657643355.git.asml.silence@gmail.com Signed-off-by:
Jens Axboe <axboe@kernel.dk>
-
Jens Axboe authored
We already have the declarations in opdef.h, move the rest into its own file rather than in the main io_uring.c file. Signed-off-by:
Jens Axboe <axboe@kernel.dk>
-
Jens Axboe authored
Signed-off-by:
Jens Axboe <axboe@kernel.dk>
-
Jens Axboe authored
Signed-off-by:
Jens Axboe <axboe@kernel.dk>
-
Jens Axboe authored
Move both the opcodes related to it, and the internals code dealing with it. Signed-off-by:
Jens Axboe <axboe@kernel.dk>
-
Jens Axboe authored
This also helps cleanup the io_uring.h cancel parts, as we can make things static in the cancel.c file, mostly. Signed-off-by:
Jens Axboe <axboe@kernel.dk>
-
Jens Axboe authored
Add a io_poll_issue() rather than export the general task_work locking and io_issue_sqe(), and put the io_op_defs definition and structure into a separate header file so that poll can use it. Signed-off-by:
Jens Axboe <axboe@kernel.dk>
-
Jens Axboe authored
Signed-off-by:
Jens Axboe <axboe@kernel.dk>
-
Jens Axboe authored
This also means moving a bit more of the fixed file handling to the filetable side, which makes sense separately too. Signed-off-by:
Jens Axboe <axboe@kernel.dk>
-
Jens Axboe authored
Signed-off-by:
Jens Axboe <axboe@kernel.dk>
-
Jens Axboe authored
Signed-off-by:
Jens Axboe <axboe@kernel.dk>
-
Jens Axboe authored
Signed-off-by:
Jens Axboe <axboe@kernel.dk>
-
Jens Axboe authored
While at it, convert the handlers to just use io_eopnotsupp_prep() if CONFIG_NET isn't set. Signed-off-by:
Jens Axboe <axboe@kernel.dk>
-
Jens Axboe authored
Signed-off-by:
Jens Axboe <axboe@kernel.dk>
-
Jens Axboe authored
Would be nice to sort out Kconfig for this and don't even compile epoll.c if we don't have epoll configured. Signed-off-by:
Jens Axboe <axboe@kernel.dk>
-
Jens Axboe authored
Signed-off-by:
Jens Axboe <axboe@kernel.dk>
-
Jens Axboe authored
Signed-off-by:
Jens Axboe <axboe@kernel.dk>
-
Jens Axboe authored
Signed-off-by:
Jens Axboe <axboe@kernel.dk>
-
Jens Axboe authored
Signed-off-by:
Jens Axboe <axboe@kernel.dk>
-
Jens Axboe authored
This splits out sync_file_range, fsync, and fallocate. Signed-off-by:
Jens Axboe <axboe@kernel.dk>
-
Jens Axboe authored
This splits out splice and tee support. Signed-off-by:
Jens Axboe <axboe@kernel.dk>
-
Jens Axboe authored
This splits out renameat, unlinkat, mkdirat, symlinkat, and linkat. Signed-off-by:
Jens Axboe <axboe@kernel.dk>
-
Jens Axboe authored
Signed-off-by:
Jens Axboe <axboe@kernel.dk>
-
Jens Axboe authored
Signed-off-by:
Jens Axboe <axboe@kernel.dk>
-
Jens Axboe authored
In preparation for splitting io_uring up a bit, move it into its own top level directory. It didn't really belong in fs/ anyway, as it's not a file system only API. This adds io_uring/ and moves the core files in there, and updates the MAINTAINERS file for the new location. Signed-off-by:
Jens Axboe <axboe@kernel.dk>
-