From ad44e11a6937659d7dc7bd1785570a0d0a894534 Mon Sep 17 00:00:00 2001 From: Yuchen Liang Date: Fri, 18 Oct 2024 18:06:16 +0000 Subject: [PATCH] follow bytes::Bytes convention for AlignedBuffer Signed-off-by: Yuchen Liang --- .../src/tenant/storage_layer/inmemory_layer.rs | 2 +- .../owned_buffers_io/aligned_buffer/buffer.rs | 17 +++++++++++++++-- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/pageserver/src/tenant/storage_layer/inmemory_layer.rs b/pageserver/src/tenant/storage_layer/inmemory_layer.rs index 927b46d848..7573ddb5cc 100644 --- a/pageserver/src/tenant/storage_layer/inmemory_layer.rs +++ b/pageserver/src/tenant/storage_layer/inmemory_layer.rs @@ -823,7 +823,7 @@ impl InMemoryLayer { len, will_init, } = entry; - let buf = file_contents.slice(pos as usize, (pos + len) as usize); + let buf = file_contents.slice(pos as usize..(pos + len) as usize); let (_buf, res) = delta_layer_writer .put_value_bytes( Key::from_compact(*key), diff --git a/pageserver/src/virtual_file/owned_buffers_io/aligned_buffer/buffer.rs b/pageserver/src/virtual_file/owned_buffers_io/aligned_buffer/buffer.rs index 6b55350910..2fba6d699b 100644 --- a/pageserver/src/virtual_file/owned_buffers_io/aligned_buffer/buffer.rs +++ b/pageserver/src/virtual_file/owned_buffers_io/aligned_buffer/buffer.rs @@ -1,5 +1,5 @@ use std::{ - ops::{Deref, Range}, + ops::{Deref, Range, RangeBounds}, sync::Arc, }; @@ -49,9 +49,22 @@ impl AlignedBuffer { } /// Returns a slice of self for the index range `[begin..end)`. - pub fn slice(&self, begin: usize, end: usize) -> Self { + pub fn slice(&self, range: impl RangeBounds) -> Self { + use core::ops::Bound; let len = self.len(); + let begin = match range.start_bound() { + Bound::Included(&n) => n, + Bound::Excluded(&n) => n.checked_add(1).expect("out of range"), + Bound::Unbounded => 0, + }; + + let end = match range.end_bound() { + Bound::Included(&n) => n.checked_add(1).expect("out of range"), + Bound::Excluded(&n) => n, + Bound::Unbounded => len, + }; + assert!( begin <= end, "range start must not be greater than end: {:?} <= {:?}",