[partition] Massage logging while checking for EFI boot

This commit is contained in:
Adriaan de Groot 2020-11-04 00:43:32 +01:00
parent 63964de4bd
commit 949e33f1e8

View File

@ -439,10 +439,8 @@ isEfiSystem()
bool bool
isEfiBootable( const Partition* candidate ) isEfiBootable( const Partition* candidate )
{ {
cDebug() << "Check EFI bootable" << convenienceName( candidate ) << candidate->devicePath();
cDebug() << Logger::SubEntry << "flags" << candidate->activeFlags();
auto flags = PartitionInfo::flags( candidate ); auto flags = PartitionInfo::flags( candidate );
cDebug() << "Check EFI bootable" << convenienceName( candidate ) << candidate->devicePath() << "flags" << flags;
/* If bit 17 is set, old-style Esp flag, it's OK */ /* If bit 17 is set, old-style Esp flag, it's OK */
if ( flags.testFlag( KPM_PARTITION_FLAG_ESP ) ) if ( flags.testFlag( KPM_PARTITION_FLAG_ESP ) )
@ -455,19 +453,28 @@ isEfiBootable( const Partition* candidate )
while ( root && !root->isRoot() ) while ( root && !root->isRoot() )
{ {
root = root->parent(); root = root->parent();
cDebug() << Logger::SubEntry << "moved towards root" << Logger::Pointer( root );
} }
// Strange case: no root found, no partition table node? // Strange case: no root found, no partition table node?
if ( !root ) if ( !root )
{ {
cWarning() << "No root of partition table found.";
return false; return false;
} }
const PartitionTable* table = dynamic_cast< const PartitionTable* >( root ); const PartitionTable* table = dynamic_cast< const PartitionTable* >( root );
cDebug() << Logger::SubEntry << "partition table" << Logger::Pointer( table ) << "type" if ( !table )
<< ( table ? table->type() : PartitionTable::TableType::unknownTableType ); {
return table && ( table->type() == PartitionTable::TableType::gpt ) && flags.testFlag( KPM_PARTITION_FLAG( Boot ) ); cWarning() << "Root of partition table is not a PartitionTable object";
return false;
}
if ( table->type() == PartitionTable::TableType::gpt )
{
const auto bootFlag = KPM_PARTITION_FLAG( Boot );
cDebug() << Logger::SubEntry << "GPT table" << flags << "boot?" << bootFlag << flags.testFlag( bootFlag );
return flags.testFlag( bootFlag );
}
return false;
} }
QString QString