mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-09-21 20:22:13 +08:00
writeback: factor out balance_wb_limits to remove repeated code
Factor out balance_wb_limits to remove repeated code [shikemeng@huaweicloud.com: add comment] Link: https://lkml.kernel.org/r/20240606033547.344376-1-shikemeng@huaweicloud.com [akpm@linux-foundation.org: s/fileds/fields/ in comment] Link: https://lkml.kernel.org/r/20240514125254.142203-9-shikemeng@huaweicloud.com Signed-off-by: Kemeng Shi <shikemeng@huaweicloud.com> Cc: Matthew Wilcox (Oracle) <willy@infradead.org> Cc: Tejun Heo <tj@kernel.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
parent
236d0f16eb
commit
8246291ecc
@ -1783,6 +1783,21 @@ static inline void wb_dirty_exceeded(struct dirty_throttle_control *dtc,
|
||||
((dtc->dirty > dtc->thresh) || strictlimit);
|
||||
}
|
||||
|
||||
/*
|
||||
* The limits fields dirty_exceeded and pos_ratio won't be updated if wb is
|
||||
* in freerun state. Please don't use these invalid fields in freerun case.
|
||||
*/
|
||||
static void balance_wb_limits(struct dirty_throttle_control *dtc,
|
||||
bool strictlimit)
|
||||
{
|
||||
wb_dirty_freerun(dtc, strictlimit);
|
||||
if (dtc->freerun)
|
||||
return;
|
||||
|
||||
wb_dirty_exceeded(dtc, strictlimit);
|
||||
wb_position_ratio(dtc);
|
||||
}
|
||||
|
||||
/*
|
||||
* balance_dirty_pages() must be called by processes which are generating dirty
|
||||
* data. It looks at the number of dirty pages in the machine and will force
|
||||
@ -1869,12 +1884,9 @@ free_running:
|
||||
* Calculate global domain's pos_ratio and select the
|
||||
* global dtc by default.
|
||||
*/
|
||||
wb_dirty_freerun(gdtc, strictlimit);
|
||||
balance_wb_limits(gdtc, strictlimit);
|
||||
if (gdtc->freerun)
|
||||
goto free_running;
|
||||
|
||||
wb_dirty_exceeded(gdtc, strictlimit);
|
||||
wb_position_ratio(gdtc);
|
||||
sdtc = gdtc;
|
||||
|
||||
if (mdtc) {
|
||||
@ -1884,12 +1896,9 @@ free_running:
|
||||
* both global and memcg domains. Choose the one
|
||||
* w/ lower pos_ratio.
|
||||
*/
|
||||
wb_dirty_freerun(mdtc, strictlimit);
|
||||
balance_wb_limits(mdtc, strictlimit);
|
||||
if (mdtc->freerun)
|
||||
goto free_running;
|
||||
|
||||
wb_dirty_exceeded(mdtc, strictlimit);
|
||||
wb_position_ratio(mdtc);
|
||||
if (mdtc->pos_ratio < gdtc->pos_ratio)
|
||||
sdtc = mdtc;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user