[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

[PATCH] Fix EFI boot prom multipath (forward port of #691794)



---
 pyanaconda/bootloader.py |   23 ++++++++++++++---------
 1 files changed, 14 insertions(+), 9 deletions(-)

diff --git a/pyanaconda/bootloader.py b/pyanaconda/bootloader.py
index db0626f..68c2795 100644
--- a/pyanaconda/bootloader.py
+++ b/pyanaconda/bootloader.py
@@ -1520,22 +1520,27 @@ class EFIGRUB(GRUB):
     def add_efi_boot_target(self):
         boot_efi = self.storage.mountpoints["/boot/efi"]
         if boot_efi.type == "partition":
-            boot_disk = boot_efi.disk
+            boot_disks = [ boot_efi.disk ]
             boot_part_num = boot_efi.partedPartition.number
         elif boot_efi.type == "mdarray":
             # FIXME: I'm just guessing here. This probably needs the full
             #        treatment, ie: multiple targets for each member.
-            boot_disk = boot_efi.parents[0].disk
+            boot_disks = [ boot_efi.parents[0].disk ]
             boot_part_num = boot_efi.parents[0].partedPartition.number
+        elif boot_efi.type == "dm-multipath":
+            boot_disks = [ d.disk for d in boot_efi.parents ]
+            boot_part_num = boot_efi.parents[0].partedPartition.number
+            
         boot_part_num = str(boot_part_num)
 
-        rc = self.efibootmgr("-c", "-w", "-L", productName,
-                             "-d", boot_disk.path, "-p", boot_part_num,
-                             "-l", "\\EFI\\redhat\\grub.efi",
-                             root=ROOT_PATH,
-                             stdout="/dev/tty5", stderr="/dev/tty5")
-        if rc:
-            raise BootLoaderError("failed to set new efi boot target")
+        for boot_disk in boot_disks:
+            rc = self.efibootmgr("-c", "-w", "-L", productName,
+                                 "-d", boot_disk.path, "-p", boot_part_num,
+                                 "-l", "\\EFI\\redhat\\grub.efi",
+                                 root=ROOT_PATH,
+                                 stdout="/dev/tty5", stderr="/dev/tty5")
+            if rc:
+                raise BootLoaderError("failed to set new efi boot target")
 
     def install(self):
         self.remove_efi_boot_target()
-- 
1.7.4.4


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]