From a8139278dbe3073aca335fd8287f92e5b008cf05 Mon Sep 17 00:00:00 2001 From: Chantara Tith Date: Mon, 15 Aug 2016 00:25:06 +0700 Subject: [PATCH] Add deactivatable check to deactivate VG operation. --- src/ops/deactivatevolumegroupoperation.cpp | 15 +++++++++++++++ src/ops/deactivatevolumegroupoperation.h | 2 ++ 2 files changed, 17 insertions(+) diff --git a/src/ops/deactivatevolumegroupoperation.cpp b/src/ops/deactivatevolumegroupoperation.cpp index 091b785..1cf4248 100644 --- a/src/ops/deactivatevolumegroupoperation.cpp +++ b/src/ops/deactivatevolumegroupoperation.cpp @@ -21,6 +21,7 @@ #include "core/volumemanagerdevice.h" #include "core/partitiontable.h" +#include "core/partition.h" #include @@ -57,3 +58,17 @@ void DeactivateVolumeGroupOperation::undo() delete tmp; } } + +bool DeactivateVolumeGroupOperation::isDeactivatable(const VolumeManagerDevice* dev) +{ + if (dev->type() == Device::LVM_Device) { + for (const auto &p : dev->partitionTable()->children()) { + if (p->isMounted()) { + return false; + } + } + return true; + } + + return false; +} diff --git a/src/ops/deactivatevolumegroupoperation.h b/src/ops/deactivatevolumegroupoperation.h index d462ea1..11a27c7 100644 --- a/src/ops/deactivatevolumegroupoperation.h +++ b/src/ops/deactivatevolumegroupoperation.h @@ -58,6 +58,8 @@ public: virtual void preview() override; virtual void undo() override; + static bool isDeactivatable(const VolumeManagerDevice* dev); + protected: DeactivateVolumeGroupJob* deactivateVolumeGroupJob() { return m_DeactivateVolumeGroupJob;