• T
    blkcg: simplify stat reset · 997a026c
    Tejun Heo 提交于
    blkiocg_reset_stats() implements stat reset for blkio.reset_stats
    cgroupfs file.  This feature is very unconventional and something
    which shouldn't have been merged.  It's only useful when there's only
    one user or tool looking at the stats.  As soon as multiple users
    and/or tools are involved, it becomes useless as resetting disrupts
    other usages.  There are very good reasons why all other stats expect
    readers to read values at the start and end of a period and subtract
    to determine delta over the period.
    
    The implementation is rather complex - some fields shouldn't be
    cleared and it saves some fields, resets whole and restores for some
    reason.  Reset of percpu stats is also racy.  The comment points to
    64bit store atomicity for the reason but even without that stores for
    zero can simply race with other CPUs doing RMW and get clobbered.
    
    Simplify reset by
    
    * Clear selectively instead of resetting and restoring.
    
    * Grouping debug stat fields to be reset and using memset() over them.
    
    * Not caring about stats_lock.
    
    * Using memset() to reset percpu stats.
    Signed-off-by: NTejun Heo <tj@kernel.org>
    Cc: Vivek Goyal <vgoyal@redhat.com>
    Signed-off-by: NJens Axboe <axboe@kernel.dk>
    997a026c
blk-cgroup.h 13.8 KB