From 754e414742e0d68d8afec6de143e7bbb0a2908e3 Mon Sep 17 00:00:00 2001 From: Anders Ingemann Date: Tue, 8 Oct 2013 23:12:03 +0200 Subject: [PATCH] Document post-mbr gap and make it MBR-only --- base/fs/partitionmaps/abstract.py | 2 +- base/fs/partitionmaps/mbr.py | 3 +++ base/fs/partitions/base.py | 2 +- base/fs/partitions/mbr.py | 6 ++++++ 4 files changed, 11 insertions(+), 2 deletions(-) diff --git a/base/fs/partitionmaps/abstract.py b/base/fs/partitionmaps/abstract.py index f26b970..bac76c4 100644 --- a/base/fs/partitionmaps/abstract.py +++ b/base/fs/partitionmaps/abstract.py @@ -22,7 +22,7 @@ class AbstractPartitionMap(FSMProxy): return self.fsm.current == 'mapped' def get_total_size(self): - return sum(p.size for p in self.partitions) + 1 + return sum(p.size for p in self.partitions) def create(self, volume): self.fsm.create(volume=volume) diff --git a/base/fs/partitionmaps/mbr.py b/base/fs/partitionmaps/mbr.py index 0d4b50f..d2d8a8d 100644 --- a/base/fs/partitionmaps/mbr.py +++ b/base/fs/partitionmaps/mbr.py @@ -19,6 +19,9 @@ class MBRPartitionMap(AbstractPartitionMap): super(MBRPartitionMap, self).__init__() + def get_total_size(self): + return sum(p.size for p in self.partitions) + 1 # Post-MBR gap for embedding grub + def _before_create(self, event): volume = event.volume log_check_call(['/sbin/parted', '--script', '--align', 'none', volume.device_path, diff --git a/base/fs/partitions/base.py b/base/fs/partitions/base.py index 8986285..0769de5 100644 --- a/base/fs/partitions/base.py +++ b/base/fs/partitions/base.py @@ -26,7 +26,7 @@ class BasePartition(AbstractPartition): def get_start(self): if self.previous is None: - return 1 + return 0 else: return self.previous.get_start() + self.previous.size diff --git a/base/fs/partitions/mbr.py b/base/fs/partitions/mbr.py index 511cd10..d10c2d8 100644 --- a/base/fs/partitions/mbr.py +++ b/base/fs/partitions/mbr.py @@ -4,6 +4,12 @@ from base import BasePartition class MBRPartition(BasePartition): + def get_start(self): + if self.previous is None: + return 1 # Post-MBR gap for embedding grub + else: + return self.previous.get_start() + self.previous.size + def _before_create(self, e): start = self.get_start() parted_command = ('mkpart primary {start}MiB {end}MiB'