fix: improve part size calculation in optimal_part_info function (#1532)

Signed-off-by: mengyu-sxyz <mengyu@sentio.xyz>
Co-authored-by: loverustfs <hello@rustfs.com>
Co-authored-by: houseme <housemecn@gmail.com>
Co-authored-by: heihutu <30542132+heihutu@users.noreply.github.com>
This commit is contained in:
mengyu-sxyz
2026-02-10 10:56:47 +08:00
committed by GitHub
parent ccf3b29df5
commit aa011ade19
@@ -87,14 +87,14 @@ pub fn optimal_part_info(object_size: i64, configured_part_size: u64) -> Result<
object_size = configured_part_size as i64 * MAX_PARTS_COUNT;
}
} else {
let mut configured_part_size = configured_part_size;
configured_part_size = MIN_PART_SIZE as u64;
part_size_flt = (object_size / MAX_PARTS_COUNT) as f64;
part_size_flt = (part_size_flt / configured_part_size as f64) * configured_part_size as f64;
let min_part = MIN_PART_SIZE as f64;
part_size_flt = (object_size as f64 / MAX_PARTS_COUNT as f64).ceil();
part_size_flt = part_size_flt.max(min_part);
part_size_flt = (part_size_flt / min_part).ceil() * min_part;
}
let total_parts_count = (object_size as f64 / part_size_flt).ceil() as i64;
let part_size = part_size_flt.ceil() as i64;
let part_size = part_size_flt as i64;
let last_part_size = object_size - (total_parts_count - 1) * part_size;
Ok((total_parts_count, part_size, last_part_size))
}