• Jens Axboe's avatar
    block: don't make REQ_POLLED imply REQ_NOWAIT · 2bc05769
    Jens Axboe authored
    Normally these two flags do go together, as the issuer of polled IO
    generally cannot wait for resources that will get freed as part of IO
    completion. This is because that very task is the one that will complete
    the request and free those resources, hence that would introduce a
    deadlock.
    
    But it is possible to have someone else issue the polled IO, eg via
    io_uring if the request is punted to io-wq. For that case, it's fine to
    have the task block on IO submission, as it is not the same task that
    will be completing the IO.
    
    It's completely up to the caller to ask for both polled and nowait IO
    separately! If we don't allow polled IO where IOCB_NOWAIT isn't set in
    the kiocb, then we can run into repeated -EAGAIN submissions and not
    make any progress.
    Reviewed-by: default avatarBart Van Assche <bvanassche@acm.org>
    Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
    2bc05769
fops.c 17.5 KB