From ca804f0c916fb21504a1393b4c8a016df9671aff Mon Sep 17 00:00:00 2001 From: Richard Alloway Date: Mon, 26 Feb 2024 15:15:34 -0500 Subject: [PATCH] Update actor.py to support NVMe device enumeration --- .../efibootorderfix/finalization/actor.py | 20 +++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/repos/system_upgrade/common/actors/efibootorderfix/finalization/actor.py b/repos/system_upgrade/common/actors/efibootorderfix/finalization/actor.py index 18fc920aec..9564c5bfb6 100644 --- a/repos/system_upgrade/common/actors/efibootorderfix/finalization/actor.py +++ b/repos/system_upgrade/common/actors/efibootorderfix/finalization/actor.py @@ -42,8 +42,24 @@ def process(self): } def devparts(dev): - part = next(re.finditer(r'\d+$', dev)).group(0) - dev = dev[:-len(part)] + """ + NVMe block devices aren't named like SCSI/ATA/etc block devices and must be parsed differently. + SCSI/ATA/etc devices have a syntax resembling /dev/sdb4 for the 4th partition on the 2nd disk. + NVMe devices have a syntax resembling /dev/nvme0n2p4 for the 4th partition on the 2nd disk. + """ + if '/dev/nvme' in dev: + """ + NVMe + """ + part = next(re.finditer(r'p\d+$', dev)).group(0) + dev = dev[:-len(part)] + part = part[1:] + else: + """ + Non-NVMe (SCSI, ATA, etc) + """ + part = next(re.finditer(r'\d+$', dev)).group(0) + dev = dev[:-len(part)] return [dev, part]; with open('/etc/system-release', 'r') as sr: