• Ming Lei's avatar
    blk-mq: streamline handling of q->mq_ops->queue_rq result · 7bf13729
    Ming Lei authored
    Current handling of q->mq_ops->queue_rq result is a bit ugly:
    
    - two branches which needs to 'continue' have to check if the
    dispatch local list is empty, otherwise one bad request may
    be retrieved via 'rq = list_first_entry(list, struct request, queuelist);'
    
    - the branch of 'if (unlikely(ret != BLK_STS_OK))' isn't easy
    to follow, since it is actually one error branch.
    
    Streamline this handling, so the code becomes more readable, meantime
    potential kernel oops can be avoided in case that the last request in
    local dispatch list is failed.
    
    Fixes: fc17b653 ("blk-mq: switch ->queue_rq return value to blk_status_t")
    Signed-off-by: default avatarMing Lei <ming.lei@redhat.com>
    Reviewed-by: default avatarJohannes Thumshirn <johannes.thumshirn@wdc.com>
    Cc: Christoph Hellwig <hch@infradead.org>
    Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
    7bf13729
blk-mq.c 96.3 KB