summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZdenek Kabelac <zkabelac@redhat.com>2015-06-24 15:12:43 +0200
committerZdenek Kabelac <zkabelac@redhat.com>2015-06-24 15:18:49 +0200
commite217873ed6ef7d77974fa10bfee4609160d7091d (patch)
treee963c9c2434440443a13646294bf784c56d61c10
parentcf189a572ae6fa6f7e00047925ebc965e57c6a8b (diff)
downloadlvm2-e217873ed6ef7d77974fa10bfee4609160d7091d.tar.gz
snapshot: add synchronization point
Synchronize with udev logic before reusing device as snapshot. This patch tries to fix the problem with udev, where we manage to 'active' LV for clearing, then we deactivate such device and active again as member of 'origin&snapshot' tree all in 1 step. There needs to be a sync point where udev has time to remove all links, otherwise we race with scans and we may end-up with mysterious 'free' links in the system pointing to wrong dm names. This patch tries to fix failing topology cluster tests..
-rw-r--r--WHATS_NEW1
-rw-r--r--lib/metadata/lv_manip.c3
2 files changed, 4 insertions, 0 deletions
diff --git a/WHATS_NEW b/WHATS_NEW
index 94766af53..34f4cf0c7 100644
--- a/WHATS_NEW
+++ b/WHATS_NEW
@@ -1,5 +1,6 @@
Version 2.02.123 -
=================================
+ Add device synchronization point before activating a new snapshot.
Add --withspaces to lvmconfig to add spaces in output for better readability.
Version 2.02.122 - 20th June 2015
diff --git a/lib/metadata/lv_manip.c b/lib/metadata/lv_manip.c
index 07f119a44..de9674339 100644
--- a/lib/metadata/lv_manip.c
+++ b/lib/metadata/lv_manip.c
@@ -7446,6 +7446,9 @@ static struct logical_volume *_lv_create_an_lv(struct volume_group *vg,
goto deactivate_and_revert_new_lv; /* Let's retry on error path */
}
+ /* Get in sync with deactivation, before reusing LV as snapshot */
+ sync_local_dev_names(lv->vg->cmd);
+
/* Create zero origin volume for spare snapshot */
if (lp->virtual_extents &&
!(origin_lv = _create_virtual_origin(cmd, vg, lv->name,