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;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool SoftwareRAID::assembleSoftwareRAID(Report &report, const SoftwareRAID &raidDevice)
|
bool SoftwareRAID::assembleSoftwareRAID(const SoftwareRAID &raidDevice)
|
||||||
{
|
{
|
||||||
Q_UNUSED(report)
|
ExternalCommand cmd(QStringLiteral("mdadm"),
|
||||||
Q_UNUSED(raidDevice)
|
{ QStringLiteral("--assemble"), QStringLiteral("--scan"), raidDevice.deviceNode() });
|
||||||
return false;
|
|
||||||
|
return cmd.run(-1) && cmd.exitCode() == 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool SoftwareRAID::stopSoftwareRAID(Report &report, const SoftwareRAID &raidDevice)
|
bool SoftwareRAID::stopSoftwareRAID(const SoftwareRAID &raidDevice)
|
||||||
{
|
{
|
||||||
Q_UNUSED(report)
|
ExternalCommand cmd(QStringLiteral("mdadm"),
|
||||||
Q_UNUSED(raidDevice)
|
{ QStringLiteral("--stop"), raidDevice.deviceNode() });
|
||||||
return false;
|
|
||||||
|
return cmd.run(-1) && cmd.exitCode() == 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SoftwareRAID::initPartitions()
|
void SoftwareRAID::initPartitions()
|
||||||
|
|
|
@ -65,11 +65,9 @@ public:
|
||||||
static bool deleteSoftwareRAID(Report& report,
|
static bool deleteSoftwareRAID(Report& report,
|
||||||
SoftwareRAID& raidDevice);
|
SoftwareRAID& raidDevice);
|
||||||
|
|
||||||
static bool assembleSoftwareRAID(Report& report,
|
static bool assembleSoftwareRAID(const SoftwareRAID& raidDevice);
|
||||||
const SoftwareRAID& raidDevice);
|
|
||||||
|
|
||||||
static bool stopSoftwareRAID(Report& report,
|
static bool stopSoftwareRAID(const SoftwareRAID& raidDevice);
|
||||||
const SoftwareRAID& raidDevice);
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void initPartitions() override;
|
void initPartitions() override;
|
||||||
|
|
|
@ -57,6 +57,13 @@ bool SfdiskPartitionTable::commit(quint32 timeout)
|
||||||
ExternalCommand(QStringLiteral("blockdev"), { QStringLiteral("--rereadpt"), m_device->deviceNode() }).run();
|
ExternalCommand(QStringLiteral("blockdev"), { QStringLiteral("--rereadpt"), m_device->deviceNode() }).run();
|
||||||
ExternalCommand(QStringLiteral("udevadm"), { QStringLiteral("trigger") }).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;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue