[blivet:master 09/11] Use raid.size method to get size of device (#1085474)

Vratislav Podzimek vpodzime at redhat.com
Mon Apr 14 09:12:50 UTC 2014


On Fri, 2014-04-11 at 11:23 -0400, mulhern wrote:
> Resolves: fed#1085474
> 
> Requires modifying superBlockSize() so it can be passed as an argument to
> size().
> 
> Signed-off-by: mulhern <amulhern at redhat.com>
> ---
>  blivet/devices.py     | 25 ++++++++++++++-----------
>  tests/devices_test.py |  1 -
>  2 files changed, 14 insertions(+), 12 deletions(-)
> 
> diff --git a/blivet/devices.py b/blivet/devices.py
> index f6ed975..7bceb87 100644
> --- a/blivet/devices.py
> +++ b/blivet/devices.py
> @@ -3269,9 +3269,16 @@ class MDRaidArrayDevice(ContainerDevice):
>          log.debug("raw RAID %s size == %s", self.level, size)
>          return size
>  
> -    @property
> -    def superBlockSize(self):
> -        return mdraid.get_raid_superblock_size(self.rawArraySize,
> +    def superBlockSize(self, raw_array_size):
> +        """Estimate the superblock size for a member of an array,
> +           given the total available memory for this array and raid level.
> +
> +           :param raw_array_size: total available for this array and level
> +           :type raw_array_size: :class:`~.size.Size`
> +           :returns: estimated superblock size
> +           :rtype: :class:`~.size.Size`
> +        """
> +        return mdraid.get_raid_superblock_size(raw_array_size,
>                                                 version=self.metadataVersion)
>  
>      @property
> @@ -3291,16 +3298,12 @@ class MDRaidArrayDevice(ContainerDevice):
>          if self.type == "mdbiosraidarray":
>              return self._size
>  
> -        smallestMember = self.smallestMember
> -        if smallestMember is None:
> -            return 0
> -
>          if not self.exists or not self.partedDevice:
>              try:
> -                smallestMemberSize = smallestMember.size - self.superBlockSize
> -                size = self.level.get_size(self.memberDevices,
> -                   smallestMemberSize,
> -                   self.chunkSize)
> +                size = self.level.size([ d.size for d in self.devices ],
Please drop the extra space in the square brackets.

> +                    self.memberDevices,
> +                    self.chunkSize,
> +                    self.superBlockSize)
>              except (errors.MDRaidError, errors.RaidError) as e:
>                  log.info("could not calculate size of device %s for raid level %s: %s", self, self.level, e)
>                  size = 0
> diff --git a/tests/devices_test.py b/tests/devices_test.py
> index 885f958..5d07f65 100644
> --- a/tests/devices_test.py
> +++ b/tests/devices_test.py
> @@ -87,7 +87,6 @@ class MDRaidArrayDeviceTestCase(DeviceStateTestCase):
>             "smallestMember" : self.assertIsNone,
>             "spares" : lambda x, m: self.assertEqual(x, 0, m),
>             "status" : self.assertFalse,
> -           "superBlockSize" : lambda x, m: self.assertEqual(x, Size(spec="1 MiB"), m),
>             "sysfsPath" : lambda x, m: self.assertEqual(x, "", m),
>             "targetSize" : lambda x, m: self.assertEqual(x, Size(bytes=0), m),
>             "uuid" : self.assertIsNone,

-- 
Vratislav Podzimek

Anaconda Rider | Red Hat, Inc. | Brno - Czech Republic



More information about the anaconda-patches mailing list