[partition] Check for suitable FS before passing -o noload
- The noload option prevents journal re-play (so it's an extra- strong read-only) but is only applicable to ext3 and ext4. Check the FS type before mounting; other FS types don't accept -o noload and will fail to mount.
This commit is contained in:
parent
e0ce500f36
commit
38d58fb6ed
@ -31,6 +31,7 @@
|
|||||||
#include <kpmcore/core/device.h>
|
#include <kpmcore/core/device.h>
|
||||||
#include <kpmcore/core/partition.h>
|
#include <kpmcore/core/partition.h>
|
||||||
|
|
||||||
|
#include <utils/CalamaresUtilsSystem.h>
|
||||||
#include <utils/Logger.h>
|
#include <utils/Logger.h>
|
||||||
#include <JobQueue.h>
|
#include <JobQueue.h>
|
||||||
#include <GlobalStorage.h>
|
#include <GlobalStorage.h>
|
||||||
@ -161,11 +162,26 @@ canBeResized( PartitionCoreModule* core, const QString& partitionPath )
|
|||||||
static FstabEntryList
|
static FstabEntryList
|
||||||
lookForFstabEntries( const QString& partitionPath )
|
lookForFstabEntries( const QString& partitionPath )
|
||||||
{
|
{
|
||||||
|
QStringList mountOptions{ "ro" };
|
||||||
|
|
||||||
|
auto r = CalamaresUtils::System::runCommand(
|
||||||
|
CalamaresUtils::System::RunLocation::RunInHost,
|
||||||
|
{ "blkid", "-s", "TYPE", "-o", "value", partitionPath }
|
||||||
|
);
|
||||||
|
if ( r.getExitCode() )
|
||||||
|
cWarning() << "blkid on" << partitionPath << "failed.";
|
||||||
|
else
|
||||||
|
{
|
||||||
|
QString fstype = r.getOutput().trimmed();
|
||||||
|
if ( ( fstype == "ext3" ) || ( fstype == "ext4" ) )
|
||||||
|
mountOptions.append( "noload" );
|
||||||
|
}
|
||||||
|
|
||||||
FstabEntryList fstabEntries;
|
FstabEntryList fstabEntries;
|
||||||
QTemporaryDir mountsDir;
|
QTemporaryDir mountsDir;
|
||||||
mountsDir.setAutoRemove( false );
|
mountsDir.setAutoRemove( false );
|
||||||
|
|
||||||
int exit = QProcess::execute( "mount", { "-o", "ro,noload", partitionPath, mountsDir.path() } );
|
int exit = QProcess::execute( "mount", { "-o", mountOptions.join(','), partitionPath, mountsDir.path() } );
|
||||||
if ( !exit ) // if all is well
|
if ( !exit ) // if all is well
|
||||||
{
|
{
|
||||||
QFile fstabFile( mountsDir.path() + "/etc/fstab" );
|
QFile fstabFile( mountsDir.path() + "/etc/fstab" );
|
||||||
|
Loading…
Reference in New Issue
Block a user