diff options
Diffstat (limited to 'mm/page-writeback.c')
| -rw-r--r-- | mm/page-writeback.c | 8 | 
1 files changed, 4 insertions, 4 deletions
diff --git a/mm/page-writeback.c b/mm/page-writeback.c index 0360d1b5a1d..a3278f00523 100644 --- a/mm/page-writeback.c +++ b/mm/page-writeback.c @@ -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,  |