From 70573543f24c37807e4207d9d07a4154890ea141 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andrius=20=C5=A0tikonas?= Date: Thu, 12 Oct 2017 18:54:43 +0100 Subject: [PATCH] Use KPMcore NewOperation to create partitions. --- .../partition/jobs/CreatePartitionJob.cpp | 87 ++----------------- 1 file changed, 7 insertions(+), 80 deletions(-) diff --git a/src/modules/partition/jobs/CreatePartitionJob.cpp b/src/modules/partition/jobs/CreatePartitionJob.cpp index 562202e30..efefcae86 100644 --- a/src/modules/partition/jobs/CreatePartitionJob.cpp +++ b/src/modules/partition/jobs/CreatePartitionJob.cpp @@ -34,6 +34,7 @@ #include #include #include +#include #include // Qt @@ -79,89 +80,15 @@ CreatePartitionJob::prettyStatusMessage() const Calamares::JobResult CreatePartitionJob::exec() { - QString partitionPath; - FileSystem *fs; Report report( nullptr ); + NewOperation op(*m_device, m_partition); + op.setStatus(Operation::StatusRunning); - if (m_device->type() == Device::Disk_Device) { - int step = 0; - const qreal stepCount = 4; - QString message = tr( "The installer failed to create partition on disk '%1'." ).arg( m_device->name() ); + QString message = tr( "The installer failed to create partition on disk '%1'." ).arg( m_device->name() ); + if (op.execute(report)) + return Calamares::JobResult::ok(); - progress( step++ / stepCount ); - CoreBackend* backend = CoreBackendManager::self()->backend(); - QScopedPointer backendDevice( backend->openDevice( m_device->deviceNode() ) ); - if ( !backendDevice.data() ) - { - return Calamares::JobResult::error( - message, - tr( "Could not open device '%1'." ).arg( m_device->deviceNode() ) - ); - } - - progress( step++ / stepCount ); - QScopedPointer backendPartitionTable( backendDevice->openPartitionTable() ); - if ( !backendPartitionTable.data() ) - { - return Calamares::JobResult::error( - message, - tr( "Could not open partition table." ) - ); - } - - progress( step++ / stepCount ); - partitionPath = backendPartitionTable->createPartition( report, *m_partition ); - if ( partitionPath.isEmpty() ) - { - return Calamares::JobResult::error( - message, - report.toText() - ); - } - m_partition->setPartitionPath( partitionPath ); - backendPartitionTable->commit(); - - progress( step++ / stepCount ); - fs = &m_partition->fileSystem(); - if ( fs->type() == FileSystem::Unformatted || fs->type() == FileSystem::Extended ) - return Calamares::JobResult::ok(); - - if ( !backendPartitionTable->setPartitionSystemType( report, *m_partition ) ) - { - return Calamares::JobResult::error( - tr( "The installer failed to update partition table on disk '%1'." ).arg( m_device->name() ), - report.toText() - ); - } - - backendPartitionTable->commit(); - } - else - { - LvmDevice *dev = dynamic_cast(m_device); - m_partition->setState(Partition::StateNone); - - partitionPath = m_partition->partitionPath(); - QString lvname = partitionPath.right(partitionPath.length() - partitionPath.lastIndexOf(QStringLiteral("/")) - 1); - if ( !LvmDevice::createLV(report, *dev, *m_partition, lvname)) - { - return Calamares::JobResult::error( - tr( "The installer failed to create LVM logical volume %1." ).arg( lvname ), - report.toText() - ); - } - fs = &m_partition->fileSystem(); - } - - if ( !fs->create( report, partitionPath ) ) - { - return Calamares::JobResult::error( - tr( "The installer failed to create file system on partition %1." ).arg( partitionPath ), - report.toText() - ); - } - - return Calamares::JobResult::ok(); + return Calamares::JobResult::error(message, report.toText()); } void