From 628a921a94803e2bf45e7a834a200cdfa11b520b Mon Sep 17 00:00:00 2001 From: Stoiko Ivanov Date: Fri, 4 Jan 2019 14:06:25 +0100 Subject: [PATCH] LVM: Add '--refresh' when activating volumes From `man 8 lvchange`: --refresh If the logical volume is active, reload its metadata. This is not necessary in normal operation, but may be useful ... if you're doing clustering manually without a clustered lock manager. Fixes migration in a shared LVM (iscsi) setup, where a disk gets resized on one node A and the guest is afterwards migrated to another node B: B still presents the old size to the guest, leading to data corruption. It is necessary to run `lvchange` twice because the options `-ay` and `--refresh` are mutually exclusive. Signed-off-by: Stoiko Ivanov --- PVE/Storage/LVMPlugin.pm | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/PVE/Storage/LVMPlugin.pm b/PVE/Storage/LVMPlugin.pm index 3be680b..72d7464 100644 --- a/PVE/Storage/LVMPlugin.pm +++ b/PVE/Storage/LVMPlugin.pm @@ -362,6 +362,8 @@ sub free_image { my $cmd = ['/sbin/lvchange', '-aly', "$vg/$volname"]; run_command($cmd, errmsg => "can't activate LV '$vg/$volname' to zero-out its data"); + $cmd = ['/sbin/lvchange', '--refresh', "$vg/$volname"]; + run_command($cmd, errmsg => "can't refresh LV '$vg/$volname' to zero-out its data"); if ($scfg->{saferemove}) { # avoid long running task, so we only rename here @@ -472,6 +474,8 @@ sub activate_volume { my $cmd = ['/sbin/lvchange', "-a$lvm_activate_mode", $path]; run_command($cmd, errmsg => "can't activate LV '$path'"); + $cmd = ['/sbin/lvchange', '--refresh', $path]; + run_command($cmd, errmsg => "can't refresh LV '$path' for activation"); } sub deactivate_volume { -- 2.39.5