Message ID | 20231219142508.86265-3-jefflexu@linux.alibaba.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | mm: fix arithmetic for bdi min_ratio and max_ratio | expand |
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 --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);
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(-)