From 45ee5c639232768394c9e814d60b55f9a43c5884 Mon Sep 17 00:00:00 2001 From: George Miao Date: Thu, 6 Jun 2024 00:59:31 +0900 Subject: [PATCH] adapt to new `oio::Read` --- core/src/services/compfs/backend.rs | 4 ++-- core/src/services/compfs/reader.rs | 18 ++++++++++-------- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/core/src/services/compfs/backend.rs b/core/src/services/compfs/backend.rs index a930de69989f..7105cbffa5d9 100644 --- a/core/src/services/compfs/backend.rs +++ b/core/src/services/compfs/backend.rs @@ -97,7 +97,7 @@ impl Access for CompfsBackend { am } - async fn read(&self, path: &str, _: OpRead) -> Result<(RpRead, Self::Reader)> { + async fn read(&self, path: &str, op: OpRead) -> Result<(RpRead, Self::Reader)> { let path = self.core.root.join(path.trim_end_matches('/')); let file = self @@ -105,7 +105,7 @@ impl Access for CompfsBackend { .exec(|| async move { compio::fs::OpenOptions::new().read(true).open(&path).await }) .await?; - let r = CompfsReader::new(self.core.clone(), file); + let r = CompfsReader::new(self.core.clone(), file, op.range()); Ok((RpRead::new(), r)) } diff --git a/core/src/services/compfs/reader.rs b/core/src/services/compfs/reader.rs index 8800aa764f7d..758c110894db 100644 --- a/core/src/services/compfs/reader.rs +++ b/core/src/services/compfs/reader.rs @@ -26,25 +26,27 @@ use crate::*; #[derive(Debug)] pub struct CompfsReader { core: Arc, - f: compio::fs::File, + file: compio::fs::File, + range: BytesRange, } impl CompfsReader { - pub fn new(core: Arc, f: compio::fs::File) -> Self { - Self { core, f } + pub fn new(core: Arc, file: compio::fs::File, range: BytesRange) -> Self { + Self { core, file, range } } } impl oio::Read for CompfsReader { - async fn read_at(&self, offset: u64, limit: usize) -> Result { + async fn read(&mut self) -> Result { let mut bs = self.core.buf_pool.get(); - bs.reserve(limit); - let f = self.f.clone(); + + let len = self.range.size().expect("range size is always Some"); + bs.reserve(len as _); + let f = self.file.clone(); let mut bs = self .core .exec(move || async move { - let (_, bs) = buf_try!(@try f.read_at(bs, offset).await); - + let (_, bs) = buf_try!(@try f.read_at(bs, len).await); Ok(bs) }) .await?;