[PATCH] Fix: ArithmeticError: Could not align to closest sector (#561278)

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

 



Given a partition layout like this:

partition startsector endsector
/boot     2048        1026047
PV        1026048     xxxxxxxxxx

Then when we call getFreeRegions() parted gives us a free region with a
geometry starting at sector 63 and ending at sector 2047, which we then try to
align to our 2048 grain, which fails for the starting sector. When we fail to
align, this means that the free region is too small to create an aligned
partition in there, and we should just skip it.
---
 storage/partitioning.py |   16 ++++++++++++++--
 1 files changed, 14 insertions(+), 2 deletions(-)

diff --git a/storage/partitioning.py b/storage/partitioning.py
index d548cdb..b9a5592 100644
--- a/storage/partitioning.py
+++ b/storage/partitioning.py
@@ -725,10 +725,22 @@ def getFreeRegions(disks):
         for f in disk.format.partedDisk.getFreeSpaceRegions():
             # device alignment fixups
             if not disk.format.alignment.isAligned(f, f.start):
-                f.start = disk.format.alignment.alignNearest(f, f.start)
+                try:
+                    f.start = disk.format.alignment.alignNearest(f, f.start)
+                except ArithmeticError, e:
+                    # This happens when the free region is too small to create
+                    # an aligned partition in it, ie the freespace between the
+                    # mbr and the first aligned partition
+                    continue
 
             if not disk.format.endAlignment.isAligned(f, f.end):
-                f.end = disk.format.endAlignment.alignNearest(f, f.end)
+                try:
+                    f.end = disk.format.endAlignment.alignNearest(f, f.end)
+                except ArithmeticError, e:
+                    # This happens when the free region is too small to create
+                    # an aligned partition in it, ie the freespace after the
+                    # last aligned partition
+                    continue
 
             if f.length > 0:
                 free.append(f)
-- 
1.6.6

_______________________________________________
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