diff --git a/src/fs/luks.cpp b/src/fs/luks.cpp index bd06520..93f5d9f 100644 --- a/src/fs/luks.cpp +++ b/src/fs/luks.cpp @@ -286,10 +286,7 @@ bool luks::cryptOpen(const QString& deviceNode) if (mapperNode.isEmpty()) return false; - FileSystem::Type innerFsType = detectFileSystem(mapperNode); - m_innerFs = FileSystemFactory::cloneWithNewType(innerFsType, - *this); - + loadInnerFilesystem(mapperNode); m_isCryptOpen = (m_innerFs != nullptr); if (m_isCryptOpen) @@ -328,6 +325,13 @@ bool luks::cryptClose(const QString& deviceNode) return false; } +void luks::loadInnerFilesystem(const QString& mapperNode) +{ + FileSystem::Type innerFsType = detectFileSystem(mapperNode); + m_innerFs = FileSystemFactory::cloneWithNewType(innerFsType, + *this); +} + bool luks::mount(const QString& deviceNode, const QString& mountPoint) { if (!m_isCryptOpen) diff --git a/src/fs/luks.h b/src/fs/luks.h index 5bcff08..88b5af7 100644 --- a/src/fs/luks.h +++ b/src/fs/luks.h @@ -108,6 +108,8 @@ public: bool cryptOpen(const QString& deviceNode); bool cryptClose(const QString& deviceNode); + void loadInnerFilesystem(const QString& mapperNode); + virtual bool mount(const QString& deviceNode, const QString& mountPoint) override; virtual bool unmount(const QString& deviceNode) override; diff --git a/src/plugins/libparted/libpartedbackend.cpp b/src/plugins/libparted/libpartedbackend.cpp index f7a6177..639d69a 100644 --- a/src/plugins/libparted/libpartedbackend.cpp +++ b/src/plugins/libparted/libpartedbackend.cpp @@ -359,6 +359,8 @@ void LibPartedBackend::scanDevicePartitions(PedDevice*, Device& d, PedDisk* pedD luksFs->setCryptOpen(isCryptOpen); if (isCryptOpen) { + luksFs->loadInnerFilesystem(mapperNode); + mountPoint = mountPoints.findByDevice(mapperNode) ? mountPoints.findByDevice(mapperNode)->mountPoint() : QString();