From 353711199e5dd628793f3f14acaffda62a28c571 Mon Sep 17 00:00:00 2001 From: Fiona Ebner Date: Wed, 27 Nov 2024 16:06:58 +0100 Subject: [PATCH] api: disks: directory: fail if mount unit already exists Without this check, if a mount unit is present, but the file system is not mounted, it will just get overwritten. The unit might belong to an existing datastore. There already is a check against a duplicate datastore, but only after the mount unit is already overwritten and having the add-datastore flag present is not a precondition to trigger the issue. The check is done even if the newly created directory datastore is removable. While in that case, the mount unit is not overwritten, the conflict for the mount point is still present, so it is nice to fail early. Signed-off-by: Fiona Ebner --- src/api2/node/disks/directory.rs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/api2/node/disks/directory.rs b/src/api2/node/disks/directory.rs index 57add02b..0348f530 100644 --- a/src/api2/node/disks/directory.rs +++ b/src/api2/node/disks/directory.rs @@ -204,6 +204,11 @@ pub fn create_datastore_disk( } } + let (mount_unit_path, _) = datastore_mount_unit_path_info(&mount_point); + if std::path::PathBuf::from(&mount_unit_path).exists() { + bail!("systemd mount unit {mount_unit_path:?} already exists"); + } + let upid_str = WorkerTask::new_thread( "dircreate", Some(name.clone()),