partitionedfs: fix the mbr_sector_skipped hack
authorArtem Bityutskiy <artem.bityutskiy@intel.com>
Fri, 4 Jan 2013 12:35:25 +0000 (14:35 +0200)
committerArtem Bityutskiy <artem.bityutskiy@intel.com>
Thu, 10 Jan 2013 12:13:17 +0000 (14:13 +0200)
The entire PartitionedMount class assumes there may be more than one disk. And
the 'mbr_sector_skipped' hack is wrong because it assumes there is only one
disk and we need to skip only once, which is incorrect.

This patch fixes the issue. And it actually makes things nicer as well.

Change-Id: Icb399cfa488786ce6668ffaa21146f01a3e15a08
Signed-off-by: Artem Bityutskiy <artem.bityutskiy@intel.com>
mic/utils/partitionedfs.py

index 56887d0..013b7c5 100644 (file)
@@ -170,7 +170,6 @@ class PartitionedMount(Mount):
             return
 
         self._partitions_layed_out = True
-        mbr_sector_skipped = False
 
         # Go through partitions in the order they are added in .ks file
         for n in range(len(self.partitions)):
@@ -179,12 +178,6 @@ class PartitionedMount(Mount):
             if not self.disks.has_key(p['disk']):
                 raise MountError("No disk %s for partition %s" % (p['disk'], p['mountpoint']))
 
-            if not mbr_sector_skipped:
-                #  This hack is used to remove one sector from the first partition,
-                #  that is the used to the MBR.
-                p['size'] -= 1
-                mbr_sector_skipped = True
-
             # Get the disk where the partition is located
             d = self.disks[p['disk']]
             d['numpart'] += 1
@@ -192,6 +185,9 @@ class PartitionedMount(Mount):
             if d['numpart'] == 1:
                 # Skip one sector required for the MBR
                 d['offset'] += MBR_SECTOR_LEN
+                # Steal one sector from the first partition to offset for the
+                # MBR sector.
+                p['size'] -= MBR_SECTOR_LEN
 
             if p['align']:
                 # If not first partition and we do have alignment set we need