diff mbox series

[v3,2/2] mm: fix arithmetic for max_prop_frac when setting max_ratio

Message ID 20231219142508.86265-3-jefflexu@linux.alibaba.com (mailing list archive)
State New, archived
Headers show
Series mm: fix arithmetic for bdi min_ratio and max_ratio | expand

Commit Message

Jingbo Xu Dec. 19, 2023, 2:25 p.m. UTC
Since now bdi->max_ratio is part per million, fix the wrong arithmetic
for max_prop_frac when setting max_ratio.  Otherwise the miscalculated
max_prop_frac will affect the incrementing of writeout completion count
when max_ratio is not 100%.

Fixes: efc3e6ad53ea ("mm: split off __bdi_set_max_ratio() function")
Signed-off-by: Jingbo Xu <jefflexu@linux.alibaba.com>
---
 mm/page-writeback.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

Comments

Jan Kara Jan. 4, 2024, 5:41 p.m. UTC | #1
On Tue 19-12-23 22:25:08, Jingbo Xu wrote:
> Since now bdi->max_ratio is part per million, fix the wrong arithmetic
> for max_prop_frac when setting max_ratio.  Otherwise the miscalculated
> max_prop_frac will affect the incrementing of writeout completion count
> when max_ratio is not 100%.
> 
> Fixes: efc3e6ad53ea ("mm: split off __bdi_set_max_ratio() function")
> Signed-off-by: Jingbo Xu <jefflexu@linux.alibaba.com>

Good catch. Feel free to add:

Reviewed-by: Jan Kara <jack@suse.cz>

								Honza

> ---
>  mm/page-writeback.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/mm/page-writeback.c b/mm/page-writeback.c
> index 2140382dd768..05e5c425b3ff 100644
> --- a/mm/page-writeback.c
> +++ b/mm/page-writeback.c
> @@ -728,7 +728,8 @@ static int __bdi_set_max_ratio(struct backing_dev_info *bdi, unsigned int max_ra
>  		ret = -EINVAL;
>  	} else {
>  		bdi->max_ratio = max_ratio;
> -		bdi->max_prop_frac = (FPROP_FRAC_BASE * max_ratio) / 100;
> +		bdi->max_prop_frac = (FPROP_FRAC_BASE * max_ratio) /
> +						(100 * BDI_RATIO_SCALE);
>  	}
>  	spin_unlock_bh(&bdi_lock);
>  
> -- 
> 2.19.1.6.gb485710b
> 
>
diff mbox series

Patch

diff --git a/mm/page-writeback.c b/mm/page-writeback.c
index 2140382dd768..05e5c425b3ff 100644
--- a/mm/page-writeback.c
+++ b/mm/page-writeback.c
@@ -728,7 +728,8 @@  static int __bdi_set_max_ratio(struct backing_dev_info *bdi, unsigned int max_ra
 		ret = -EINVAL;
 	} else {
 		bdi->max_ratio = max_ratio;
-		bdi->max_prop_frac = (FPROP_FRAC_BASE * max_ratio) / 100;
+		bdi->max_prop_frac = (FPROP_FRAC_BASE * max_ratio) /
+						(100 * BDI_RATIO_SCALE);
 	}
 	spin_unlock_bh(&bdi_lock);