diff --git a/src/core/raid/softwareraid.cpp b/src/core/raid/softwareraid.cpp index 352757c..284ab1b 100644 --- a/src/core/raid/softwareraid.cpp +++ b/src/core/raid/softwareraid.cpp @@ -580,6 +580,24 @@ QString SoftwareRAID::getDefaultRaidConfigFile() return QString(); } +bool SoftwareRAID::failPV(Report& report, const QString& devicePath, const QString& physicalVolume) +{ + ExternalCommand cmd(QStringLiteral("mdadm"), + { QStringLiteral("--manage"), QStringLiteral("--fail"), devicePath, physicalVolume }); + + return cmd.run(-1) && cmd.exitCode() == 0; +} + +bool SoftwareRAID::removePV(Report& report, const QString& devicePath, const QString& physicalVolume) +{ + failPV(report, devicePath, physicalVolume); + + ExternalCommand cmd(QStringLiteral("mdadm"), + { QStringLiteral("--manage"), QStringLiteral("--remove"), devicePath, physicalVolume }); + + return cmd.run(-1) && cmd.exitCode() == 0; +} + void SoftwareRAID::setPartitionNodes(const QStringList& partitionNodes) { d_ptr->m_partitionPathList = partitionNodes; diff --git a/src/core/raid/softwareraid.h b/src/core/raid/softwareraid.h index 7e9b58d..37f351a 100644 --- a/src/core/raid/softwareraid.h +++ b/src/core/raid/softwareraid.h @@ -94,6 +94,12 @@ public: static QString getDefaultRaidConfigFile(); + static bool failPV(Report& report, const QString& devicePath, const QString& physicalVolume); + + //static bool insertPV(Report& report, SoftwareRAID& raid, const QString& deviceNode); + + static bool removePV(Report& report, const QString& devicePath, const QString& physicalVolume); + protected: void initPartitions() override;