From: Brian Behlendorf Date: Fri, 6 May 2011 16:59:52 +0000 (-0700) Subject: Use vmem_alloc() for zfs_ioc_pool_get_history() X-Git-Tag: zfs-0.6.0-rc5~70 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=34b84cb831695b276788493048ea34f8af8d5bdf;p=zfs Use vmem_alloc() for zfs_ioc_pool_get_history() The default buffer size when requesting history is 128k. This is far to large for a kmem_alloc() so instead use the slower vmem_alloc(). This path has no performance concerns and the buffer is immediately free'd after its contents are copied to the user space buffer. --- diff --git a/module/zfs/zfs_ioctl.c b/module/zfs/zfs_ioctl.c index edfda7656..cb423e8b8 100644 --- a/module/zfs/zfs_ioctl.c +++ b/module/zfs/zfs_ioctl.c @@ -1441,7 +1441,7 @@ zfs_ioc_pool_get_history(zfs_cmd_t *zc) return (ENOTSUP); } - hist_buf = kmem_alloc(size, KM_SLEEP); + hist_buf = vmem_alloc(size, KM_SLEEP); if ((error = spa_history_get(spa, &zc->zc_history_offset, &zc->zc_history_len, hist_buf)) == 0) { error = ddi_copyout(hist_buf, @@ -1450,7 +1450,7 @@ zfs_ioc_pool_get_history(zfs_cmd_t *zc) } spa_close(spa, FTAG); - kmem_free(hist_buf, size); + vmem_free(hist_buf, size); return (error); }