mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2026-05-22 02:27:36 +03:00
Avoid small buffer copying on write
It is wrong for arc_write_ready() to use zfs_abd_scatter_enabled to decide whether to reallocate/copy the buffer, because the answer is OS-specific and depends on the buffer size. Instead of that use abd_size_alloc_linear(), moved into public header. Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Reviewed-by: Brian Atkinson <batkinson@lanl.gov> Signed-off-by: Alexander Motin <mav@FreeBSD.org> Closes #12425
This commit is contained in:
@@ -132,7 +132,7 @@ abd_scatter_chunkcnt(abd_t *abd)
|
||||
boolean_t
|
||||
abd_size_alloc_linear(size_t size)
|
||||
{
|
||||
return (size < zfs_abd_scatter_min_size ? B_TRUE : B_FALSE);
|
||||
return (!zfs_abd_scatter_enabled || size < zfs_abd_scatter_min_size);
|
||||
}
|
||||
|
||||
void
|
||||
|
||||
@@ -632,7 +632,7 @@ abd_alloc_zero_scatter(void)
|
||||
boolean_t
|
||||
abd_size_alloc_linear(size_t size)
|
||||
{
|
||||
return (size < zfs_abd_scatter_min_size ? B_TRUE : B_FALSE);
|
||||
return (!zfs_abd_scatter_enabled || size < zfs_abd_scatter_min_size);
|
||||
}
|
||||
|
||||
void
|
||||
|
||||
Reference in New Issue
Block a user