From 31271606265ec8f7c14734aedbb0a314dfea2cd1 Mon Sep 17 00:00:00 2001 From: Peter Rajnoha Date: Wed, 12 Sep 2012 09:47:40 +0200 Subject: vgchange: fix -aay to activate proper volumes Using 'activation/auto_activation_volume_list = [ "vg/lvol1" ]'. Before this patch: 3 logical volume(s) in volume group "vg" now active LV VG Attr LSize Pool Origin Data% Move Log Copy% Convert lvol0 vg -wi----- 4.00m lvol1 vg -wi-a--- 4.00m lvol2 vg -wi-a--- 4.00m lvol3 vg -wi-a--- 4.00m (vg/lvol1 activated as it passes the list and all subsequent volumes too - wrong!) With this patch: 1 logical volume(s) in volume group "vg" now active LV VG Attr LSize Pool Origin Data% Move Log Copy% Convert lvol0 vg -wi----- 4.00m lvol1 vg -wi-a--- 4.00m lvol2 vg -wi----- 4.00m lvol3 vg -wi----- 4.00m (only vg/lvol1 activated as it passes the list and no other - correct!) --- WHATS_NEW | 1 + tools/vgchange.c | 9 +++------ 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/WHATS_NEW b/WHATS_NEW index 0c3b5914..4884626b 100644 --- a/WHATS_NEW +++ b/WHATS_NEW @@ -1,5 +1,6 @@ Version 2.02.98 - ================================= + Fix vgchange -aay to activate proper logical volumes. Properly handle 'resync' of RAID LVs. Disallow addition of RAID images until the array is in-sync. Fix RAID LV creation with '--test' so valid commands do not fail. diff --git a/tools/vgchange.c b/tools/vgchange.c index 34f61674..fa129f8a 100644 --- a/tools/vgchange.c +++ b/tools/vgchange.c @@ -131,11 +131,8 @@ static int _activate_lvs_in_vg(struct cmd_context *cmd, struct volume_group *vg, continue; } - if (activate == CHANGE_AAY) { - if (!lv_passes_auto_activation_filter(cmd, lv)) - continue; - activate = CHANGE_ALY; - } + if (activate == CHANGE_AAY && !lv_passes_auto_activation_filter(cmd, lv)) + continue; expected_count++; @@ -157,7 +154,7 @@ static int _activate_lvs_in_vg(struct cmd_context *cmd, struct volume_group *vg, stack; continue; } - } else if (activate == CHANGE_ALY) { + } else if (activate == CHANGE_AAY || activate == CHANGE_ALY) { if (!activate_lv_local(cmd, lv)) { stack; continue; -- cgit