From 7195ed078fdb7dec9470ccb2df595e1b77f72968 Mon Sep 17 00:00:00 2001 From: jbleyel Date: Tue, 14 Jan 2025 14:16:38 +0100 Subject: [PATCH] [Harddisk] * improve internal disk detection --- lib/python/Components/Harddisk.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/lib/python/Components/Harddisk.py b/lib/python/Components/Harddisk.py index 6dc4799b5bb..b66f8037135 100644 --- a/lib/python/Components/Harddisk.py +++ b/lib/python/Components/Harddisk.py @@ -471,7 +471,7 @@ def getBlockDevInfo(self, blockdev): partitions = [] try: if exists(join(devpath, "removable")): - removable = bool(int(readFile(join(devpath, "removable")))) + removable = bool(int(readFile(join(devpath, "removable")))) #TODO: This needs to be improved because some internal disks have removable = 1 if exists(join(devpath, "dev")): dev = int(readFile(join(devpath, "dev")).split(":")[0]) else: @@ -533,7 +533,14 @@ def parseDeviceData(inputData): device = eventData["DEVNAME"].replace("/dev/", "") shortDevice = device[:7] if device.startswith("mmcblk") else sub(r"[\d]", "", device) removable = fileReadLine(f"/sys/block/{shortDevice}/removable", source=MODULE_NAME) - eventData["SORT"] = 0 if ("pci" in eventData["DEVPATH"] or "ahci" in eventData["DEVPATH"]) and removable == "0" else 1 + internal = ("pci" in eventData["DEVPATH"] or "ahci" in eventData["DEVPATH"]) + if internal and removable == "1": # This is probably a driver bug + for physdevprefix, pdescription in list(getDeviceDB().items()): + if eventData["DEVPATH"].startswith(physdevprefix) and "SATA" in pdescription: + removable = "0" # Force removable to 0 if SATA + if removable == "1": + print("[Harddisk] Warning! internal and removable = 1") + eventData["SORT"] = 0 if internal or removable == "0" else 1 devices.append(eventData) remove(fileName)