|
@@ -1097,13 +1097,13 @@ static void balance_dirty_pages(struct address_space *mapping,
|
|
|
pos_ratio = bdi_position_ratio(bdi, dirty_thresh,
|
|
|
background_thresh, nr_dirty,
|
|
|
bdi_thresh, bdi_dirty);
|
|
|
- if (unlikely(pos_ratio == 0)) {
|
|
|
+ task_ratelimit = ((u64)dirty_ratelimit * pos_ratio) >>
|
|
|
+ RATELIMIT_CALC_SHIFT;
|
|
|
+ if (unlikely(task_ratelimit == 0)) {
|
|
|
pause = max_pause;
|
|
|
goto pause;
|
|
|
}
|
|
|
- task_ratelimit = (u64)dirty_ratelimit *
|
|
|
- pos_ratio >> RATELIMIT_CALC_SHIFT;
|
|
|
- pause = (HZ * pages_dirtied) / (task_ratelimit | 1);
|
|
|
+ pause = HZ * pages_dirtied / task_ratelimit;
|
|
|
if (unlikely(pause <= 0)) {
|
|
|
trace_balance_dirty_pages(bdi,
|
|
|
dirty_thresh,
|