• Hou Tao's avatar
    block: make rq sector size accessible for block stats · 3d244306
    Hou Tao authored
    Currently rq->data_len will be decreased by partial completion or
    zeroed by completion, so when blk_stat_add() is invoked, data_len
    will be zero and there will never be samples in poll_cb because
    blk_mq_poll_stats_bkt() will return -1 if data_len is zero.
    
    We could move blk_stat_add() back to __blk_mq_complete_request(),
    but that would make the effort of trying to call ktime_get_ns()
    once in vain. Instead we can reuse throtl_size field, and use
    it for both block stats and block throttle, and adjust the
    logic in blk_mq_poll_stats_bkt() accordingly.
    
    Fixes: 4bc6339a ("block: move blk_stat_add() to __blk_mq_end_request()")
    Tested-by: default avatarPavel Begunkov <asml.silence@gmail.com>
    Signed-off-by: default avatarHou Tao <houtao1@huawei.com>
    Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
    3d244306
blk-throttle.c 67.9 KB