Message ID | 20240325035955.50019-1-wangkefeng.wang@huawei.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | blk-cgroup: use group allocation/free of per-cpu counters API | expand |
Hi Jens, kindly ping... On 2024/3/25 11:59, Kefeng Wang wrote: > Use group allocation/free of per-cpu counters api to accelerate > blkg_rwstat_init/exit() and simplify code. > > Signed-off-by: Kefeng Wang <wangkefeng.wang@huawei.com> > --- > block/blk-cgroup-rwstat.c | 18 ++++++------------ > 1 file changed, 6 insertions(+), 12 deletions(-) > > diff --git a/block/blk-cgroup-rwstat.c b/block/blk-cgroup-rwstat.c > index 3304e841df7c..a55fb0c53558 100644 > --- a/block/blk-cgroup-rwstat.c > +++ b/block/blk-cgroup-rwstat.c > @@ -9,25 +9,19 @@ int blkg_rwstat_init(struct blkg_rwstat *rwstat, gfp_t gfp) > { > int i, ret; > > - for (i = 0; i < BLKG_RWSTAT_NR; i++) { > - ret = percpu_counter_init(&rwstat->cpu_cnt[i], 0, gfp); > - if (ret) { > - while (--i >= 0) > - percpu_counter_destroy(&rwstat->cpu_cnt[i]); > - return ret; > - } > + ret = percpu_counter_init_many(rwstat->cpu_cnt, 0, gfp, BLKG_RWSTAT_NR); > + if (ret) > + return ret; > + > + for (i = 0; i < BLKG_RWSTAT_NR; i++) > atomic64_set(&rwstat->aux_cnt[i], 0); > - } > return 0; > } > EXPORT_SYMBOL_GPL(blkg_rwstat_init); > > void blkg_rwstat_exit(struct blkg_rwstat *rwstat) > { > - int i; > - > - for (i = 0; i < BLKG_RWSTAT_NR; i++) > - percpu_counter_destroy(&rwstat->cpu_cnt[i]); > + percpu_counter_destroy_many(rwstat->cpu_cnt, BLKG_RWSTAT_NR); > } > EXPORT_SYMBOL_GPL(blkg_rwstat_exit); >
On Mon, 25 Mar 2024 11:59:55 +0800, Kefeng Wang wrote: > Use group allocation/free of per-cpu counters api to accelerate > blkg_rwstat_init/exit() and simplify code. > > Applied, thanks! [1/1] blk-cgroup: use group allocation/free of per-cpu counters API commit: 688c8b9208356eb5c3fa8047f3e35666f3049a4d Best regards,
diff --git a/block/blk-cgroup-rwstat.c b/block/blk-cgroup-rwstat.c index 3304e841df7c..a55fb0c53558 100644 --- a/block/blk-cgroup-rwstat.c +++ b/block/blk-cgroup-rwstat.c @@ -9,25 +9,19 @@ int blkg_rwstat_init(struct blkg_rwstat *rwstat, gfp_t gfp) { int i, ret; - for (i = 0; i < BLKG_RWSTAT_NR; i++) { - ret = percpu_counter_init(&rwstat->cpu_cnt[i], 0, gfp); - if (ret) { - while (--i >= 0) - percpu_counter_destroy(&rwstat->cpu_cnt[i]); - return ret; - } + ret = percpu_counter_init_many(rwstat->cpu_cnt, 0, gfp, BLKG_RWSTAT_NR); + if (ret) + return ret; + + for (i = 0; i < BLKG_RWSTAT_NR; i++) atomic64_set(&rwstat->aux_cnt[i], 0); - } return 0; } EXPORT_SYMBOL_GPL(blkg_rwstat_init); void blkg_rwstat_exit(struct blkg_rwstat *rwstat) { - int i; - - for (i = 0; i < BLKG_RWSTAT_NR; i++) - percpu_counter_destroy(&rwstat->cpu_cnt[i]); + percpu_counter_destroy_many(rwstat->cpu_cnt, BLKG_RWSTAT_NR); } EXPORT_SYMBOL_GPL(blkg_rwstat_exit);
Use group allocation/free of per-cpu counters api to accelerate blkg_rwstat_init/exit() and simplify code. Signed-off-by: Kefeng Wang <wangkefeng.wang@huawei.com> --- block/blk-cgroup-rwstat.c | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-)