diff mbox series

blk-cgroup: use group allocation/free of per-cpu counters API

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

Commit Message

Kefeng Wang March 25, 2024, 3:59 a.m. UTC
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(-)

Comments

Kefeng Wang April 3, 2024, 10:35 a.m. UTC | #1
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);
>
Jens Axboe April 3, 2024, 3:10 p.m. UTC | #2
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 mbox series

Patch

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);