]> git.ipfire.org Git - thirdparty/kernel/linux.git/blobdiff - block/blk-cgroup-rwstat.c
Merge tag 'for-6.10/block-20240511' of git://git.kernel.dk/linux
[thirdparty/kernel/linux.git] / block / blk-cgroup-rwstat.c
index 3304e841df7ce924a1a64c69b5ab9102294d6801..a55fb0c535582ba182aff6e05a269aa6f9bd9617 100644 (file)
@@ -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);