diff --git a/src/modules/partition/core/PartUtils.cpp b/src/modules/partition/core/PartUtils.cpp index 814f3d018..8c736042f 100644 --- a/src/modules/partition/core/PartUtils.cpp +++ b/src/modules/partition/core/PartUtils.cpp @@ -34,6 +34,40 @@ namespace PartUtils { +bool +canBeResized( Partition* candidate ) +{ + if ( !candidate->fileSystem().supportGrow() || + !candidate->fileSystem().supportShrink() ) + return false; + + bool ok = false; + double requiredStorageGB = Calamares::JobQueue::instance() + ->globalStorage() + ->value( "requiredStorageGB" ) + .toDouble( &ok ); + + qint64 availableStorageB = candidate->available(); + + // We require a little more for partitioning overhead and swap file + // TODO: maybe make this configurable? + qint64 requiredStorageB = ( requiredStorageGB + 0.1 + 2.0 ) * 1024 * 1024 * 1024; + cDebug() << "Required storage B:" << requiredStorageB + << QString( "(%1GB)" ).arg( requiredStorageB / 1024 / 1024 / 1024 ); + cDebug() << "Available storage B:" << availableStorageB + << QString( "(%1GB)" ).arg( availableStorageB / 1024 / 1024 / 1024 ); + + if ( ok && + availableStorageB > requiredStorageB ) + { + cDebug() << "Partition" << candidate->partitionPath() << "authorized for resize + autopartition install."; + + return true; + } + return false; +} + + bool canBeResized( PartitionCoreModule* core, const QString& partitionPath ) { @@ -52,33 +86,7 @@ canBeResized( PartitionCoreModule* core, const QString& partitionPath ) if ( candidate ) { cDebug() << "found Partition* for" << partitionWithOs; - if ( !candidate->fileSystem().supportGrow() || - !candidate->fileSystem().supportShrink() ) - return false; - - bool ok = false; - double requiredStorageGB = Calamares::JobQueue::instance() - ->globalStorage() - ->value( "requiredStorageGB" ) - .toDouble( &ok ); - - qint64 availableStorageB = candidate->available(); - - // We require a little more for partitioning overhead and swap file - // TODO: maybe make this configurable? - qint64 requiredStorageB = ( requiredStorageGB + 0.1 + 2.0 ) * 1024 * 1024 * 1024; - cDebug() << "Required storage B:" << requiredStorageB - << QString( "(%1GB)" ).arg( requiredStorageB / 1024 / 1024 / 1024 ); - cDebug() << "Available storage B:" << availableStorageB - << QString( "(%1GB)" ).arg( availableStorageB / 1024 / 1024 / 1024 ); - - if ( ok && - availableStorageB > requiredStorageB ) - { - cDebug() << "Partition" << partitionWithOs << "authorized for resize + autopartition install."; - - return true; - } + return canBeResized( candidate ); } } } diff --git a/src/modules/partition/core/PartUtils.h b/src/modules/partition/core/PartUtils.h index 15598328b..de3008a01 100644 --- a/src/modules/partition/core/PartUtils.h +++ b/src/modules/partition/core/PartUtils.h @@ -24,10 +24,13 @@ #include class PartitionCoreModule; +class Partition; namespace PartUtils { +bool canBeResized( Partition* candidate ); + bool canBeResized( PartitionCoreModule* core, const QString& partitionPath ); OsproberEntryList runOsprober( PartitionCoreModule* core );