summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZdenek Kabelac <zkabelac@redhat.com>2019-09-30 13:25:42 +0200
committerZdenek Kabelac <zkabelac@redhat.com>2019-09-30 13:34:34 +0200
commita98b77c16455ee97f5bd4b89536a3ae4efd8e009 (patch)
treebb04f9e2fa7c4457ad46879564c335ba4c85a113
parentc813db8fc2ec15a8370bb291f662e15ba26682e8 (diff)
downloadlvm2-a98b77c16455ee97f5bd4b89536a3ae4efd8e009.tar.gz
vdo: properly check percentage for resize
Avoid checking 'lv_is_active()' since special LV types does this validation anyway what calling _percent() function and call it ONLY when none of special types is queried. This restores support for VDO resize (as with support for separate VDO pool activation, plain query for lv_is_active() is not working in this case).
-rw-r--r--lib/metadata/lv_manip.c13
1 files changed, 5 insertions, 8 deletions
diff --git a/lib/metadata/lv_manip.c b/lib/metadata/lv_manip.c
index 21d21caaa..47ff1672a 100644
--- a/lib/metadata/lv_manip.c
+++ b/lib/metadata/lv_manip.c
@@ -4850,12 +4850,6 @@ static int _lvresize_adjust_policy(const struct logical_volume *lv,
return 0;
}
- if (!lv_is_active(lv)) {
- log_error("Can't read state of locally inactive LV %s.",
- display_lvname(lv));
- return 0;
- }
-
if (lv_is_thin_pool(lv)) {
if (!lv_thin_pool_percent(lv, 1, &percent))
return_0;
@@ -4870,9 +4864,12 @@ static int _lvresize_adjust_policy(const struct logical_volume *lv,
} else if (lv_is_vdo_pool(lv)) {
if (!lv_vdo_pool_percent(lv, &percent))
return_0;
- } else {
- if (!lv_snapshot_percent(lv, &percent))
+ } else if (!lv_snapshot_percent(lv, &percent))
return_0;
+ else if (!lv_is_active(lv)) {
+ log_error("Can't read state of locally inactive LV %s.",
+ display_lvname(lv));
+ return 0;
}
*amount = _adjust_amount(percent, policy_threshold, policy_amount);