parent
13beb99319
commit
2c7b3f2bfa
|
@ -492,18 +492,20 @@ bool luks::resize(Report& report, const QString& deviceNode, qint64 newLength) c
|
||||||
if (mapperName().isEmpty())
|
if (mapperName().isEmpty())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if ( newLength - length() * sectorSize() > 0 )
|
const qint64 sizeDiff = newLength - length() * sectorSize();
|
||||||
|
const qint64 newPayloadSize = m_PayloadSize + sizeDiff;
|
||||||
|
if ( sizeDiff > 0 ) // grow
|
||||||
{
|
{
|
||||||
ExternalCommand cryptResizeCmd(report, QStringLiteral("cryptsetup"), { QStringLiteral("resize"), mapperName() });
|
ExternalCommand cryptResizeCmd(report, QStringLiteral("cryptsetup"), { QStringLiteral("resize"), mapperName() });
|
||||||
report.line() << xi18nc("@info:progress", "Resizing LUKS crypt on partition <filename>%1</filename>.", deviceNode);
|
report.line() << xi18nc("@info:progress", "Resizing LUKS crypt on partition <filename>%1</filename>.", deviceNode);
|
||||||
|
|
||||||
if (cryptResizeCmd.run(-1) && cryptResizeCmd.exitCode() == 0)
|
if (cryptResizeCmd.run(-1) && cryptResizeCmd.exitCode() == 0)
|
||||||
return m_innerFs->resize(report, mapperName(), m_PayloadSize);
|
return m_innerFs->resize(report, mapperName(), newPayloadSize);
|
||||||
}
|
}
|
||||||
else if (m_innerFs->resize(report, mapperName(), m_PayloadSize))
|
else if (m_innerFs->resize(report, mapperName(), newPayloadSize)) // shrink
|
||||||
{
|
{
|
||||||
ExternalCommand cryptResizeCmd(report, QStringLiteral("cryptsetup"),
|
ExternalCommand cryptResizeCmd(report, QStringLiteral("cryptsetup"),
|
||||||
{ QStringLiteral("--size"), QString::number(m_PayloadSize / 512), // LUKS1 payload length is specified in multiples of 512 bytes
|
{ QStringLiteral("--size"), QString::number(newPayloadSize / 512), // LUKS1 payload length is specified in multiples of 512 bytes
|
||||||
QStringLiteral("resize"), mapperName() });
|
QStringLiteral("resize"), mapperName() });
|
||||||
report.line() << xi18nc("@info:progress", "Resizing LUKS crypt on partition <filename>%1</filename>.", deviceNode);
|
report.line() << xi18nc("@info:progress", "Resizing LUKS crypt on partition <filename>%1</filename>.", deviceNode);
|
||||||
if (cryptResizeCmd.run(-1) && cryptResizeCmd.exitCode() == 0)
|
if (cryptResizeCmd.run(-1) && cryptResizeCmd.exitCode() == 0)
|
||||||
|
|
|
@ -89,7 +89,9 @@ bool luks2::resize(Report& report, const QString& deviceNode, qint64 newLength)
|
||||||
if (mapperName().isEmpty())
|
if (mapperName().isEmpty())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if ( newLength - length() * sectorSize() > 0 )
|
const qint64 sizeDiff = newLength - length() * sectorSize();
|
||||||
|
const qint64 newPayloadSize = m_PayloadSize + sizeDiff;
|
||||||
|
if ( sizeDiff > 0 ) // grow
|
||||||
{
|
{
|
||||||
ExternalCommand cryptResizeCmd(report, QStringLiteral("cryptsetup"), { QStringLiteral("resize"), mapperName() });
|
ExternalCommand cryptResizeCmd(report, QStringLiteral("cryptsetup"), { QStringLiteral("resize"), mapperName() });
|
||||||
report.line() << xi18nc("@info:progress", "Resizing LUKS crypt on partition <filename>%1</filename>.", deviceNode);
|
report.line() << xi18nc("@info:progress", "Resizing LUKS crypt on partition <filename>%1</filename>.", deviceNode);
|
||||||
|
@ -102,12 +104,12 @@ bool luks2::resize(Report& report, const QString& deviceNode, qint64 newLength)
|
||||||
if (!cryptResizeCmd.start(-1))
|
if (!cryptResizeCmd.start(-1))
|
||||||
return false;
|
return false;
|
||||||
if ( cryptResizeCmd.exitCode() == 0 )
|
if ( cryptResizeCmd.exitCode() == 0 )
|
||||||
return m_innerFs->resize(report, mapperName(), m_PayloadSize);
|
return m_innerFs->resize(report, mapperName(), newPayloadSize);
|
||||||
}
|
}
|
||||||
else if (m_innerFs->resize(report, mapperName(), m_PayloadSize))
|
else if (m_innerFs->resize(report, mapperName(), newPayloadSize))
|
||||||
{
|
{
|
||||||
ExternalCommand cryptResizeCmd(report, QStringLiteral("cryptsetup"),
|
ExternalCommand cryptResizeCmd(report, QStringLiteral("cryptsetup"),
|
||||||
{ QStringLiteral("--size"), QString::number(m_PayloadSize / 512), // FIXME, LUKS2 can have different sector sizes
|
{ QStringLiteral("--size"), QString::number(newPayloadSize / 512), // FIXME, LUKS2 can have different sector sizes
|
||||||
QStringLiteral("resize"), mapperName() });
|
QStringLiteral("resize"), mapperName() });
|
||||||
report.line() << xi18nc("@info:progress", "Resizing LUKS crypt on partition <filename>%1</filename>.", deviceNode);
|
report.line() << xi18nc("@info:progress", "Resizing LUKS crypt on partition <filename>%1</filename>.", deviceNode);
|
||||||
if (m_KeyLocation == KeyLocation::keyring) {
|
if (m_KeyLocation == KeyLocation::keyring) {
|
||||||
|
|
Loading…
Reference in New Issue