From 304c3480df84523cf649b4359203daf9d3ca16f2 Mon Sep 17 00:00:00 2001 From: Darren Yu Date: Thu, 16 Jul 2026 00:26:19 +0800 Subject: [PATCH 1/3] fix(upload): set concurrent chunk upload to 1 when disk pre-allocation is disabled --- pkg/filemanager/driver/local/local.go | 4 ++++ pkg/filemanager/driver/remote/remote.go | 6 ++++++ 2 files changed, 10 insertions(+) diff --git a/pkg/filemanager/driver/local/local.go b/pkg/filemanager/driver/local/local.go index 172effb8..3efb081e 100644 --- a/pkg/filemanager/driver/local/local.go +++ b/pkg/filemanager/driver/local/local.go @@ -226,6 +226,10 @@ func (handler *Driver) Token(ctx context.Context, uploadSession *fs.UploadSessio if err := Fallocate(f, 0, uploadSession.Props.Size); err != nil { handler.l.Warning("Failed to preallocate file: %s", err) } + } else { + // When disk pre-allocation is disabled, concurrent chunk uploads must be 1 + // to avoid disk fragmentation and write contention on local storage. + handler.Policy.Settings.ChunkConcurrency = 1 } return &fs.UploadCredential{ diff --git a/pkg/filemanager/driver/remote/remote.go b/pkg/filemanager/driver/remote/remote.go index 42b2b1af..7aeae5d5 100644 --- a/pkg/filemanager/driver/remote/remote.go +++ b/pkg/filemanager/driver/remote/remote.go @@ -150,6 +150,12 @@ func (handler *Driver) Token(ctx context.Context, uploadSession *fs.UploadSessio return nil, fmt.Errorf("failed to sign upload url: %w", err) } + // When disk pre-allocation is disabled, concurrent chunk uploads must be 1 + // to avoid disk fragmentation and write contention on slave storage. + if !handler.Policy.Settings.PreAllocate { + handler.Policy.Settings.ChunkConcurrency = 1 + } + return &fs.UploadCredential{ SessionID: uploadSession.Props.UploadSessionID, ChunkSize: handler.Policy.Settings.ChunkSize, From d5e0fc3bc820a98604adc3e31ee35b576cc62e48 Mon Sep 17 00:00:00 2001 From: Darren Yu Date: Thu, 16 Jul 2026 00:34:12 +0800 Subject: [PATCH 2/3] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- pkg/filemanager/driver/remote/remote.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pkg/filemanager/driver/remote/remote.go b/pkg/filemanager/driver/remote/remote.go index 7aeae5d5..cc0b89fa 100644 --- a/pkg/filemanager/driver/remote/remote.go +++ b/pkg/filemanager/driver/remote/remote.go @@ -153,7 +153,9 @@ func (handler *Driver) Token(ctx context.Context, uploadSession *fs.UploadSessio // When disk pre-allocation is disabled, concurrent chunk uploads must be 1 // to avoid disk fragmentation and write contention on slave storage. if !handler.Policy.Settings.PreAllocate { - handler.Policy.Settings.ChunkConcurrency = 1 + settings := *handler.Policy.Settings + settings.ChunkConcurrency = 1 + handler.Policy.Settings = &settings } return &fs.UploadCredential{ From ac5ae6db2ed2a860466ee4eeed10c748efd52783 Mon Sep 17 00:00:00 2001 From: Darren Yu Date: Thu, 16 Jul 2026 00:35:23 +0800 Subject: [PATCH 3/3] Potential fix for pull request finding --- pkg/filemanager/driver/local/local.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pkg/filemanager/driver/local/local.go b/pkg/filemanager/driver/local/local.go index 3efb081e..33f6ea93 100644 --- a/pkg/filemanager/driver/local/local.go +++ b/pkg/filemanager/driver/local/local.go @@ -229,7 +229,9 @@ func (handler *Driver) Token(ctx context.Context, uploadSession *fs.UploadSessio } else { // When disk pre-allocation is disabled, concurrent chunk uploads must be 1 // to avoid disk fragmentation and write contention on local storage. - handler.Policy.Settings.ChunkConcurrency = 1 + settings := *handler.Policy.Settings + settings.ChunkConcurrency = 1 + handler.Policy.Settings = &settings } return &fs.UploadCredential{