summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZdenek Kabelac <zkabelac@redhat.com>2018-07-01 12:03:23 +0200
committerZdenek Kabelac <zkabelac@redhat.com>2018-07-09 15:29:16 +0200
commit12213445b5f86155665ed6f027082e93c4f6cf85 (patch)
treee5c6bea1afa05f019e3928dd7def8df6dd2fe50f
parent7b8aa4af57a8064ea3fa29355283aada2dac0db0 (diff)
downloadlvm2-12213445b5f86155665ed6f027082e93c4f6cf85.tar.gz
vgchange: vdo support
Support vgchange usage with VDO segtype. Also changing extent size need small update for vdo virtual extent. TODO: API needs enhancements so it's not about adding ifs() everywhere.
-rw-r--r--lib/metadata/vg.c5
-rw-r--r--tools/vgchange.c7
2 files changed, 11 insertions, 1 deletions
diff --git a/lib/metadata/vg.c b/lib/metadata/vg.c
index 75a054f37..20c2aeca9 100644
--- a/lib/metadata/vg.c
+++ b/lib/metadata/vg.c
@@ -504,6 +504,11 @@ int vg_set_extent_size(struct volume_group *vg, uint32_t new_extent_size)
new_extent_size))
return_0;
+ if (!_recalc_extents(&seg->vdo_pool_virtual_extents, lv->name,
+ " virtual extents", old_extent_size,
+ new_extent_size))
+ return_0;
+
/* foreach area */
for (s = 0; s < seg->area_count; s++) {
switch (seg_type(seg, s)) {
diff --git a/tools/vgchange.c b/tools/vgchange.c
index c444c3026..fa0fd5365 100644
--- a/tools/vgchange.c
+++ b/tools/vgchange.c
@@ -107,6 +107,9 @@ static int _activate_lvs_in_vg(struct cmd_context *cmd, struct volume_group *vg,
if (lv_is_mirror_image(lv) || lv_is_mirror_log(lv))
continue;
+ if (lv_is_vdo_pool(lv))
+ continue;
+
if (lv_activation_skip(lv, activate, arg_is_set(cmd, ignoreactivationskip_ARG)))
continue;
@@ -219,7 +222,9 @@ int vgchange_activate(struct cmd_context *cmd, struct volume_group *vg,
if ((lv_open = lvs_in_vg_opened(vg))) {
dm_list_iterate_items(lvl, &vg->lvs) {
- if (lv_is_visible(lvl->lv) && !lv_check_not_in_use(lvl->lv, 1)) {
+ if (lv_is_visible(lvl->lv) &&
+ !lv_is_vdo_pool(lvl->lv) && // FIXME: API skip flag missing
+ !lv_check_not_in_use(lvl->lv, 1)) {
log_error("Can't deactivate volume group \"%s\" with %d open logical volume(s)",
vg->name, lv_open);
return 0;