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

[RHEL6 PATCH] Reuse existing /boot/efi and ignore vfat on non-boot devices (#723976)



From: "Brian C. Lane" <bcl redhat com>

Set the size of new /boot/efi partition requests to the minimum size
instead of a size that is too small.
Use the drivelist to set the device to use for pre-existing /boot/efi
partitions.
Only one /boot/efi is needed on the boot device, set it when
skipping unneeded ones.

Resolves: rhbz#723976

NOTE: Tested on EFI with USB source, DVD source, extra USB vfat and KVM x86_64.
---
 platform.py             |   21 ++++++++++++---------
 storage/devicetree.py   |    1 -
 storage/partitioning.py |    1 +
 3 files changed, 13 insertions(+), 10 deletions(-)

diff --git a/platform.py b/platform.py
index bdb2357..22dbb03 100644
--- a/platform.py
+++ b/platform.py
@@ -207,15 +207,18 @@ class EFI(Platform):
     _minBootPartSize = 50
 
     def bootDevice(self):
-        bootDev = None
-
+        """
+        Return the boot device. The bootloader.drivelist is used to
+        set the precedence in cases where multiple partitions are
+        available from multiple devices.
+        """
+        drive = self.anaconda.id.bootloader.drivelist[0]
         for part in self.anaconda.id.storage.partitions:
-            if part.format.type == "efi" and self.validBootPartSize(part.size):
-                bootDev = part
-                # if we're only picking one, it might as well be the first
-                break
-
-        return bootDev
+           if part.disk and part.disk.name == drive \
+               and part.format.type == "efi" \
+               and self.validBootPartSize(part.size):
+                return part
+        return None
 
     def bootloaderChoices(self, bl):
         bootDev = self.bootDevice()
@@ -271,7 +274,7 @@ class EFI(Platform):
 
     def setDefaultPartitioning(self):
         ret = Platform.setDefaultPartitioning(self)
-        ret.append(PartSpec(mountpoint="/boot/efi", fstype="efi", size=20,
+        ret.append(PartSpec(mountpoint="/boot/efi", fstype="efi", size=self._minBootPartSize,
                             maxSize=200, grow=True, weight=self.weight(fstype="efi")))
         return ret
 
diff --git a/storage/devicetree.py b/storage/devicetree.py
index e9ff36a..723cab5 100644
--- a/storage/devicetree.py
+++ b/storage/devicetree.py
@@ -1857,7 +1857,6 @@ class DeviceTree(object):
                 efi = formats.getFormat("efi")
                 if efi.minSize <= device.size <= efi.maxSize:
                     args[0] = "efi"
-                    kwargs['mountpoint'] = "/boot/efi"
         elif format_type == "hfs":
             # apple bootstrap magic
             if isinstance(device, PartitionDevice) and device.bootable:
diff --git a/storage/partitioning.py b/storage/partitioning.py
index d9a9dc9..dc06920 100644
--- a/storage/partitioning.py
+++ b/storage/partitioning.py
@@ -113,6 +113,7 @@ def _schedulePartitions(anaconda, disks):
                 anaconda.id.bootloader.drivelist[0] == bootdev.disk.name):
                 log.info("partitioning: skipping a EFI System "
                          "Partition request on %s" % bootdev.disk.name)
+                bootdev.format.mountpoint = "/boot/efi"
                 continue
             log.debug("partitioning: allowing a EFI System Partition request")
 
-- 
1.7.6


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