[master 8/9] Use relations between LVs to determine parent LV
vpodzime
installerbot-noreply at redhat.com
Fri Jun 12 13:48:51 UTC 2015
From: Vratislav Podzimek <vpodzime at redhat.com>
Thin/cache pools have internal data/metadata LVs the name of which can be
queried. Let's use this functionality to help determining the parent LV if name
matching fails.
---
blivet/devicelibs/lvm.py | 21 +++++++++++++++++++--
python-blivet.spec | 2 +-
2 files changed, 20 insertions(+), 3 deletions(-)
diff --git a/blivet/devicelibs/lvm.py b/blivet/devicelibs/lvm.py
index 57aa740..8b7dfa1 100644
--- a/blivet/devicelibs/lvm.py
+++ b/blivet/devicelibs/lvm.py
@@ -126,6 +126,7 @@ def determine_parent_lv(vg_name, internal_lv, lvs):
:type lvs: :class:`~.devices.lvm.LMVLogicalVolumeDevice`
"""
+ # try name matching first (fast, cheap, often works)
for lv in lvs:
if internal_lv.lvname == lv.lvname:
# skip the internal_lv itself
@@ -136,15 +137,31 @@ def determine_parent_lv(vg_name, internal_lv, lvs):
if re.match(lv.lvname+internal_lv.name_suffix+"$", internal_lv.lvname):
return lv
+ # now try checking relations between LVs
+ for lv in lvs:
# cache pools are internal LVs of cached LVs
try:
pool_name = blockdev.lvm.cache_pool_name(vg_name, lv.lvname)
if pool_name == internal_lv.lvname:
return lv
except blockdev.LVMError:
- # doesn't have a pool
+ # cannot determine, just go on
pass
- # TODO: use 'data_lv' and 'metadata_lv' on appropriate internal LVs
+ # pools have internal data and metadata LVs
+ try:
+ data_lv_name = blockdev.lvm.data_lv_name(vg_name, lv.lvname)
+ if data_lv_name == internal_lv.lvname:
+ return lv
+ except blockdev.LVMError:
+ # cannot determine, just go on
+ pass
+ try:
+ metadata_lv_name = blockdev.lvm.metadata_lv_name(vg_name, lv.lvname)
+ if metadata_lv_name == internal_lv.lvname:
+ return lv
+ except blockdev.LVMError:
+ # cannot determine, just go on
+ pass
return None
diff --git a/python-blivet.spec b/python-blivet.spec
index 1576c76..3ffdd88 100644
--- a/python-blivet.spec
+++ b/python-blivet.spec
@@ -18,7 +18,7 @@ Source0: http://github.com/dwlehman/blivet/archive/%{realname}-%{version}.tar.gz
%define pypartedver 3.10.4
%define e2fsver 1.41.0
%define utillinuxver 2.15.1
-%define libblockdevver 1.0
+%define libblockdevver 1.1
BuildArch: noarch
BuildRequires: gettext
--
To view this commit on github, visit https://github.com/rhinstaller/blivet/commit/a06fa1a12952cd31b55ac1ba135812b2c5c119ed
More information about the anaconda-patches
mailing list