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:
parent
1b9df4ba4f
commit
102ab18146
@ -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 {
|
||||
|
Loading…
Reference in New Issue
Block a user