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:
parent
91979ad8ff
commit
4ae64a8acd
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue