summaryrefslogtreecommitdiffstats
path: root/tdecore/tdehw/tdehardwaredevices.cpp
diff options
context:
space:
mode:
authorSlávek Banko <slavek.banko@axis.cz>2016-02-04 20:54:08 +0100
committerSlávek Banko <slavek.banko@axis.cz>2016-02-04 20:54:08 +0100
commit51046798068760d062a1924fff4a99c7b8a60b71 (patch)
treeb74201ea57f2a191082e939392c552494e2a1bc4 /tdecore/tdehw/tdehardwaredevices.cpp
parentf8fbb3bd78ac30e41c81261b4a71c61dcead811f (diff)
downloadtdelibs-51046798068760d062a1924fff4a99c7b8a60b71.tar.gz
tdelibs-51046798068760d062a1924fff4a99c7b8a60b71.zip
Set partition disk type and status based on the parent device
Signed-off-by: Slávek Banko <slavek.banko@axis.cz>
Diffstat (limited to 'tdecore/tdehw/tdehardwaredevices.cpp')
-rw-r--r--tdecore/tdehw/tdehardwaredevices.cpp16
1 files changed, 15 insertions, 1 deletions
diff --git a/tdecore/tdehw/tdehardwaredevices.cpp b/tdecore/tdehw/tdehardwaredevices.cpp
index e682a23d8..c2a7fd788 100644
--- a/tdecore/tdehw/tdehardwaredevices.cpp
+++ b/tdecore/tdehw/tdehardwaredevices.cpp
@@ -2594,7 +2594,18 @@ void TDEHardwareDevices::updateExistingDeviceInformation(TDEGenericDevice* exist
TDEDiskDeviceType::TDEDiskDeviceType disktype = sdevice->diskType();
TDEDiskDeviceStatus::TDEDiskDeviceStatus diskstatus = TDEDiskDeviceStatus::Null;
- disktype = classifyDiskType(dev, devicenode, devicebus, devicetypestring, systempath, devicevendor, devicemodel, filesystemtype, devicedriver);
+ if (TQString(udev_device_get_property_value(dev, "ID_PART_ENTRY_NUMBER")).isEmpty()) {
+ disktype = classifyDiskType(dev, devicenode, devicebus, devicetypestring, systempath, devicevendor, devicemodel, filesystemtype, devicedriver);
+ }
+ else {
+ // Set partition disk type and status based on the parent device
+ TQString parentsyspath = systempath;
+ parentsyspath.truncate(parentsyspath.length()-1); // Remove trailing slash
+ parentsyspath.truncate(parentsyspath.findRev("/"));
+ TDEStorageDevice* parentdisk = static_cast<TDEStorageDevice*>(findBySystemPath(parentsyspath));
+ disktype = parentdisk->diskType();
+ diskstatus = diskstatus | parentdisk->diskStatus();
+ }
sdevice->internalSetDiskType(disktype);
device = classifyUnknownDeviceByExternalRules(dev, device, true); // Check external rules for possible subtype overrides
disktype = sdevice->diskType(); // The type can be overridden by an external rule
@@ -2724,6 +2735,9 @@ void TDEHardwareDevices::updateExistingDeviceInformation(TDEGenericDevice* exist
if ((filesystemtype.upper() != "CRYPTO_LUKS") && (filesystemtype.upper() != "CRYPTO") && (filesystemtype.upper() != "SWAP") && (!filesystemtype.isNull())) {
diskstatus = diskstatus | TDEDiskDeviceStatus::ContainsFilesystem;
}
+ else {
+ diskstatus = diskstatus & ~TDEDiskDeviceStatus::ContainsFilesystem;
+ }
// Set mountable flag if device is likely to be mountable
diskstatus = diskstatus | TDEDiskDeviceStatus::Mountable;