Use vmem_alloc() for 128K allocation

The mzap_update() function allocates enough memory for a full
dbuf which can be 128K in size.  Ideally, this memory should
be allocated from our slab but in the short term it's simplest
just to vmem_alloc() the memory instead.

Closes #48
This commit is contained in:
Brian Behlendorf 2010-08-11 11:04:42 -07:00
parent ebc64a43c3
commit 0d95a031bc
1 changed files with 3 additions and 3 deletions

View File

@ -532,7 +532,7 @@ mzap_upgrade(zap_t **zapp, dmu_tx_t *tx, zap_flags_t flags)
ASSERT(RW_WRITE_HELD(&zap->zap_rwlock)); ASSERT(RW_WRITE_HELD(&zap->zap_rwlock));
sz = zap->zap_dbuf->db_size; sz = zap->zap_dbuf->db_size;
mzp = kmem_alloc(sz, KM_SLEEP); mzp = vmem_alloc(sz, KM_SLEEP);
bcopy(zap->zap_dbuf->db_data, mzp, sz); bcopy(zap->zap_dbuf->db_data, mzp, sz);
nchunks = zap->zap_m.zap_num_chunks; nchunks = zap->zap_m.zap_num_chunks;
@ -540,7 +540,7 @@ mzap_upgrade(zap_t **zapp, dmu_tx_t *tx, zap_flags_t flags)
err = dmu_object_set_blocksize(zap->zap_objset, zap->zap_object, err = dmu_object_set_blocksize(zap->zap_objset, zap->zap_object,
1ULL << fzap_default_block_shift, 0, tx); 1ULL << fzap_default_block_shift, 0, tx);
if (err) { if (err) {
kmem_free(mzp, sz); vmem_free(mzp, sz);
return (err); return (err);
} }
} }
@ -566,7 +566,7 @@ mzap_upgrade(zap_t **zapp, dmu_tx_t *tx, zap_flags_t flags)
if (err) if (err)
break; break;
} }
kmem_free(mzp, sz); vmem_free(mzp, sz);
*zapp = zap; *zapp = zap;
return (err); return (err);
} }