mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2025-05-03 15:32:43 +03:00
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.
This commit is contained in:
parent
3613204cd7
commit
34b84cb831
@ -1441,7 +1441,7 @@ zfs_ioc_pool_get_history(zfs_cmd_t *zc)
|
|||||||
return (ENOTSUP);
|
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,
|
if ((error = spa_history_get(spa, &zc->zc_history_offset,
|
||||||
&zc->zc_history_len, hist_buf)) == 0) {
|
&zc->zc_history_len, hist_buf)) == 0) {
|
||||||
error = ddi_copyout(hist_buf,
|
error = ddi_copyout(hist_buf,
|
||||||
@ -1450,7 +1450,7 @@ zfs_ioc_pool_get_history(zfs_cmd_t *zc)
|
|||||||
}
|
}
|
||||||
|
|
||||||
spa_close(spa, FTAG);
|
spa_close(spa, FTAG);
|
||||||
kmem_free(hist_buf, size);
|
vmem_free(hist_buf, size);
|
||||||
return (error);
|
return (error);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user