• Christoph Hellwig's avatar
    blk-mq: allow blk_mq_make_request to consume the q_usage_counter reference · ac7c5675
    Christoph Hellwig authored
    blk_mq_make_request currently needs to grab an q_usage_counter
    reference when allocating a request.  This is because the block layer
    grabs one before calling blk_mq_make_request, but also releases it as
    soon as blk_mq_make_request returns.  Remove the blk_queue_exit call
    after blk_mq_make_request returns, and instead let it consume the
    reference.  This works perfectly fine for the block layer caller, just
    device mapper needs an extra reference as the old problem still
    persists there.  Open code blk_queue_enter_live in device mapper,
    as there should be no other callers and this allows better documenting
    why we do a non-try get.
    Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
    Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
    ac7c5675
blk-core.c 49.3 KB