[partition] Improve logging of device-checking

- Avoid lots of function headers between the checks applied to
  each individual device.
This commit is contained in:
Adriaan de Groot 2021-03-29 15:25:57 +02:00
parent d4f28e863f
commit 1fe337d6ed
3 changed files with 33 additions and 22 deletions

View File

@ -72,15 +72,15 @@ getRequiredStorageGiB( bool& ok )
} }
bool bool
canBeReplaced( Partition* candidate ) canBeReplaced( Partition* candidate, const Logger::Once& o )
{ {
if ( !candidate ) if ( !candidate )
{ {
cDebug() << "Partition* is NULL"; cDebug() << o << "Partition* is NULL";
return false; return false;
} }
cDebug() << "Checking if" << convenienceName( candidate ) << "can be replaced."; cDebug() << o << "Checking if" << convenienceName( candidate ) << "can be replaced.";
if ( candidate->isMounted() ) if ( candidate->isMounted() )
{ {
cDebug() << Logger::SubEntry << "NO, it is mounted."; cDebug() << Logger::SubEntry << "NO, it is mounted.";
@ -100,7 +100,7 @@ canBeReplaced( Partition* candidate )
if ( availableStorageB > requiredStorageB ) if ( availableStorageB > requiredStorageB )
{ {
cDebug() << "Partition" << convenienceName( candidate ) << "authorized for replace install."; cDebug() << o << "Partition" << convenienceName( candidate ) << "authorized for replace install.";
return true; return true;
} }
else else
@ -117,15 +117,15 @@ canBeReplaced( Partition* candidate )
bool bool
canBeResized( Partition* candidate ) canBeResized( Partition* candidate, const Logger::Once& o )
{ {
if ( !candidate ) if ( !candidate )
{ {
cDebug() << "Partition* is NULL"; cDebug() << o << "Partition* is NULL";
return false; return false;
} }
cDebug() << "Checking if" << convenienceName( candidate ) << "can be resized."; cDebug() << o << "Checking if" << convenienceName( candidate ) << "can be resized.";
if ( !candidate->fileSystem().supportGrow() || !candidate->fileSystem().supportShrink() ) if ( !candidate->fileSystem().supportGrow() || !candidate->fileSystem().supportShrink() )
{ {
cDebug() << Logger::SubEntry << "NO, filesystem" << candidate->fileSystem().name() cDebug() << Logger::SubEntry << "NO, filesystem" << candidate->fileSystem().name()
@ -177,7 +177,7 @@ canBeResized( Partition* candidate )
if ( availableStorageB > advisedStorageB ) if ( availableStorageB > advisedStorageB )
{ {
cDebug() << "Partition" << convenienceName( candidate ) << "authorized for resize + autopartition install."; cDebug() << o << "Partition" << convenienceName( candidate ) << "authorized for resize + autopartition install.";
return true; return true;
} }
else else
@ -196,9 +196,9 @@ canBeResized( Partition* candidate )
bool bool
canBeResized( DeviceModel* dm, const QString& partitionPath ) canBeResized( DeviceModel* dm, const QString& partitionPath, const Logger::Once& o )
{ {
cDebug() << "Checking if" << partitionPath << "can be resized."; cDebug() << o << "Checking if" << partitionPath << "can be resized.";
QString partitionWithOs = partitionPath; QString partitionWithOs = partitionPath;
if ( partitionWithOs.startsWith( "/dev/" ) ) if ( partitionWithOs.startsWith( "/dev/" ) )
{ {
@ -208,7 +208,7 @@ canBeResized( DeviceModel* dm, const QString& partitionPath )
Partition* candidate = CalamaresUtils::Partition::findPartitionByPath( { dev }, partitionWithOs ); Partition* candidate = CalamaresUtils::Partition::findPartitionByPath( { dev }, partitionWithOs );
if ( candidate ) if ( candidate )
{ {
return canBeResized( candidate ); return canBeResized( candidate, o );
} }
} }
cDebug() << Logger::SubEntry << "no Partition* found for" << partitionWithOs; cDebug() << Logger::SubEntry << "no Partition* found for" << partitionWithOs;
@ -357,6 +357,8 @@ findPartitionPathForMountPoint( const FstabEntryList& fstab, const QString& moun
OsproberEntryList OsproberEntryList
runOsprober( DeviceModel* dm ) runOsprober( DeviceModel* dm )
{ {
Logger::Once o;
QString osproberOutput; QString osproberOutput;
QProcess osprober; QProcess osprober;
osprober.setProgram( "os-prober" ); osprober.setProgram( "os-prober" );
@ -411,18 +413,18 @@ runOsprober( DeviceModel* dm )
QString homePath = findPartitionPathForMountPoint( fstabEntries, "/home" ); QString homePath = findPartitionPathForMountPoint( fstabEntries, "/home" );
osproberEntries.append( osproberEntries.append(
{ prettyName, path, file, QString(), canBeResized( dm, path ), lineColumns, fstabEntries, homePath } ); { prettyName, path, file, QString(), canBeResized( dm, path, o ), lineColumns, fstabEntries, homePath } );
osproberCleanLines.append( line ); osproberCleanLines.append( line );
} }
} }
if ( osproberCleanLines.count() > 0 ) if ( osproberCleanLines.count() > 0 )
{ {
cDebug() << "os-prober lines after cleanup:" << Logger::DebugList( osproberCleanLines ); cDebug() << o << "os-prober lines after cleanup:" << Logger::DebugList( osproberCleanLines );
} }
else else
{ {
cDebug() << "os-prober gave no output."; cDebug() << o << "os-prober gave no output.";
} }
Calamares::JobQueue::instance()->globalStorage()->insert( "osproberLines", osproberCleanLines ); Calamares::JobQueue::instance()->globalStorage()->insert( "osproberLines", osproberCleanLines );

View File

@ -24,6 +24,10 @@
class DeviceModel; class DeviceModel;
class Partition; class Partition;
namespace Logger
{
class Once;
}
namespace PartUtils namespace PartUtils
{ {
@ -41,26 +45,29 @@ QString convenienceName( const Partition* const candidate );
* @brief canBeReplaced checks whether the given Partition satisfies the criteria * @brief canBeReplaced checks whether the given Partition satisfies the criteria
* for replacing it with the new OS. * for replacing it with the new OS.
* @param candidate the candidate partition to replace. * @param candidate the candidate partition to replace.
* @param o applied to debug-logging.
* @return true if the criteria are met, otherwise false. * @return true if the criteria are met, otherwise false.
*/ */
bool canBeReplaced( Partition* candidate ); bool canBeReplaced( Partition* candidate, const Logger::Once& o );
/** /**
* @brief canBeReplaced checks whether the given Partition satisfies the criteria * @brief canBeReplaced checks whether the given Partition satisfies the criteria
* for resizing (shrinking) it to make room for a new OS. * for resizing (shrinking) it to make room for a new OS.
* @param candidate the candidate partition to resize. * @param candidate the candidate partition to resize.
* @param o applied to debug-logging.
* @return true if the criteria are met, otherwise false. * @return true if the criteria are met, otherwise false.
*/ */
bool canBeResized( Partition* candidate ); bool canBeResized( Partition* candidate, const Logger::Once& o );
/** /**
* @brief canBeReplaced checks whether the given Partition satisfies the criteria * @brief canBeReplaced checks whether the given Partition satisfies the criteria
* for resizing (shrinking) it to make room for a new OS. * for resizing (shrinking) it to make room for a new OS.
* @param dm the DeviceModel instance. * @param dm the DeviceModel instance.
* @param partitionPath the device path of the candidate partition to resize. * @param partitionPath the device path of the candidate partition to resize.
* @param o applied to debug-logging.
* @return true if the criteria are met, otherwise false. * @return true if the criteria are met, otherwise false.
*/ */
bool canBeResized( DeviceModel* dm, const QString& partitionPath ); bool canBeResized( DeviceModel* dm, const QString& partitionPath, const Logger::Once& o );
/** /**
* @brief runOsprober executes os-prober, parses the output and writes relevant * @brief runOsprober executes os-prober, parses the output and writes relevant

View File

@ -986,7 +986,7 @@ ChoicePage::updateActionChoicePreview( InstallChoice choice )
SelectionFilter filter = []( const QModelIndex& index ) { SelectionFilter filter = []( const QModelIndex& index ) {
return PartUtils::canBeResized( return PartUtils::canBeResized(
static_cast< Partition* >( index.data( PartitionModel::PartitionPtrRole ).value< void* >() ) ); static_cast< Partition* >( index.data( PartitionModel::PartitionPtrRole ).value< void* >() ), Logger::Once() );
}; };
m_beforePartitionBarsView->setSelectionFilter( filter ); m_beforePartitionBarsView->setSelectionFilter( filter );
m_beforePartitionLabelsView->setSelectionFilter( filter ); m_beforePartitionLabelsView->setSelectionFilter( filter );
@ -1075,7 +1075,7 @@ ChoicePage::updateActionChoicePreview( InstallChoice choice )
{ {
SelectionFilter filter = []( const QModelIndex& index ) { SelectionFilter filter = []( const QModelIndex& index ) {
return PartUtils::canBeReplaced( return PartUtils::canBeReplaced(
static_cast< Partition* >( index.data( PartitionModel::PartitionPtrRole ).value< void* >() ) ); static_cast< Partition* >( index.data( PartitionModel::PartitionPtrRole ).value< void* >() ), Logger::Once() );
}; };
m_beforePartitionBarsView->setSelectionFilter( filter ); m_beforePartitionBarsView->setSelectionFilter( filter );
m_beforePartitionLabelsView->setSelectionFilter( filter ); m_beforePartitionLabelsView->setSelectionFilter( filter );
@ -1220,10 +1220,12 @@ operator<<( QDebug& s, PartitionIterator& it )
void void
ChoicePage::setupActions() ChoicePage::setupActions()
{ {
Logger::Once o;
Device* currentDevice = selectedDevice(); Device* currentDevice = selectedDevice();
OsproberEntryList osproberEntriesForCurrentDevice = getOsproberEntriesForDevice( currentDevice ); OsproberEntryList osproberEntriesForCurrentDevice = getOsproberEntriesForDevice( currentDevice );
cDebug() << "Setting up actions for" << currentDevice->deviceNode() << "with" cDebug() << o << "Setting up actions for" << currentDevice->deviceNode() << "with"
<< osproberEntriesForCurrentDevice.count() << "entries."; << osproberEntriesForCurrentDevice.count() << "entries.";
if ( currentDevice->partitionTable() ) if ( currentDevice->partitionTable() )
@ -1269,12 +1271,12 @@ ChoicePage::setupActions()
for ( auto it = PartitionIterator::begin( currentDevice ); it != PartitionIterator::end( currentDevice ); ++it ) for ( auto it = PartitionIterator::begin( currentDevice ); it != PartitionIterator::end( currentDevice ); ++it )
{ {
if ( PartUtils::canBeResized( *it ) ) if ( PartUtils::canBeResized( *it, o ) )
{ {
cDebug() << Logger::SubEntry << "contains resizable" << it; cDebug() << Logger::SubEntry << "contains resizable" << it;
atLeastOneCanBeResized = true; atLeastOneCanBeResized = true;
} }
if ( PartUtils::canBeReplaced( *it ) ) if ( PartUtils::canBeReplaced( *it, o ) )
{ {
cDebug() << Logger::SubEntry << "contains replaceable" << it; cDebug() << Logger::SubEntry << "contains replaceable" << it;
atLeastOneCanBeReplaced = true; atLeastOneCanBeReplaced = true;