[PATCH] Ensure we are specifying sensible target sizes for resize. (#1120964)

David Lehman dlehman at redhat.com
Thu Oct 30 18:23:11 UTC 2014


On 10/30/2014 01:16 PM, David Lehman wrote:
> ---
>   pyanaconda/kickstart.py                | 4 ++++
>   pyanaconda/ui/gui/spokes/custom.py     | 1 +
>   pyanaconda/ui/gui/spokes/lib/resize.py | 4 ++--
>   3 files changed, 7 insertions(+), 2 deletions(-)
>
> diff --git a/pyanaconda/kickstart.py b/pyanaconda/kickstart.py
> index 27c2a1b..2c09774 100644
> --- a/pyanaconda/kickstart.py
> +++ b/pyanaconda/kickstart.py
> @@ -871,6 +871,7 @@ class LogVolData(commands.logvol.F21_LogVolData):
>                           msg=_("Logical volume \"%s\" given in logvol command does not exist.") % self.name))
>
>               if self.resize:
> +                size = dev.alignTargetSize(size)
>                   if size < dev.currentSize:
>                       # shrink
>                       try:
> @@ -932,6 +933,7 @@ class LogVolData(commands.logvol.F21_LogVolData):
>               removeExistingFormat(device, storage)
>
>               if self.resize:
> +                size = device.alignTargetSize(size)
>                   try:
>                       devicetree.registerAction(ActionResizeDevice(device, size))
>                   except ValueError:
> @@ -1169,6 +1171,7 @@ class PartitionData(commands.partition.F18_PartData):
>                           msg=_("Partition \"%s\" given in part command does not exist.") % self.onPart))
>
>               if self.resize:
> +                size = dev.raw_device.alignTargetSize(size)
>                   if size < dev.currentSize:
>                       # shrink
>                       try:
> @@ -1261,6 +1264,7 @@ class PartitionData(commands.partition.F18_PartData):
>
>               removeExistingFormat(device, storage)
>               if self.resize:
> +                size = device.raw_device.alignTargetSize(size)
>                   try:
>                       devicetree.registerAction(ActionResizeDevice(device, size))
>                   except ValueError:
> diff --git a/pyanaconda/ui/gui/spokes/custom.py b/pyanaconda/ui/gui/spokes/custom.py
> index 9b01b51..ae7ddd0 100644
> --- a/pyanaconda/ui/gui/spokes/custom.py
> +++ b/pyanaconda/ui/gui/spokes/custom.py
> @@ -746,6 +746,7 @@ class CustomPartitioningSpoke(NormalSpoke, StorageChecker):
>               use_old_size = use_dev.size
>
>           # bound size to boundaries given by the device
> +        use_size = udev_dev.alignTargetSize(use_size)

That won't work, will it? Fixed locally.

>           size = storage_utils.bound_size(use_size, use_dev, use_old_size)
>
>           # And then we need to re-check that the max size is actually
> diff --git a/pyanaconda/ui/gui/spokes/lib/resize.py b/pyanaconda/ui/gui/spokes/lib/resize.py
> index ee9c322..0f52f22 100644
> --- a/pyanaconda/ui/gui/spokes/lib/resize.py
> +++ b/pyanaconda/ui/gui/spokes/lib/resize.py
> @@ -435,8 +435,8 @@ class ResizeDialog(GUIObject):
>               return False
>           elif obj.action == _(SHRINK) and int(device.size) != int(obj.target):
>               if device.resizable:
> -                # round this up to nearest MB? MiB? Maybe in targetSize setter.
> -                self.storage.resizeDevice(device, Size(obj.target))
> +                aligned = device.alignTargetSize(Size(obj.target))
> +                self.storage.resizeDevice(device, aligned)
>               else:
>                   self._recursiveRemove(device)
>           elif obj.action == _(DELETE):
>



More information about the anaconda-patches mailing list