[PATCH 1/2] Add an alignment property to DiskLabel.

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

 



---
 storage/formats/disklabel.py |   32 ++++++++++++++++++++++++++++++++
 1 files changed, 32 insertions(+), 0 deletions(-)

diff --git a/storage/formats/disklabel.py b/storage/formats/disklabel.py
index d277323..8917efd 100644
--- a/storage/formats/disklabel.py
+++ b/storage/formats/disklabel.py
@@ -62,6 +62,7 @@ class DiskLabel(DeviceFormat):
         self._partedDevice = None
         self._partedDisk = None
         self._origPartedDisk = None
+        self._alignment = None
 
         if self.partedDevice:
             # set up the parted objects and raise exception on failure
@@ -278,5 +279,36 @@ class DiskLabel(DeviceFormat):
             parts = []
         return parts
 
+    @property
+    def alignment(self):
+        """ Alignment requirements for this device. """
+        if not self._alignment:
+            try:
+                disklabel_alignment = self.partedDisk.partitionAlignment
+            except _ped.CreateException:
+                disklabel_alignment = parted.Alignment(offset=0, grainSize=1)
+
+            try:
+                optimum_device_alignment = self.partedDevice.optimumAlignment
+            except _ped.CreateException:
+                optimum_device_alignment = None
+
+            try:
+                minimum_device_alignment = self.partedDevice.minimumAlignment
+            except _ped.CreateException:
+                minimum_device_alignment = None
+
+            try:
+                a = optimum_device_alignment.intersect(disklabel_alignment)
+            except (ArithmeticError, AttributeError):
+                try:
+                    a = minimum_device_alignment.intersect(disklabel_alignment)
+                except (ArithmeticError, AttributeError):
+                    a = disklabel_alignment
+
+            self._alignment = a
+
+        return self._alignment
+
 register_device_format(DiskLabel)
 
-- 
1.6.2.5

_______________________________________________
Anaconda-devel-list mailing list
Anaconda-devel-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/anaconda-devel-list

[Index of Archives]     [Kickstart]     [Fedora Users]     [Fedora Legacy List]     [Fedora Maintainers]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [Yosemite Photos]     [KDE Users]     [Fedora Tools]
  Powered by Linux