2024-03-25 13:17:04

by Kefeng Wang

[permalink] [raw]
Subject: [PATCH] fs: quota: use group allocation of per-cpu counters API

Use group allocation of per-cpu counters api to accelerate
dquot_init() and simplify code.

Signed-off-by: Kefeng Wang <[email protected]>
---
fs/quota/dquot.c | 9 ++++-----
1 file changed, 4 insertions(+), 5 deletions(-)

diff --git a/fs/quota/dquot.c b/fs/quota/dquot.c
index dacbee455c03..808544f74e5e 100644
--- a/fs/quota/dquot.c
+++ b/fs/quota/dquot.c
@@ -3016,11 +3016,10 @@ static int __init dquot_init(void)
if (!dquot_hash)
panic("Cannot create dquot hash table");

- for (i = 0; i < _DQST_DQSTAT_LAST; i++) {
- ret = percpu_counter_init(&dqstats.counter[i], 0, GFP_KERNEL);
- if (ret)
- panic("Cannot create dquot stat counters");
- }
+ ret = percpu_counter_init_many(dqstats.counter, 0, GFP_KERNEL,
+ _DQST_DQSTAT_LAST);
+ if (ret)
+ panic("Cannot create dquot stat counters");

/* Find power-of-two hlist_heads which can fit into allocation */
nr_hash = (1UL << order) * PAGE_SIZE / sizeof(struct hlist_head);
--
2.41.0



2024-03-25 23:12:42

by Jan Kara

[permalink] [raw]
Subject: Re: [PATCH] fs: quota: use group allocation of per-cpu counters API

On Mon 25-03-24 12:12:40, Kefeng Wang wrote:
> Use group allocation of per-cpu counters api to accelerate
> dquot_init() and simplify code.
>
> Signed-off-by: Kefeng Wang <[email protected]>

Looks good. I've merged the patch to my tree. Thanks!

Honza

> ---
> fs/quota/dquot.c | 9 ++++-----
> 1 file changed, 4 insertions(+), 5 deletions(-)
>
> diff --git a/fs/quota/dquot.c b/fs/quota/dquot.c
> index dacbee455c03..808544f74e5e 100644
> --- a/fs/quota/dquot.c
> +++ b/fs/quota/dquot.c
> @@ -3016,11 +3016,10 @@ static int __init dquot_init(void)
> if (!dquot_hash)
> panic("Cannot create dquot hash table");
>
> - for (i = 0; i < _DQST_DQSTAT_LAST; i++) {
> - ret = percpu_counter_init(&dqstats.counter[i], 0, GFP_KERNEL);
> - if (ret)
> - panic("Cannot create dquot stat counters");
> - }
> + ret = percpu_counter_init_many(dqstats.counter, 0, GFP_KERNEL,
> + _DQST_DQSTAT_LAST);
> + if (ret)
> + panic("Cannot create dquot stat counters");
>
> /* Find power-of-two hlist_heads which can fit into allocation */
> nr_hash = (1UL << order) * PAGE_SIZE / sizeof(struct hlist_head);
> --
> 2.41.0
>
--
Jan Kara <[email protected]>
SUSE Labs, CR