summaryrefslogtreecommitdiffstats
path: root/init
diff options
context:
space:
mode:
authorJens Axboe <axboe@kernel.dk>2019-10-24 15:25:42 +0200
committerJens Axboe <axboe@kernel.dk>2019-10-29 19:43:06 +0100
commit561fb04a6a2257716738dac2ed812f377c2634c2 (patch)
tree5ea33f330cc44d8816b3d75bfd4875858df17a88 /init
parentio-wq: small threadpool implementation for io_uring (diff)
downloadlinux-561fb04a6a2257716738dac2ed812f377c2634c2.tar.xz
linux-561fb04a6a2257716738dac2ed812f377c2634c2.zip
io_uring: replace workqueue usage with io-wq
Drop various work-arounds we have for workqueues: - We no longer need the async_list for tracking sequential IO. - We don't have to maintain our own mm tracking/setting. - We don't need a separate workqueue for buffered writes. This didn't even work that well to begin with, as it was suboptimal for multiple buffered writers on multiple files. - We can properly cancel pending interruptible work. This fixes deadlocks with particularly socket IO, where we cannot cancel them when the io_uring is closed. Hence the ring will wait forever for these requests to complete, which may never happen. This is different from disk IO where we know requests will complete in a finite amount of time. - Due to being able to cancel work interruptible work that is already running, we can implement file table support for work. We need that for supporting system calls that add to a process file table. - It gets us one step closer to adding async support for any system call. Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'init')
-rw-r--r--init/Kconfig1
1 files changed, 1 insertions, 0 deletions
diff --git a/init/Kconfig b/init/Kconfig
index b4daad2bac23..4d8d145c41d2 100644
--- a/init/Kconfig
+++ b/init/Kconfig
@@ -1548,6 +1548,7 @@ config AIO
config IO_URING
bool "Enable IO uring support" if EXPERT
select ANON_INODES
+ select IO_WQ
default y
help
This option enables support for the io_uring interface, enabling