On certain hardware where virtual and physical harddrives share the same common name, a smart mapping is done and block devices will show up under /sys/class/block/ but not always under /dev/* and thus breaking the all_blockdevices() logic. This should fix that. (#1475)

This commit is contained in:
Anton Hvornum 2022-09-21 12:36:54 +02:00 committed by GitHub
parent c1f21e7ca4
commit 985ff449db
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 6 additions and 1 deletions

View File

@ -220,7 +220,12 @@ def all_blockdevices(mappers=False, partitions=False, error=False) -> Dict[str,
# we'll iterate the /sys/class definitions and find the information
# from there.
for block_device in glob.glob("/sys/class/block/*"):
device_path = f"/dev/{pathlib.Path(block_device).readlink().name}"
device_path = pathlib.Path(f"/dev/{pathlib.Path(block_device).readlink().name}")
if device_path.exists() is False:
log(f"Unknown device found by '/sys/class/block/*', ignoring: {device_path}", level=logging.WARNING, fg="yellow")
continue
try:
information = blkid(f'blkid -p -o export {device_path}')
except SysCallError as ex: