diff --git a/s3/s3.go b/s3/s3.go index 53eabd3be..d1914d46a 100644 --- a/s3/s3.go +++ b/s3/s3.go @@ -761,6 +761,14 @@ func (o *Object) Update(in io.Reader, src fs.ObjectInfo) error { u.Concurrency = 2 u.LeavePartsOnError = false u.S3 = o.fs.c + u.PartSize = s3manager.MinUploadPartSize + size := src.Size() + + // Adjust PartSize until the number of parts is small enough. + if size/u.PartSize >= s3manager.MaxUploadParts { + // Calculate partition size rounded up to the nearest MB + u.PartSize = (((size / s3manager.MaxUploadParts) >> 20) + 1) << 20 + } }) // Set the mtime in the meta data