From 3012119b818fac40b9fee26e01de99b438b954ad Mon Sep 17 00:00:00 2001 From: LeonWang0735 Date: Sat, 17 Jan 2026 19:24:44 +0800 Subject: [PATCH] optimize:replace size magic number -1 with SIZE_TRANSFORMED constant (#1542) --- crates/rio/src/hash_reader.rs | 5 ++++- rustfs/src/storage/ecfs.rs | 10 +++++----- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/crates/rio/src/hash_reader.rs b/crates/rio/src/hash_reader.rs index bb1588c5b..0ca1d07d1 100644 --- a/crates/rio/src/hash_reader.rs +++ b/crates/rio/src/hash_reader.rs @@ -161,6 +161,8 @@ pin_project! { } impl HashReader { + /// Used for transformation layers (compression/encryption) + pub const SIZE_PRESERVE_LAYER: i64 = -1; pub fn new( mut inner: Box, size: i64, @@ -169,7 +171,8 @@ impl HashReader { sha256hex: Option, diskable_md5: bool, ) -> std::io::Result { - if size >= 0 + // Get the innermost HashReader + if size != Self::SIZE_PRESERVE_LAYER && let Some(existing_hash_reader) = inner.as_hash_reader_mut() { if existing_hash_reader.bytes_read() > 0 { diff --git a/rustfs/src/storage/ecfs.rs b/rustfs/src/storage/ecfs.rs index d73de5e2c..e2c3cf81b 100644 --- a/rustfs/src/storage/ecfs.rs +++ b/rustfs/src/storage/ecfs.rs @@ -670,7 +670,7 @@ impl FS { let hrd = HashReader::new(reader, size, actual_size, None, None, false).map_err(ApiError::from)?; reader = Box::new(CompressReader::new(hrd, CompressionAlgorithm::default())); - size = -1; + size = HashReader::SIZE_PRESERVE_LAYER; } let hrd = HashReader::new(reader, size, actual_size, None, None, false).map_err(ApiError::from)?; @@ -1222,7 +1222,7 @@ impl S3 for FS { // let hrd = HashReader::new(reader, length, actual_size, None, false).map_err(ApiError::from)?; reader = Box::new(CompressReader::new(hrd, CompressionAlgorithm::default())); - length = -1; + length = HashReader::SIZE_PRESERVE_LAYER; } else { src_info .user_defined @@ -3699,7 +3699,7 @@ impl S3 for FS { opts.want_checksum = hrd.checksum(); reader = Box::new(CompressReader::new(hrd, CompressionAlgorithm::default())); - size = -1; + size = HashReader::SIZE_PRESERVE_LAYER; md5hex = None; sha256hex = None; } @@ -4211,7 +4211,7 @@ impl S3 for FS { let compress_reader = CompressReader::new(hrd, CompressionAlgorithm::default()); reader = Box::new(compress_reader); - size = -1; + size = HashReader::SIZE_PRESERVE_LAYER; md5hex = None; sha256hex = None; } @@ -4439,7 +4439,7 @@ impl S3 for FS { if is_compressible { let hrd = HashReader::new(reader, size, actual_size, None, None, false).map_err(ApiError::from)?; reader = Box::new(CompressReader::new(hrd, CompressionAlgorithm::default())); - size = -1; + size = HashReader::SIZE_PRESERVE_LAYER; } let mut reader = HashReader::new(reader, size, actual_size, None, None, false).map_err(ApiError::from)?;