[pbs-devel] [PATCH v3 proxmox-backup 3/5] fix #3847: api: backup: make fixed index file size optional
Fabian Grünbichler
f.gruenbichler at proxmox.com
Wed Jan 14 14:13:30 CET 2026
On January 9, 2026 6:35 pm, Robert Obkircher wrote:
> Grow the FixedIndexWriter as necessary and update the duplicate size
> in BackupEnvironment.
>
> Signed-off-by: Robert Obkircher <r.obkircher at proxmox.com>
> ---
> src/api2/backup/environment.rs | 8 ++++++--
> src/api2/backup/mod.rs | 4 ++--
> 2 files changed, 8 insertions(+), 4 deletions(-)
>
> diff --git a/src/api2/backup/environment.rs b/src/api2/backup/environment.rs
> index bd9c5211..77361724 100644
> --- a/src/api2/backup/environment.rs
> +++ b/src/api2/backup/environment.rs
> @@ -349,7 +349,7 @@ impl BackupEnvironment {
> &self,
> index: FixedIndexWriter,
> name: String,
> - size: usize,
> + size: Option<usize>,
> chunk_size: u32,
> incremental: bool,
> ) -> Result<usize, Error> {
> @@ -365,7 +365,7 @@ impl BackupEnvironment {
> index,
> name,
> chunk_count: 0,
> - size,
> + size: size.unwrap_or(0),
would make more sense IMHO to keep this as an option, to signify this is
a known_size/not-growable index
> chunk_size,
> small_chunk_count: 0,
> upload_stat: UploadStatistic::new(),
> @@ -443,7 +443,11 @@ impl BackupEnvironment {
> }
>
> let end = (offset as usize) + (size as usize);
> + data.index.grow_to_size(end)?;
> let idx = data.index.check_chunk_alignment(end, size as usize)?;
> + if end > data.size {
> + data.size = end;
> + }
and drop this, but make index.size accessible via a getter, and then
checking both:
index.size is as submitted by the client (ensures the growing happened
correctly on both sides)
data.size is as submitted by the client, if set (this is the existing
check, just accounting for it now being optional)
when closing the writer here..
>
> data.chunk_count += 1;
>
> diff --git a/src/api2/backup/mod.rs b/src/api2/backup/mod.rs
> index 3e6b7a95..c2822c18 100644
> --- a/src/api2/backup/mod.rs
> +++ b/src/api2/backup/mod.rs
> @@ -456,7 +456,7 @@ pub const API_METHOD_CREATE_FIXED_INDEX: ApiMethod = ApiMethod::new(
> ("archive-name", false, &BACKUP_ARCHIVE_NAME_SCHEMA),
> (
> "size",
> - false,
> + true,
> &IntegerSchema::new("File size.").minimum(1).schema()
> ),
> (
> @@ -480,7 +480,7 @@ fn create_fixed_index(
> let env: &BackupEnvironment = rpcenv.as_ref();
>
> let name = required_string_param(¶m, "archive-name")?.to_owned();
> - let size = required_integer_param(¶m, "size")? as usize;
> + let size = param["size"].as_u64().map(usize::try_from).transpose()?;
> let reuse_csum = param["reuse-csum"].as_str();
>
> let archive_name = name.clone();
> --
> 2.47.3
>
>
>
> _______________________________________________
> pbs-devel mailing list
> pbs-devel at lists.proxmox.com
> https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel
>
>
>
More information about the pbs-devel
mailing list