diff options
author | Brian Behlendorf <[email protected]> | 2016-11-30 16:18:20 -0700 |
---|---|---|
committer | GitHub <[email protected]> | 2016-11-30 16:18:20 -0700 |
commit | a3fd9d9e1525d5df18b7f8c2895270689d292ec2 (patch) | |
tree | fb38211398d59ccbd9376b2e3aa52924af133255 /module/zfs/sa.c | |
parent | 7657defc48b7c47a8bf0c8f21c78783d293dc5ed (diff) |
Convert zio_buf_alloc() consumers
In multiple cases zio_buf_alloc() was used instead of kmem_alloc()
or vmem_alloc(). This was often done because the allocations
could be large and it was easy to use zfs_buf_alloc() for them.
But this isn't ideal for allocations which are small or short
lived. In these cases it is better to use kmem_alloc() or
vmem_alloc(). If possible we want to avoid the case where
we have slabs allocated for kmem caches which are rarely used.
Note for small allocations vmem_alloc() will be internally
converted to kmem_alloc(). Therefore as long as large
allocations are infrequent and short lived the penalty for
using vmem_alloc() is small.
Reviewed-by: Chunwei Chen <[email protected]>
Signed-off-by: Brian Behlendorf <[email protected]>
Closes #5409
Diffstat (limited to 'module/zfs/sa.c')
-rw-r--r-- | module/zfs/sa.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/module/zfs/sa.c b/module/zfs/sa.c index 0df3b4755..d4f412c2a 100644 --- a/module/zfs/sa.c +++ b/module/zfs/sa.c @@ -1690,7 +1690,7 @@ sa_modify_attrs(sa_handle_t *hdl, sa_attr_type_t newattr, if ((error = sa_get_spill(hdl)) == 0) { spill_data_size = hdl->sa_spill->db_size; - old_data[1] = zio_buf_alloc(spill_data_size); + old_data[1] = vmem_alloc(spill_data_size, KM_SLEEP); bcopy(hdl->sa_spill->db_data, old_data[1], hdl->sa_spill->db_size); spill_attr_count = @@ -1773,7 +1773,7 @@ sa_modify_attrs(sa_handle_t *hdl, sa_attr_type_t newattr, if (old_data[0]) kmem_free(old_data[0], bonus_data_size); if (old_data[1]) - zio_buf_free(old_data[1], spill_data_size); + vmem_free(old_data[1], spill_data_size); kmem_free(attr_desc, sizeof (sa_bulk_attr_t) * attr_count); return (error); |