Re: [PATCH 01/17] quota: allocate dquot_hash with kmalloc()
Jan Kara <[email protected]> Mon, 25 May 2026 18:10:00 +0200
| Newsgroups | org.kernel.vger.linux-nilfs,dev.linux.lists.ocfs2-devel,org.kernel.vger.linux-ext4,org.kernel.vger.linux-fsdevel,org.kernel.vger.linux-kernel,org.kernel.vger.linux-nfs,org.kvack.linux-mm |
|---|---|
| Message-ID | <xsmgh26s23da43wv6jza3dqrzhbxuetupiykjis2gkaq53yx3j@kttd6p2ba7f6> |
On Sat 23-05-26 20:54:13, Mike Rapoport (Microsoft) wrote: > dquot_init() allocates a single page for dquot_hash with > __get_free_pages(). > > kmalloc() is a better API for such use and it also provides better > scalability and more debugging possibilities. > > Replace use of __get_free_pages() with kmalloc() and get rid of the order > variable that remained 0 for more than 20 years. > > Signed-off-by: Mike Rapoport (Microsoft) <[email protected]> Thanks! I've added this patch to my tree. Honza > --- > fs/quota/dquot.c | 11 +++++------ > 1 file changed, 5 insertions(+), 6 deletions(-) > > diff --git a/fs/quota/dquot.c b/fs/quota/dquot.c > index 64cf42721496..9850de3955d3 100644 > --- a/fs/quota/dquot.c > +++ b/fs/quota/dquot.c > @@ -3022,7 +3022,7 @@ static const struct ctl_table fs_dqstats_table[] = { > static int __init dquot_init(void) > { > int i, ret; > - unsigned long nr_hash, order; > + unsigned long nr_hash; > struct shrinker *dqcache_shrinker; > > printk(KERN_NOTICE "VFS: Disk quotas %s\n", __DQUOT_VERSION__); > @@ -3035,8 +3035,7 @@ static int __init dquot_init(void) > SLAB_PANIC), > NULL); > > - order = 0; > - dquot_hash = (struct hlist_head *)__get_free_pages(GFP_KERNEL, order); > + dquot_hash = kmalloc(PAGE_SIZE, GFP_KERNEL); > if (!dquot_hash) > panic("Cannot create dquot hash table"); > > @@ -3046,7 +3045,7 @@ static int __init dquot_init(void) > 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); > + nr_hash = PAGE_SIZE / sizeof(struct hlist_head); > dq_hash_bits = ilog2(nr_hash); > > nr_hash = 1UL << dq_hash_bits; > @@ -3054,8 +3053,8 @@ static int __init dquot_init(void) > for (i = 0; i < nr_hash; i++) > INIT_HLIST_HEAD(dquot_hash + i); > > - pr_info("VFS: Dquot-cache hash table entries: %ld (order %ld," > - " %ld bytes)\n", nr_hash, order, (PAGE_SIZE << order)); > + pr_info("VFS: Dquot-cache hash table entries: %ld (%ld bytes)\n", > + nr_hash, PAGE_SIZE); > > dqcache_shrinker = shrinker_alloc(0, "dquota-cache"); > if (!dqcache_shrinker) > > -- > 2.53.0 > -- Jan Kara <[email protected]> SUSE Labs, CR