From 4ae64a8acd7b3a856e3e8ac4ae54aaa722725553 Mon Sep 17 00:00:00 2001 From: Brian Behlendorf Date: Thu, 20 May 2010 10:06:32 -0700 Subject: [PATCH] Move from kmem_alloc() to vmem_alloc(). These two allocations are 16k in size which trips the SPL warning about large kmem_allocs(). For now simply shift them to a vmem_alloc(). Yes, this has it's own set of problems but this happens infrequently enough not to be a real issue. But more importantly it means that we've flagged this place in the code via this topic branch as a place which still needs long term work. --- module/zfs/spa.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/module/zfs/spa.c b/module/zfs/spa.c index d147b8e910..7e4f307351 100644 --- a/module/zfs/spa.c +++ b/module/zfs/spa.c @@ -3928,7 +3928,7 @@ spa_sync_nvlist(spa_t *spa, uint64_t obj, nvlist_t *nv, dmu_tx_t *tx) * saves us a pre-read to get data we don't actually care about. */ bufsize = P2ROUNDUP(nvsize, SPA_CONFIG_BLOCKSIZE); - packed = kmem_alloc(bufsize, KM_SLEEP); + packed = vmem_alloc(bufsize, KM_SLEEP); VERIFY(nvlist_pack(nv, &packed, &nvsize, NV_ENCODE_XDR, KM_SLEEP) == 0); @@ -3936,7 +3936,7 @@ spa_sync_nvlist(spa_t *spa, uint64_t obj, nvlist_t *nv, dmu_tx_t *tx) dmu_write(spa->spa_meta_objset, obj, 0, bufsize, packed, tx); - kmem_free(packed, bufsize); + vmem_free(packed, bufsize); VERIFY(0 == dmu_bonus_hold(spa->spa_meta_objset, obj, FTAG, &db)); dmu_buf_will_dirty(db, tx);