• Jens Axboe's avatar
    blk-mq: allow non-softirq completions · 95f09684
    Jens Axboe authored
    Right now we export two ways of completing a request:
    
    1) blk_mq_complete_request(). This uses an IPI (if needed) and
       completes through q->softirq_done_fn(). It also works with
       timeouts.
    
    2) blk_mq_end_io(). This completes inline, and ignores any timeout
       state of the request.
    
    Let blk_mq_complete_request() handle non-softirq_done_fn completions
    as well, by just completing inline. If a driver has enough completion
    ports to place completions correctly, it need not define a
    mq_ops->complete() and we can avoid an indirect function call by
    doing the completion inline.
    Signed-off-by: default avatarJens Axboe <axboe@fb.com>
    95f09684
blk-mq.c 46.1 KB