lkml.org 
[lkml]   [2021]   [Mar]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.10 013/221] blk-cgroup: Fix the recursive blkg rwstat
    Date
    From: Xunlei Pang <xlpang@linux.alibaba.com>

    [ Upstream commit 4f44657d74873735e93a50eb25014721a66aac19 ]

    The current blkio.throttle.io_service_bytes_recursive doesn't
    work correctly.

    As an example, for the following blkcg hierarchy:
    (Made 1GB READ in test1, 512MB READ in test2)
    test
    / \
    test1 test2

    $ head -n 1 test/test1/blkio.throttle.io_service_bytes_recursive
    8:0 Read 1073684480
    $ head -n 1 test/test2/blkio.throttle.io_service_bytes_recursive
    8:0 Read 537448448
    $ head -n 1 test/blkio.throttle.io_service_bytes_recursive
    8:0 Read 537448448

    Clearly, above data of "test" reflects "test2" not "test1"+"test2".

    Do the correct summary in blkg_rwstat_recursive_sum().

    Signed-off-by: Xunlei Pang <xlpang@linux.alibaba.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    block/blk-cgroup-rwstat.c | 3 ++-
    1 file changed, 2 insertions(+), 1 deletion(-)

    diff --git a/block/blk-cgroup-rwstat.c b/block/blk-cgroup-rwstat.c
    index 85d5790ac49b..3304e841df7c 100644
    --- a/block/blk-cgroup-rwstat.c
    +++ b/block/blk-cgroup-rwstat.c
    @@ -109,6 +109,7 @@ void blkg_rwstat_recursive_sum(struct blkcg_gq *blkg, struct blkcg_policy *pol,

    lockdep_assert_held(&blkg->q->queue_lock);

    + memset(sum, 0, sizeof(*sum));
    rcu_read_lock();
    blkg_for_each_descendant_pre(pos_blkg, pos_css, blkg) {
    struct blkg_rwstat *rwstat;
    @@ -122,7 +123,7 @@ void blkg_rwstat_recursive_sum(struct blkcg_gq *blkg, struct blkcg_policy *pol,
    rwstat = (void *)pos_blkg + off;

    for (i = 0; i < BLKG_RWSTAT_NR; i++)
    - sum->cnt[i] = blkg_rwstat_read_counter(rwstat, i);
    + sum->cnt[i] += blkg_rwstat_read_counter(rwstat, i);
    }
    rcu_read_unlock();
    }
    --
    2.30.1


    \
     
     \ /
      Last update: 2021-03-29 10:30    [W:4.145 / U:1.944 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site