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.
This commit is contained in:
Brian Behlendorf 2010-05-20 10:06:32 -07:00
parent 91979ad8ff
commit 4ae64a8acd
1 changed files with 2 additions and 2 deletions

View File

@ -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);