diff --git a/src/modules/partition/core/PartitionActions.cpp b/src/modules/partition/core/PartitionActions.cpp index 7b9f156e9..f8e44f22e 100644 --- a/src/modules/partition/core/PartitionActions.cpp +++ b/src/modules/partition/core/PartitionActions.cpp @@ -29,7 +29,6 @@ #include #include -#include #include @@ -202,15 +201,18 @@ void doReplacePartition( PartitionCoreModule* core, Device* dev, Partition* partition ) { cDebug() << "doReplacePartition for device" << partition->partitionPath(); - - //HACK: setFileSystem is private in Partition for whatever reason, making the clone - // with new type feature in FSF unusable outside Partition and friends. - // Dragons be here. - FileSystem* innerFs = (FileSystem*)( &( partition->fileSystem() ) ); - innerFs = FileSystemFactory::cloneWithNewType( FileSystem::Ext4, partition->fileSystem() ); - PartitionInfo::setMountPoint( partition, "/" ); - PartitionInfo::setFormat( partition, true ); - core->formatPartition( dev, partition ); + Partition* newPartition = KPMHelpers::createNewPartition( + partition->parent(), + *dev, + partition->roles(), + FileSystem::Ext4, + partition->firstSector(), + partition->lastSector() ); + PartitionInfo::setMountPoint( newPartition, "/" ); + PartitionInfo::setFormat( newPartition, true ); + + core->deletePartition( dev, partition ); + core->createPartition( dev, newPartition ); core->dumpQueue(); }