mirror of
https://git.proxmox.com/git/proxmox-backup
synced 2025-04-29 04:24:07 +00:00
fix #5853: client: pxar: exclude stale files on metadata/link read
Skip and warn the user for files which returned a stale file handle error while reading the metadata associated to that file, or the target in case of a symbolic link. Instead of returning with a hard error, report the stale file handle and skip over encoding this file entry in the pxar archive. Link to issue in bugtracker: https://bugzilla.proxmox.com/show_bug.cgi?id=5853 Link to thread in community forum: https://forum.proxmox.com/threads/156822/ Signed-off-by: Christian Ebner <c.ebner@proxmox.com>
This commit is contained in:
parent
efb49d8abe
commit
e3f2756cbb
@ -740,14 +740,23 @@ impl Archiver {
|
||||
None => return Ok(()),
|
||||
};
|
||||
|
||||
let metadata = get_metadata(
|
||||
let metadata = match get_metadata(
|
||||
fd.as_raw_fd(),
|
||||
stat,
|
||||
self.flags(),
|
||||
self.fs_magic,
|
||||
&mut self.fs_feature_flags,
|
||||
self.skip_e2big_xattr,
|
||||
)?;
|
||||
) {
|
||||
Ok(metadata) => metadata,
|
||||
Err(err) => {
|
||||
if let Some(Errno::ESTALE) = err.downcast_ref::<Errno>() {
|
||||
self.report_stale_file_handle(None);
|
||||
return Ok(());
|
||||
}
|
||||
return Err(err);
|
||||
}
|
||||
};
|
||||
|
||||
if self.previous_payload_index.is_none() {
|
||||
return self
|
||||
@ -1294,7 +1303,14 @@ impl Archiver {
|
||||
file_name: &Path,
|
||||
metadata: &Metadata,
|
||||
) -> Result<(), Error> {
|
||||
let dest = nix::fcntl::readlinkat(fd.as_raw_fd(), &b""[..])?;
|
||||
let dest = match nix::fcntl::readlinkat(fd.as_raw_fd(), &b""[..]) {
|
||||
Ok(dest) => dest,
|
||||
Err(Errno::ESTALE) => {
|
||||
self.report_stale_file_handle(None);
|
||||
return Ok(());
|
||||
}
|
||||
Err(err) => return Err(err.into()),
|
||||
};
|
||||
encoder.add_symlink(metadata, file_name, dest).await?;
|
||||
Ok(())
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user