• Jens Axboe's avatar
    io_uring/rw: add write support for IOCB_DIO_CALLER_COMP · 099ada2c
    Jens Axboe authored
    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: default avatarDarrick J. Wong <djwong@kernel.org>
    Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
    Reviewed-by: default avatarDave Chinner <dchinner@redhat.com>
    Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
    099ada2c
rw.c 28.2 KB