[PATCH 2/5] Make minSize, maxSize consistent and correct.

Anne Mulhern amulhern at redhat.com
Thu Mar 20 20:36:28 UTC 2014





----- Original Message -----
> From: "David Lehman" <dlehman at redhat.com>
> To: anaconda-patches at lists.fedorahosted.org
> Sent: Thursday, March 20, 2014 1:06:37 PM
> Subject: [PATCH 2/5] Make minSize, maxSize consistent and correct.
> 
> StorageDevice defaults should be dependent on whether the device is
> resizable -- not whether or not the format has known size limits.
> 
> Any minSize or maxSize may be zero, meaning there is no known limit.
> ---
>  blivet/devices.py | 22 ++++++++++++----------
>  1 file changed, 12 insertions(+), 10 deletions(-)
> 
> diff --git a/blivet/devices.py b/blivet/devices.py
> index 47ad3b3..750ce8a 100644
> --- a/blivet/devices.py
> +++ b/blivet/devices.py
> @@ -850,18 +850,12 @@ class StorageDevice(Device):
>      @property
>      def minSize(self):
>          """ The minimum size this device can be. """
> -        if self.format.minSize:
> -            return self.format.minSize
> -        else:
> -            return self.size
> +        return self.format.minSize if self.resizable else self.currentSize
>  
>      @property
>      def maxSize(self):
>          """ The maximum size this device can be. """
> -        if self.format.maxSize > self.currentSize:
> -            return self.currentSize
> -        else:
> -            return self.format.maxSize
> +        return self.format.maxSize if self.resizable else self.currentSize
>  
>      @property
>      def status(self):
> @@ -1715,7 +1709,11 @@ class PartitionDevice(StorageDevice):
>              if partition.type == parted.PARTITION_FREESPACE:
>                  maxPartSize = self.size +
>                  Size(bytes=partition.getLength(unit="B"))
>  
> -        return min(self.format.maxSize, maxPartSize)
> +        limits = [maxPartSize]
> +        if self.format.maxSize > 0:
> +            limits.append(self.format.maxSize)
> +
> +        return min(limits)
>  

This is special handling introduced by the problem that 0 means 0 and "no max size",
both. It would be nice to have a special Size value that does the correct thing.
Here min("no max size", maxPartSize) ought to be maxPartSize.
What should max("no max size", maxPartSize) be?

>      @property
>      def currentSize(self):
> @@ -2641,7 +2639,11 @@ class LVMLogicalVolumeDevice(DMDevice):
>      @property
>      def maxSize(self):
>          """ The maximum size this lv can be. """
> -        return min(self.format.maxSize, self.size + self.vg.freeSpace)
> +        limits = [self.size + self.vg.freeSpace]
> +        if self.format.maxSize > 0:
> +            limits.append(self.format.maxSize)
> +
> +        return min(limits)
>  

Ditto.

>      @property
>      def vgSpaceUsed(self):
> --
> 1.8.5.3
> 
> _______________________________________________
> anaconda-patches mailing list
> anaconda-patches at lists.fedorahosted.org
> https://lists.fedorahosted.org/mailman/listinfo/anaconda-patches
> 

I believe that maxSize and minSize can be used for both existing and non-existing devices.

That would be valuable information to indicate in method comment, if it is correct.

- mulhern






More information about the anaconda-patches mailing list