Reassemble Software RAID when commit partition table.

This commit is contained in:
Caio Carvalho 2018-07-12 14:08:24 -03:00
parent b11b73b1e5
commit 3f7c5ca722
3 changed files with 19 additions and 12 deletions

View File

@ -218,18 +218,20 @@ bool SoftwareRAID::deleteSoftwareRAID(Report &report,
return false;
}
bool SoftwareRAID::assembleSoftwareRAID(Report &report, const SoftwareRAID &raidDevice)
bool SoftwareRAID::assembleSoftwareRAID(const SoftwareRAID &raidDevice)
{
Q_UNUSED(report)
Q_UNUSED(raidDevice)
return false;
ExternalCommand cmd(QStringLiteral("mdadm"),
{ QStringLiteral("--assemble"), QStringLiteral("--scan"), raidDevice.deviceNode() });
return cmd.run(-1) && cmd.exitCode() == 0;
}
bool SoftwareRAID::stopSoftwareRAID(Report &report, const SoftwareRAID &raidDevice)
bool SoftwareRAID::stopSoftwareRAID(const SoftwareRAID &raidDevice)
{
Q_UNUSED(report)
Q_UNUSED(raidDevice)
return false;
ExternalCommand cmd(QStringLiteral("mdadm"),
{ QStringLiteral("--stop"), raidDevice.deviceNode() });
return cmd.run(-1) && cmd.exitCode() == 0;
}
void SoftwareRAID::initPartitions()

View File

@ -65,11 +65,9 @@ public:
static bool deleteSoftwareRAID(Report& report,
SoftwareRAID& raidDevice);
static bool assembleSoftwareRAID(Report& report,
const SoftwareRAID& raidDevice);
static bool assembleSoftwareRAID(const SoftwareRAID& raidDevice);
static bool stopSoftwareRAID(Report& report,
const SoftwareRAID& raidDevice);
static bool stopSoftwareRAID(const SoftwareRAID& raidDevice);
protected:
void initPartitions() override;

View File

@ -57,6 +57,13 @@ bool SfdiskPartitionTable::commit(quint32 timeout)
ExternalCommand(QStringLiteral("blockdev"), { QStringLiteral("--rereadpt"), m_device->deviceNode() }).run();
ExternalCommand(QStringLiteral("udevadm"), { QStringLiteral("trigger") }).run();
if (m_device->type() == Device::Type::SoftwareRAID_Device)
{
const SoftwareRAID& raid = static_cast<const SoftwareRAID&>(*m_device);
SoftwareRAID::stopSoftwareRAID(raid);
SoftwareRAID::assembleSoftwareRAID(raid);
}
return true;
}