• Jianchao Wang's avatar
    blk-mq: count the hctx as active before allocating tag · d263ed99
    Jianchao Wang authored
    Currently, we count the hctx as active after allocate driver tag
    successfully. If a previously inactive hctx try to get tag first
    time, it may fails and need to wait. However, due to the stale tag
    ->active_queues, the other shared-tags users are still able to
    occupy all driver tags while there is someone waiting for tag.
    Consequently, even if the previously inactive hctx is waked up, it
    still may not be able to get a tag and could be starved.
    
    To fix it, we count the hctx as active before try to allocate driver
    tag, then when it is waiting the tag, the other shared-tag users
    will reserve budget for it.
    Reviewed-by: default avatarMing Lei <ming.lei@redhat.com>
    Signed-off-by: default avatarJianchao Wang <jianchao.w.wang@oracle.com>
    Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
    d263ed99
blk-mq-tag.c 11.4 KB