From dbd1ecc823d8f1516bfa67a795b16fbadb134f49 Mon Sep 17 00:00:00 2001
From: GatewayJ <835269233@qq.com>
Date: Sat, 7 Nov 2026 00:23:14 +0800
Subject: [PATCH 1/4] fix(s3): stream native uploads with bounded memory
---
crates/s3/src/client.rs | 238 ++++++++++++++++++++++++++++++++++++++--
vendor/rustfs-ucx | 2 +-
2 files changed, 231 insertions(+), 9 deletions(-)
diff --git a/crates/s3/src/client.rs b/crates/s3/src/client.rs
index 9ce099f..44d4f89 100644
--- a/crates/s3/src/client.rs
+++ b/crates/s3/src/client.rs
@@ -66,9 +66,9 @@ use crate::data_transport::{
DownloadRequest, ObjectDataTransport, ObservedReader, ObservedWriter, UploadOperation,
UploadRequest, UploadResult, WriteCondition,
};
-use tokio::io::AsyncReadExt;
use tokio::io::AsyncWrite;
use tokio::io::AsyncWriteExt;
+use tokio::io::{AsyncReadExt, AsyncSeekExt};
use zeroize::Zeroizing;
use crate::lifecycle_xml::{
@@ -1104,6 +1104,49 @@ fn requested_sha256_checksum(
}
}
+async fn requested_file_sha256_checksum(
+ file: &mut tokio::fs::File,
+ file_path: &std::path::Path,
+ file_size: u64,
+ request: Option<&ChecksumRequest>,
+) -> Result