From 12213445b5f86155665ed6f027082e93c4f6cf85 Mon Sep 17 00:00:00 2001 From: Zdenek Kabelac Date: Sun, 1 Jul 2018 12:03:23 +0200 Subject: [PATCH] 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. --- lib/metadata/vg.c | 5 +++++ tools/vgchange.c | 7 ++++++- 2 files changed, 11 insertions(+), 1 deletion(-) 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;