From: Tang Yizhou <yizhou.tang@xxxxxxxxxx> In my experiment, I found that the output of trace_balance_dirty_pages() in the cgroup writeback scenario was strange because trace_balance_dirty_pages() always uses global_wb_domain.dirty_limit for related calculations instead of the dirty_limit of the corresponding memcg's wb_domain. The basic idea of the fix is to store the hard dirty limit value computed in wb_position_ratio() into struct dirty_throttle_control and use it for calculations in trace_balance_dirty_pages(). Tang Yizhou (2): writeback: Let trace_balance_dirty_pages() take struct dtc as parameter writeback: Fix calculations in trace_balance_dirty_pages() for cgwb include/linux/writeback.h | 24 +++++++++++++++++++++ include/trace/events/writeback.h | 33 ++++++++++++---------------- mm/page-writeback.c | 37 +++----------------------------- 3 files changed, 41 insertions(+), 53 deletions(-) -- 2.25.1