Use vmem_zalloc to silence allocation warning

The kmem allocation in zfs_prune_aliases() will trigger a large
allocation warning on systems with 64K pages.  Resolve this by
switching to vmem_alloc() which internally uses kvmalloc() so the
right allocator will be used based on the allocation size.

Reviewed-by: Richard Yao <richard.yao@alumni.stonybrook.edu>
Reviewed-by: Tino Reichardt <milky-zfs@mcmilk.de>
Reviewed-by: Brian Atkinson <batkinson@lanl.gov>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes #8491
Closes #14694
This commit is contained in:
Brian Behlendorf 2023-03-31 09:43:54 -07:00
parent e97637d484
commit 6ec3abcb59
1 changed files with 2 additions and 2 deletions

View File

@ -1192,7 +1192,7 @@ zfs_prune_aliases(zfsvfs_t *zfsvfs, unsigned long nr_to_scan)
int objects = 0; int objects = 0;
int i = 0, j = 0; int i = 0, j = 0;
zp_array = kmem_zalloc(max_array * sizeof (znode_t *), KM_SLEEP); zp_array = vmem_zalloc(max_array * sizeof (znode_t *), KM_SLEEP);
mutex_enter(&zfsvfs->z_znodes_lock); mutex_enter(&zfsvfs->z_znodes_lock);
while ((zp = list_head(&zfsvfs->z_all_znodes)) != NULL) { while ((zp = list_head(&zfsvfs->z_all_znodes)) != NULL) {
@ -1228,7 +1228,7 @@ zfs_prune_aliases(zfsvfs_t *zfsvfs, unsigned long nr_to_scan)
zrele(zp); zrele(zp);
} }
kmem_free(zp_array, max_array * sizeof (znode_t *)); vmem_free(zp_array, max_array * sizeof (znode_t *));
return (objects); return (objects);
} }