diff options
author | Jens Axboe <axboe@kernel.dk> | 2023-07-08 19:03:52 +0300 |
---|---|---|
committer | Jens Axboe <axboe@kernel.dk> | 2023-08-02 02:32:45 +0300 |
commit | 099ada2c87260e5c52fbdad4ca40c165fc194a2e (patch) | |
tree | e48cea61e8cea2124071f839679814a6667a0ecc /fs/iomap | |
parent | 9cf3516c29e6dba95d36d7d86c03b06495107859 (diff) | |
download | linux-099ada2c87260e5c52fbdad4ca40c165fc194a2e.tar.xz |
io_uring/rw: add write support for IOCB_DIO_CALLER_COMP
If the filesystem dio handler understands IOCB_DIO_CALLER_COMP, we'll
get a kiocb->ki_complete() callback with kiocb->dio_complete set. In
that case, rather than complete the IO directly through task_work, queue
up an intermediate task_work handler that first processes this callback
and then immediately completes the request.
For XFS, this avoids a punt through a workqueue, which is a lot less
efficient and adds latency to lower queue depth (or sync) O_DIRECT
writes.
Only do this for non-polled IO, as polled IO doesn't need this kind
of deferral as it always completes within the task itself. This then
avoids a check for deferral in the polled IO completion handler.
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'fs/iomap')
0 files changed, 0 insertions, 0 deletions