[PATCH][rhel6-branch][v2] Fix scanning of non-leaf lvs. (#1213748)

David Lehman dlehman at redhat.com
Thu Jun 4 23:00:58 UTC 2015


This fixes a regression introduced with the thinp changes that broke
the return value of handleVgLvs.

It also fixes space accounting for raid lvs, log lvs, and metadata lvs
through consistent key naming in the raid dict.
---
 storage/devicetree.py | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/storage/devicetree.py b/storage/devicetree.py
index 8d1ed5f..f0733f0 100644
--- a/storage/devicetree.py
+++ b/storage/devicetree.py
@@ -1634,7 +1634,7 @@ class DeviceTree(object):
                 lv_name = re.sub(r'_[tr]meta.*', '', lv_name[1:-1])
                 name = "%s-%s" % (vg_name, lv_name)
                 addRequiredLV(name, "failed to look up raid lv")
-                raid[lv_name]["meta"] += lv_size
+                raid[name]["meta"] += lv_size
                 return
             elif lv_attr[0] == 'l':
                 # log volume
@@ -1668,6 +1668,7 @@ class DeviceTree(object):
                 #   O origin with merging snapshot
                 return
 
+            added = False
             lv_dev = self.getDeviceByUuid(lv_uuid)
             if lv_dev is None:
                 lv_device = lv_class(lv_name, lv_parents,
@@ -1676,7 +1677,7 @@ class DeviceTree(object):
                 self._addDevice(lv_device)
                 try:
                     lv_device.setup()
-                    ret = True
+                    added = True
                 except DeviceError as (msg, name):
                     log.info("setup of %s failed: %s"
                                         % (lv_device.name, msg))
@@ -1691,11 +1692,13 @@ class DeviceTree(object):
                     # do format handling now
                     self.addUdevDevice(lv_info)
 
-        raid = dict((n.replace("[", "").replace("]", ""),
+            return added
+
+        raid = dict(("%s-%s" % (vg_name, n.replace("[", "").replace("]", "")),
                      {"copies": 0, "log": 0, "meta": 0})
                      for n in lv_names)
         for lv in zip(lv_names, lv_uuids, lv_sizes, lv_attr, lv_types):
-            addLV(*lv)
+            ret = addLV(*lv) or ret
 
         for name, data in raid.items():
             lv_dev = self.getDeviceByName(name)
-- 
2.4.2



More information about the anaconda-patches mailing list