From 3eeeaad648a2d307c2145fadf54d5102acd04b61 Mon Sep 17 00:00:00 2001 From: Matthew Ahrens Date: Tue, 5 Oct 2021 08:53:21 -0700 Subject: [PATCH] buffer is 4x needed size (#486) I noticed that these Vec's default to Vec, so their size in bytes is 4x their .len(). We only need "len" bytes, so this is allocating and zeroing out 4x the data that we need. Change it to be Vec --- cmd/zfs_object_agent/zettacache/src/block_access.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cmd/zfs_object_agent/zettacache/src/block_access.rs b/cmd/zfs_object_agent/zettacache/src/block_access.rs index e2a14357d97f..da88be64e5b7 100644 --- a/cmd/zfs_object_agent/zettacache/src/block_access.rs +++ b/cmd/zfs_object_agent/zettacache/src/block_access.rs @@ -143,7 +143,7 @@ impl BlockAccess { let begin = Instant::now(); let _permit = self.outstanding_reads.acquire().await.unwrap(); let vec = tokio::task::spawn_blocking(move || { - let mut v = Vec::new(); + let mut v: Vec = Vec::new(); // XXX use unsafe code to avoid double initializing it? // XXX directio requires the pointer to be sector-aligned, requiring this grossness v.resize(usize::from64(extent.size) + sector_size, 0); @@ -184,7 +184,7 @@ impl BlockAccess { let begin = Instant::now(); let _permit = self.outstanding_writes.acquire().await.unwrap(); tokio::task::spawn_blocking(move || { - let mut v = Vec::new(); + let mut v: Vec = Vec::new(); // XXX directio requires the pointer to be sector-aligned, requiring this grossness v.resize(length + sector_size, 0); let aligned = unsafe {