[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]
Re: [PATCH master] Check size limits on pre-existing partitions
- From: David Lehman <dlehman redhat com>
- To: Discussion of Development and Customization of the Red Hat Linux Installer <anaconda-devel-list redhat com>
- Subject: Re: [PATCH master] Check size limits on pre-existing partitions
- Date: Tue, 22 Mar 2011 14:10:29 -0500
On Fri, 2011-03-18 at 15:50 -0700, Brian C. Lane wrote:
> When editing a pre-existing partition and changing its format type we
> need to re-check the size limits. eg. mounting a partition on /boot/efi
> needs to make sure it is <= 256M
I hate functions/methods that return strings like that, but otherwise it
looks okay.
>
> Resolves: rhbz#684860
> ---
> pyanaconda/storage/__init__.py | 8 ++++++
> pyanaconda/storage/devices.py | 48 ++++++++++++++++++++++++++++++++++++
> pyanaconda/storage/partitioning.py | 12 +--------
> 3 files changed, 57 insertions(+), 11 deletions(-)
>
> diff --git a/pyanaconda/storage/__init__.py b/pyanaconda/storage/__init__.py
> index a0cbdfa..b000573 100644
> --- a/pyanaconda/storage/__init__.py
> +++ b/pyanaconda/storage/__init__.py
> @@ -1102,6 +1102,14 @@ class Storage(object):
> % {'mount': mount, 'size': size,
> 'productName': productName})
>
> + for (mount, device) in filesystems.items():
> + problem = filesystems[mount].checkSize()
> + if problem:
> + errors.append(_("Your %s partition is too %s for %s formatting "
> + "(allowable size is %d MB to %d MB)")
> + % (mount, problem, device.format.name,
> + device.minSize, device.maxSize))
> +
> usb_disks = []
> firewire_disks = []
> for disk in self.disks:
> diff --git a/pyanaconda/storage/devices.py b/pyanaconda/storage/devices.py
> index 80bb7be..303856b 100644
> --- a/pyanaconda/storage/devices.py
> +++ b/pyanaconda/storage/devices.py
> @@ -932,6 +932,19 @@ class StorageDevice(Device):
> break
> return grow
>
> + def checkSize(self):
> + """ Check to make sure the size of the device is allowed by the
> + format used.
> +
> + return None is all is ok
> + return large or small depending on the problem
> + """
> + problem = None
> + if self.format.maxSize and self.size > self.format.maxSize:
> + problem = _("large")
> + elif self.format.minSize and self.size < self.format.minSize:
> + problem = _("small")
> + return problem
>
> class DiskDevice(StorageDevice):
> """ A disk """
> @@ -1595,6 +1608,24 @@ class PartitionDevice(StorageDevice):
> return super(PartitionDevice, self).resizable and \
> self.disk.type != 'dasd'
>
> + def checkSize(self):
> + """ Check to make sure the size of the device is allowed by the
> + format used.
> +
> + return None is all is ok
> + return large or small depending on the problem
> + """
> + problem = None
> + if self.format.maxSize and self.size > self.format.maxSize:
> + problem = _("large")
> + elif (self.format.minSize and
> + (not self.req_grow and
> + self.size < self.format.minSize) or
> + (self.req_grow and self.req_max_size and
> + self.req_max_size < self.format.minSize)):
> + problem = _("small")
> + return problem
> +
> class DMDevice(StorageDevice):
> """ A device-mapper device """
> _type = "dm"
> @@ -2553,6 +2584,23 @@ class LVMLogicalVolumeDevice(DMDevice):
> # is different (ofcourse)
> return "rd_LVM_LV=%s/%s" % (self.vg.name, self._name)
>
> + def checkSize(self):
> + """ Check to make sure the size of the device is allowed by the
> + format used.
> +
> + return None is all is ok
> + return large or small depending on the problem
> + """
> + problem = None
> + if self.format.maxSize and self.size > self.format.maxSize:
> + problem = _("large")
> + elif (self.format.minSize and
> + (not self.req_grow and
> + self.size < self.format.minSize) or
> + (self.req_grow and self.req_max_size and
> + self.req_max_size < self.format.minSize)):
> + problem = _("small")
> + return problem
>
> class MDRaidArrayDevice(StorageDevice):
> """ An mdraid (Linux RAID) device. """
> diff --git a/pyanaconda/storage/partitioning.py b/pyanaconda/storage/partitioning.py
> index e8f3921..aebd7b8 100644
> --- a/pyanaconda/storage/partitioning.py
> +++ b/pyanaconda/storage/partitioning.py
> @@ -1000,17 +1000,7 @@ def allocatePartitions(storage, disks, partitions, freespace, bootloader=None):
> if _part.req_grow:
> current_free = None
>
> - problem = None
> - if _part.format.maxSize and _part.req_size > _part.format.maxSize:
> - problem = "large"
> - elif (_part.format.minSize and
> - (not _part.req_grow and
> - _part.req_size < _part.format.minSize) or
> - (_part.req_grow and _part.req_max_size and
> - _part.req_max_size < _part.format.minSize)):
> - # format max/min size also enforced in growPartitions
> - problem = "small"
> -
> + problem = _part.checkSize()
> if problem:
> raise PartitioningError("partition is too %s for %s formatting "
> "(allowable size is %d MB to %d MB)"
[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]