Skip to content

Commit

Permalink
Use vmem_alloc() for nvlists
Browse files Browse the repository at this point in the history
Several of the nvlist functions may perform allocations larger than
the 32k warning threshold.  Convert them to use vmem_alloc() so the
best allocation is used.

Commit efcd79a retired KM_NODEBUG which was used to suppress large
allocation warnings.  Concurrently in the SPL the warning threshold
was increased from 8k to 32k.  The goal was to identify the remaining
locations, such as this one, where the allocation can be larger than
32k.  This was expected fine tuning for the kmem-rework changes, see
commit 6e9710f.

Signed-off-by: Brian Behlendorf <[email protected]>
Issue openzfs#3057
  • Loading branch information
behlendorf committed Feb 5, 2015
1 parent 53698a4 commit b7fed6e
Show file tree
Hide file tree
Showing 2 changed files with 5 additions and 4 deletions.
5 changes: 3 additions & 2 deletions module/nvpair/nvpair_alloc_spl.c
Original file line number Diff line number Diff line change
Expand Up @@ -26,17 +26,18 @@

#include <sys/nvpair.h>
#include <sys/kmem.h>
#include <sys/vmem.h>

static void *
nv_alloc_sleep_spl(nv_alloc_t *nva, size_t size)
{
return (kmem_alloc(size, KM_SLEEP));
return (vmem_alloc(size, KM_SLEEP));
}

static void *
nv_alloc_pushpage_spl(nv_alloc_t *nva, size_t size)
{
return (kmem_alloc(size, KM_PUSHPAGE));
return (vmem_alloc(size, KM_PUSHPAGE));
}

static void *
Expand Down
4 changes: 2 additions & 2 deletions module/zfs/spa.c
Original file line number Diff line number Diff line change
Expand Up @@ -1586,12 +1586,12 @@ load_nvlist(spa_t *spa, uint64_t obj, nvlist_t **value)
nvsize = *(uint64_t *)db->db_data;
dmu_buf_rele(db, FTAG);

packed = kmem_alloc(nvsize, KM_SLEEP);
packed = vmem_alloc(nvsize, KM_SLEEP);
error = dmu_read(spa->spa_meta_objset, obj, 0, nvsize, packed,
DMU_READ_PREFETCH);
if (error == 0)
error = nvlist_unpack(packed, nvsize, value, 0);
kmem_free(packed, nvsize);
vmem_free(packed, nvsize);

return (error);
}
Expand Down

0 comments on commit b7fed6e

Please sign in to comment.