[blivet:master 09/11] Use raid.size method to get size of device (#1085474)
mulhern
amulhern at redhat.com
Fri Apr 11 15:23:10 UTC 2014
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 ],
+ 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,
--
1.8.3.1
More information about the anaconda-patches
mailing list