diff --git a/src/modules/partition/Config.cpp b/src/modules/partition/Config.cpp index 085c451791e96d10c34e286b200007d33c2c039f..d90111555db974cbbfd5e004bdc34d139580f1a6 100644 --- a/src/modules/partition/Config.cpp +++ b/src/modules/partition/Config.cpp @@ -451,9 +451,11 @@ Config::setConfigurationMap( const QVariantMap& configurationMap ) { bool bogus = true; const auto lvmConfiguration = Calamares::getSubMap( configurationMap, "lvm", bogus ); - m_isLVMEnabled = Calamares::getBool( lvmConfiguration, "enable", true); + m_isLVMEnabled = Calamares::getBool( lvmConfiguration, "enable", true ); } + m_doNotClose = Calamares::getStringList( configurationMap, "doNotClose" ); + Calamares::GlobalStorage* gs = Calamares::JobQueue::instance()->globalStorage(); gs->insert( "armInstall", Calamares::getBool( configurationMap, "armInstall", false ) ); fillGSConfigurationEFI( gs, configurationMap ); diff --git a/src/modules/partition/Config.h b/src/modules/partition/Config.h index 13da58ac44c445d482af2db68ae1977fd515b92b..ebbe196131d2a7d46789278cc7da0e3d582e81fb 100644 --- a/src/modules/partition/Config.h +++ b/src/modules/partition/Config.h @@ -40,6 +40,8 @@ class Config : public QObject Q_PROPERTY( bool lvmEnabled READ isLVMEnabled CONSTANT FINAL ) + Q_PROPERTY( QStringList doNotClose READ doNotClose CONSTANT FINAL ) + public: Config( QObject* parent ); ~Config() override = default; @@ -178,6 +180,14 @@ public: bool isLVMEnabled() const { return m_isLVMEnabled; } + /** @brief A list of names that can follow /dev/mapper/ that must not be closed + * + * These names (if any) are skipped by the ClearMountsJob. + * The names may contain a trailing '*' which acts as a wildcard. + * In any other position, '*' is interpreted literally. + */ + QStringList doNotClose() const { return m_doNotClose; } + public Q_SLOTS: void setInstallChoice( int ); ///< Translates a button ID or so to InstallChoice void setInstallChoice( InstallChoice ); @@ -213,6 +223,7 @@ private: bool m_preCheckEncryption = false; bool m_showNotEncryptedBootMessage = true; bool m_isLVMEnabled = true; + QStringList m_doNotClose; }; /** @brief Given a set of swap choices, return a sensible value from it. diff --git a/src/modules/partition/core/PartitionCoreModule.cpp b/src/modules/partition/core/PartitionCoreModule.cpp index c2fd61db9aebf956d2c593edcfd8c77ef03d58c8..8666f0099e3eda8835b6831449c7973083cdea60 100644 --- a/src/modules/partition/core/PartitionCoreModule.cpp +++ b/src/modules/partition/core/PartitionCoreModule.cpp @@ -670,7 +670,7 @@ PartitionCoreModule::jobs( const Config* config ) const #ifdef DEBUG_PARTITION_SKIP cWarning() << "Partitioning actions are skipped."; #else - const QStringList doNotClose = findEssentialLVs( m_deviceInfos ); + const QStringList doNotClose = findEssentialLVs( m_deviceInfos ) + config->doNotClose(); for ( const auto* info : m_deviceInfos ) {