Index: solid/solid/backends/udisks/udisksdevice.cpp =================================================================== --- a/solid/solid/backends/udisks/udisksdevice.cpp +++ b/solid/solid/backends/udisks/udisksdevice.cpp 2011-11-22 22:24:34.041853516 -0300 @@ -156,7 +156,8 @@ return m_udi.endsWith(":media"); } else { return prop("DeviceIsPartition").toBool() - || prop("IdUsage").toString()=="filesystem"; + || prop("IdUsage").toString()=="filesystem" + || prop("IdUsage").toString()=="crypto"; } case Solid::DeviceInterface::StorageAccess: Index: solid/solid/backends/udisks/udisksstorageaccess.cpp =================================================================== --- a/solid/solid/backends/udisks/udisksstorageaccess.cpp +++ b/solid/solid/backends/udisks/udisksstorageaccess.cpp 2011-11-22 22:22:39.195853479 -0300 @@ -161,8 +161,12 @@ { QString clearTextPath = m_device->prop("LuksHolder").value<QDBusObjectPath>().path(); if (isLuksDevice() && clearTextPath != "/") // unlocked device, lock it + { callCryptoTeardown(); - + } + else if (m_device->prop("DeviceIsLuksCleartext").toBool()) { + callCryptoTeardown(true); // Lock crypted parent + } else { m_teardownInProgress = false; @@ -358,10 +362,12 @@ SLOT(slotDBusError(const QDBusError &))); } -bool UDisksStorageAccess::callCryptoTeardown() +bool UDisksStorageAccess::callCryptoTeardown(bool actOnParent) { QDBusConnection c = QDBusConnection::systemBus(); - QDBusMessage msg = QDBusMessage::createMethodCall(UD_DBUS_SERVICE, m_device->udi(), UD_DBUS_INTERFACE_DISKS_DEVICE, "LuksLock"); + QDBusMessage msg = QDBusMessage::createMethodCall(UD_DBUS_SERVICE, + actOnParent?(m_device->prop("LuksCleartextSlave").value<QDBusObjectPath>().path()):m_device->udi(), + UD_DBUS_INTERFACE_DISKS_DEVICE, "LuksLock"); msg << QStringList(); // options, unused now return c.callWithCallback(msg, this, Index: solid/solid/backends/udisks/udisksstorageaccess.h =================================================================== --- a/solid/solid/backends/udisks/udisksstorageaccess.h +++ b/solid/solid/backends/udisks/udisksstorageaccess.h 2011-11-22 22:22:39.225853478 -0300 @@ -82,7 +82,7 @@ bool requestPassphrase(); void callCryptoSetup( const QString & passphrase ); - bool callCryptoTeardown(); + bool callCryptoTeardown( bool actOnParent=false ); QString generateReturnObjectPath();