mirror of
https://git.proxmox.com/git/proxmox-backup
synced 2025-08-06 02:02:16 +00:00
maintenance: make is_offline more generic
... and add MaintenanceType::Delete to it. We also want to clear any cach entries if we are deleting the datastore, not just if it is marked as offline. Signed-off-by: Hannes Laimer <h.laimer@proxmox.com>
This commit is contained in:
parent
89c650b83e
commit
652b774eb0
@ -77,10 +77,9 @@ pub struct MaintenanceMode {
|
||||
}
|
||||
|
||||
impl MaintenanceMode {
|
||||
/// Used for deciding whether the datastore is cleared from the internal cache after the last
|
||||
/// task finishes, so all open files are closed.
|
||||
pub fn is_offline(&self) -> bool {
|
||||
self.ty == MaintenanceType::Offline
|
||||
/// Used for deciding whether the datastore is cleared from the internal cache
|
||||
pub fn clear_from_cache(&self) -> bool {
|
||||
self.ty == MaintenanceType::Offline || self.ty == MaintenanceType::Delete
|
||||
}
|
||||
|
||||
pub fn check(&self, operation: Option<Operation>) -> Result<(), Error> {
|
||||
|
@ -116,7 +116,8 @@ impl Drop for DataStore {
|
||||
&& pbs_config::datastore::config()
|
||||
.and_then(|(s, _)| s.lookup::<DataStoreConfig>("datastore", self.name()))
|
||||
.map_or(false, |c| {
|
||||
c.get_maintenance_mode().map_or(false, |m| m.is_offline())
|
||||
c.get_maintenance_mode()
|
||||
.map_or(false, |m| m.clear_from_cache())
|
||||
});
|
||||
|
||||
if remove_from_cache {
|
||||
@ -216,7 +217,7 @@ impl DataStore {
|
||||
let datastore: DataStoreConfig = config.lookup("datastore", name)?;
|
||||
if datastore
|
||||
.get_maintenance_mode()
|
||||
.map_or(false, |m| m.is_offline())
|
||||
.map_or(false, |m| m.clear_from_cache())
|
||||
{
|
||||
// the datastore drop handler does the checking if tasks are running and clears the
|
||||
// cache entry, so we just have to trigger it here
|
||||
|
Loading…
Reference in New Issue
Block a user