5
0
mirror of git://git.proxmox.com/git/proxmox-backup.git synced 2025-01-05 09:17:59 +03:00

client: pxar: skip directory entries on stale file handle

Skip over the entries when a stale file handle is encountered during
generation of the entry list of a directory entry.

This will lead to the directory not being backed up if the directory
itself was invalidated, as then reading all child entries will fail
also, or the directory is backed up without entries which have been
invalidated.

Signed-off-by: Christian Ebner <c.ebner@proxmox.com>
This commit is contained in:
Christian Ebner 2024-11-14 15:41:12 +01:00 committed by Fabian Grünbichler
parent 1b9df4ba4f
commit 102ab18146

View File

@ -641,15 +641,30 @@ impl Archiver {
}
Ok(_) => (),
Err(err) if err.not_found() => continue,
Err(Errno::ESTALE) => {
self.report_stale_file_handle(Some(&full_path));
continue;
}
Err(err) => {
return Err(err).with_context(|| format!("stat failed on {full_path:?}"))
}
}
let stat = stat_results
.map(Ok)
.unwrap_or_else(get_file_mode)
.with_context(|| format!("stat failed on {full_path:?}"))?;
let stat = match stat_results {
Some(mode) => mode,
None => match get_file_mode() {
Ok(mode) => mode,
Err(Errno::ESTALE) => {
self.report_stale_file_handle(Some(&full_path));
continue;
}
Err(err) => {
return Err(
Error::from(err).context(format!("stat failed on {full_path:?}"))
)
}
},
};
self.entry_counter += 1;
if self.entry_counter > self.entry_limit {