[pbs-devel] [PATCH proxmox-backup v3 05/24] add helper for checking if a removable datastore is available
Hannes Laimer
h.laimer at proxmox.com
Tue Apr 9 12:59:53 CEST 2024
Signed-off-by: Hannes Laimer <h.laimer at proxmox.com>
---
pbs-datastore/src/datastore.rs | 18 ++++++++++++++++++
pbs-datastore/src/lib.rs | 2 +-
2 files changed, 19 insertions(+), 1 deletion(-)
diff --git a/pbs-datastore/src/datastore.rs b/pbs-datastore/src/datastore.rs
index 0685cc84..db47205c 100644
--- a/pbs-datastore/src/datastore.rs
+++ b/pbs-datastore/src/datastore.rs
@@ -49,6 +49,22 @@ pub fn check_backup_owner(owner: &Authid, auth_id: &Authid) -> Result<(), Error>
Ok(())
}
+pub fn check_if_available(config: &DataStoreConfig) -> Result<(), Error> {
+ config.backing_device.as_ref().map_or(Ok(()), |uuid| {
+ let mut command = std::process::Command::new("findmnt");
+ command.args(["-n", "-o", "TARGET", "--source", &format!("UUID={uuid}")]);
+
+ match proxmox_sys::command::run_command(command, None) {
+ Ok(mount_point) if mount_point.trim_end() == config.path => Ok(()),
+ _ => Err(format_err!(
+ "device for datastore '{}' has to be mounted at '{}'",
+ config.name,
+ config.path
+ )),
+ }
+ })
+}
+
/// Datastore Management
///
/// A Datastore can store severals backups, and provides the
@@ -261,6 +277,8 @@ impl DataStore {
) -> Result<Arc<Self>, Error> {
let name = config.name.clone();
+ check_if_available(&config)?;
+
let tuning: DatastoreTuning = serde_json::from_value(
DatastoreTuning::API_SCHEMA
.parse_property_string(config.tuning.as_deref().unwrap_or(""))?,
diff --git a/pbs-datastore/src/lib.rs b/pbs-datastore/src/lib.rs
index 43050162..f5e93e92 100644
--- a/pbs-datastore/src/lib.rs
+++ b/pbs-datastore/src/lib.rs
@@ -206,7 +206,7 @@ pub use manifest::BackupManifest;
pub use store_progress::StoreProgress;
mod datastore;
-pub use datastore::{check_backup_owner, DataStore};
+pub use datastore::{check_backup_owner, check_if_available, DataStore};
mod hierarchy;
pub use hierarchy::{
--
2.39.2
More information about the pbs-devel
mailing list