From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by lists.proxmox.com (Postfix) with ESMTPS id 1E9AA69583 for ; Thu, 6 Aug 2020 06:45:28 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 12A901998F for ; Thu, 6 Aug 2020 06:45:28 +0200 (CEST) Received: from proxmox-new.maurer-it.com (proxmox-new.maurer-it.com [212.186.127.180]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by firstgate.proxmox.com (Proxmox) with ESMTPS id 2996319982 for ; Thu, 6 Aug 2020 06:45:27 +0200 (CEST) Received: from proxmox-new.maurer-it.com (localhost.localdomain [127.0.0.1]) by proxmox-new.maurer-it.com (Proxmox) with ESMTP id E0E1243788 for ; Thu, 6 Aug 2020 06:45:26 +0200 (CEST) Date: Thu, 6 Aug 2020 06:45:16 +0200 (CEST) From: Dietmar Maurer To: Proxmox Backup Server development discussion , Stefan Reiter Message-ID: <1066958979.400.1596689116942@webmail.proxmox.com> In-Reply-To: <20200804104205.29540-3-s.reiter@proxmox.com> References: <20200804104205.29540-1-s.reiter@proxmox.com> <20200804104205.29540-3-s.reiter@proxmox.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Priority: 3 Importance: Normal X-Mailer: Open-Xchange Mailer v7.10.3-Rev19 X-Originating-Client: open-xchange-appsuite X-SPAM-LEVEL: Spam detection results: 0 AWL 0.101 Adjusted score from AWL reputation of From: address KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment RCVD_IN_DNSWL_MED -2.3 Sender listed at https://www.dnswl.org/, medium trust SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record Subject: Re: [pbs-devel] [PATCH proxmox-backup 2/7] backup: only allow finished backups as base snapshot X-BeenThere: pbs-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox Backup Server development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 06 Aug 2020 04:45:28 -0000 This break the assumption that the current backup only reference junks from the previous one. Instead, we can simply fail if the previous backup is not complete yet? > On 08/04/2020 12:42 PM Stefan Reiter wrote: > > > If the datastore holds broken backups for some reason, do not attempt to > base following snapshots on those. This would lead to an error on > /previous, leaving the client no choice but to upload all chunks, even > though there might be potential for incremental savings. > > Signed-off-by: Stefan Reiter > --- > src/api2/backup.rs | 2 +- > src/backup/backup_info.rs | 8 ++++++-- > 2 files changed, 7 insertions(+), 3 deletions(-) > > diff --git a/src/api2/backup.rs b/src/api2/backup.rs > index ad13faa5..aafea8fa 100644 > --- a/src/api2/backup.rs > +++ b/src/api2/backup.rs > @@ -97,7 +97,7 @@ async move { > bail!("backup owner check failed ({} != {})", username, owner); > } > > - let last_backup = BackupInfo::last_backup(&datastore.base_path(), &backup_group).unwrap_or(None); > + let last_backup = BackupInfo::last_backup(&datastore.base_path(), &backup_group, true).unwrap_or(None); > let backup_dir = BackupDir::new_with_group(backup_group.clone(), backup_time); > > if let Some(last) = &last_backup { > diff --git a/src/backup/backup_info.rs b/src/backup/backup_info.rs > index 37dc7aa1..ea917d3c 100644 > --- a/src/backup/backup_info.rs > +++ b/src/backup/backup_info.rs > @@ -313,9 +313,13 @@ impl BackupInfo { > } > > /// Finds the latest backup inside a backup group > - pub fn last_backup(base_path: &Path, group: &BackupGroup) -> Result, Error> { > + pub fn last_backup(base_path: &Path, group: &BackupGroup, only_finished: bool) > + -> Result, Error> > + { > let backups = group.list_backups(base_path)?; > - Ok(backups.into_iter().max_by_key(|item| item.backup_dir.backup_time())) > + Ok(backups.into_iter() > + .filter(|item| !only_finished || item.is_finished()) > + .max_by_key(|item| item.backup_dir.backup_time())) > } > > pub fn sort_list(list: &mut Vec, ascendending: bool) { > -- > 2.20.1 > > > > _______________________________________________ > pbs-devel mailing list > pbs-devel@lists.proxmox.com > https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel