diff --git a/src/udisks2blockdevices.cpp b/src/udisks2blockdevices.cpp index b13eef1..c4f4266 100644 --- a/src/udisks2blockdevices.cpp +++ b/src/udisks2blockdevices.cpp @@ -280,7 +280,7 @@ void BlockDevices::complete(Block *block, bool forceAccept) if (block->isEncrypted()) { QString newPath = block->path(); unlocked = find([newPath](const Block *block) { - return block->cryptoBackingDeviceObjectPath() == newPath; + return block->cryptoBackingDeviceObjectPath() == newPath && !block->isLocking(); }); } diff --git a/src/udisks2monitor.cpp b/src/udisks2monitor.cpp index 7e6a999..f5ca1d4 100644 --- a/src/udisks2monitor.cpp +++ b/src/udisks2monitor.cpp @@ -261,16 +261,16 @@ void UDisks2::Monitor::interfacesAdded(const QDBusObjectPath &objectPath, const operation == UDISKS2_JOB_OF_FS_FORMAT) { UDisks2::Job *job = new UDisks2::Job(path, dict); updatePartitionStatus(job, true); + if (job->operation() == Job::Lock) { + for (const QString &dbusObjectPath : job->objects()) { + m_blockDevices->lock(dbusObjectPath); + } + } connect(job, &UDisks2::Job::completed, this, [this](bool success) { UDisks2::Job *job = qobject_cast(sender()); job->dumpInfo(); - - if (job->operation() == Job::Lock) { - for (const QString &dbusObjectPath : job->objects()) { - m_blockDevices->lock(dbusObjectPath); - } - } else { + if (job->operation() != Job::Lock) { updatePartitionStatus(job, success); } });