If the given type has fraction smaller than max_frac/FPROP_FRAC_BASE,
the code could be modified to call __fprop_inc_percpu() directly and
easier to understand. After this patch, fprop_reflect_period_percpu()
will be called twice, and quicky return on pl->period == p->period
test, so it would not result to significant downside of performance.

Thanks for Jan's guidance.

Signed-off-by: Tan Hu <tan...@zte.com.cn>
Reviewed-by: Jan Kara <j...@suse.cz>
---
 lib/flex_proportions.c | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/lib/flex_proportions.c b/lib/flex_proportions.c
index 7852bfff5..451543937 100644
--- a/lib/flex_proportions.c
+++ b/lib/flex_proportions.c
@@ -266,8 +266,7 @@ void __fprop_inc_percpu_max(struct fprop_global *p,
                if (numerator >
                    (((u64)denominator) * max_frac) >> FPROP_FRAC_SHIFT)
                        return;
-       } else
-               fprop_reflect_period_percpu(p, pl);
-       percpu_counter_add_batch(&pl->events, 1, PROP_BATCH);
-       percpu_counter_add(&p->events, 1);
+       }
+
+       __fprop_inc_percpu(p, pl);
 }
-- 
2.19.1

Reply via email to