|
|
a4cb28 |
WHATS_NEW | 1 +
|
|
|
a4cb28 |
tools/lvconvert.c | 4 ++--
|
|
|
a4cb28 |
tools/lvconvert_poll.c | 13 +++++++++----
|
|
|
a4cb28 |
3 files changed, 12 insertions(+), 6 deletions(-)
|
|
|
a4cb28 |
|
|
|
a4cb28 |
diff --git a/WHATS_NEW b/WHATS_NEW
|
|
|
a4cb28 |
index 9ddecbc..5260321 100644
|
|
|
a4cb28 |
--- a/WHATS_NEW
|
|
|
a4cb28 |
+++ b/WHATS_NEW
|
|
|
a4cb28 |
@@ -1,5 +1,6 @@
|
|
|
a4cb28 |
Version 2.02.131 -
|
|
|
a4cb28 |
=====================================
|
|
|
a4cb28 |
+ Swapping of LV identifiers handles more complex LVs.
|
|
|
a4cb28 |
Fix VG metadata comparison failure while scanning the VG for lvmetad.
|
|
|
a4cb28 |
Ignore persistent cache if configuration changed. (2.02.127)
|
|
|
a4cb28 |
|
|
|
a4cb28 |
diff --git a/tools/lvconvert.c b/tools/lvconvert.c
|
|
|
a4cb28 |
index 2bffb07..919537a 100644
|
|
|
a4cb28 |
--- a/tools/lvconvert.c
|
|
|
a4cb28 |
+++ b/tools/lvconvert.c
|
|
|
a4cb28 |
@@ -2489,14 +2489,14 @@ deactivate_pmslv:
|
|
|
a4cb28 |
if (!detach_pool_metadata_lv(first_seg(pool_lv), &mlv))
|
|
|
a4cb28 |
return_0;
|
|
|
a4cb28 |
|
|
|
a4cb28 |
+ /* Swap _pmspare and _tmeta name */
|
|
|
a4cb28 |
if (!swap_lv_identifiers(cmd, mlv, pmslv))
|
|
|
a4cb28 |
return_0;
|
|
|
a4cb28 |
|
|
|
a4cb28 |
- /* Used _pmspare will become _tmeta */
|
|
|
a4cb28 |
if (!attach_pool_metadata_lv(first_seg(pool_lv), pmslv))
|
|
|
a4cb28 |
return_0;
|
|
|
a4cb28 |
|
|
|
a4cb28 |
- /* Used _tmeta will become visible _meta%d */
|
|
|
a4cb28 |
+ /* Used _tmeta (now _pmspare) becomes _meta%d */
|
|
|
a4cb28 |
if (!lv_rename_update(cmd, mlv, pms_path, 0))
|
|
|
a4cb28 |
return_0;
|
|
|
a4cb28 |
|
|
|
a4cb28 |
diff --git a/tools/lvconvert_poll.c b/tools/lvconvert_poll.c
|
|
|
a4cb28 |
index e3a3709..1b230bc 100644
|
|
|
a4cb28 |
--- a/tools/lvconvert_poll.c
|
|
|
a4cb28 |
+++ b/tools/lvconvert_poll.c
|
|
|
a4cb28 |
@@ -44,15 +44,20 @@ int swap_lv_identifiers(struct cmd_context *cmd,
|
|
|
a4cb28 |
struct logical_volume *a, struct logical_volume *b)
|
|
|
a4cb28 |
{
|
|
|
a4cb28 |
union lvid lvid;
|
|
|
a4cb28 |
- const char *name;
|
|
|
a4cb28 |
+ const char *aname = a->name, *bname = b->name;
|
|
|
a4cb28 |
|
|
|
a4cb28 |
lvid = a->lvid;
|
|
|
a4cb28 |
a->lvid = b->lvid;
|
|
|
a4cb28 |
b->lvid = lvid;
|
|
|
a4cb28 |
|
|
|
a4cb28 |
- name = a->name;
|
|
|
a4cb28 |
- a->name = b->name;
|
|
|
a4cb28 |
- if (!lv_rename_update(cmd, b, name, 0))
|
|
|
a4cb28 |
+ /* rename temporarily to 'unused' name */
|
|
|
a4cb28 |
+ if (!lv_rename_update(cmd, a, "pmove_tmeta", 0))
|
|
|
a4cb28 |
+ return_0;
|
|
|
a4cb28 |
+ /* name rename 'b' to unused name of 'a' */
|
|
|
a4cb28 |
+ if (!lv_rename_update(cmd, b, aname, 0))
|
|
|
a4cb28 |
+ return_0;
|
|
|
a4cb28 |
+ /* finish name swapping */
|
|
|
a4cb28 |
+ if (!lv_rename_update(cmd, a, bname, 0))
|
|
|
a4cb28 |
return_0;
|
|
|
a4cb28 |
|
|
|
a4cb28 |
return 1;
|