Reassemble Software RAID when commit partition table.
This commit is contained in:
parent
b11b73b1e5
commit
3f7c5ca722
|
@ -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()
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue