use std::path::{PathBuf, Path};
use lazy_static::lazy_static;
+use proxmox::sys::error::SysError;
+
use super::manifest::MANIFEST_BLOB_NAME;
macro_rules! BACKUP_ID_RE { () => (r"[A-Za-z0-9][A-Za-z0-9_-]+") }
// backups could still take a very long time
tools::lock_file(&mut handle, true, Some(Duration::from_nanos(0)))
.map_err(|err| {
- match err.downcast_ref::<nix::Error>() {
- Some(nix::Error::Sys(nix::errno::Errno::EAGAIN)) => {
- return format_err!(
- "unable to acquire lock on backup group {:?} - another backup is already running",
- self.group_path(),
- );
- },
- _ => ()
- }
format_err!(
"unable to acquire lock on backup group {:?} - {}",
self.group_path(),
- err,
+ if err.would_block() {
+ String::from("another backup is already running")
+ } else {
+ err.to_string()
+ }
)
})?;
use percent_encoding::AsciiSet;
use proxmox::tools::vec;
+use proxmox::sys::error::SysResult;
pub use proxmox::tools::fd::Fd;
file: &mut F,
exclusive: bool,
timeout: Option<Duration>,
-) -> Result<(), Error> {
+) -> Result<(), io::Error> {
let lockarg = if exclusive {
nix::fcntl::FlockArg::LockExclusive
} else {
let timeout = match timeout {
None => {
- nix::fcntl::flock(file.as_raw_fd(), lockarg)?;
+ nix::fcntl::flock(file.as_raw_fd(), lockarg).into_io_result()?;
return Ok(());
}
Some(t) => t,
} else {
nix::fcntl::FlockArg::LockSharedNonblock
};
- nix::fcntl::flock(file.as_raw_fd(), lockarg)?;
+ nix::fcntl::flock(file.as_raw_fd(), lockarg).into_io_result()?;
return Ok(());
}
.interval(Some(Duration::from_millis(10))),
)?;
- nix::fcntl::flock(file.as_raw_fd(), lockarg)?;
+ nix::fcntl::flock(file.as_raw_fd(), lockarg).into_io_result()?;
Ok(())
}