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;