1
0
mirror of git://sourceware.org/git/lvm2.git synced 2024-12-21 13:34:40 +03:00

raid: properly rename split image

When we split leg from raid - we take a proper new lock for a new LV.
However for now activation checks only 'existince' of device UUID,
but it's not validating device has a proper name.

As a quick fix call suspend()/resume() to rename after split mirror.
This commit is contained in:
Zdenek Kabelac 2014-12-04 14:24:44 +01:00
parent 00d53d5fc1
commit f3bd9a2797
3 changed files with 19 additions and 0 deletions

View File

@ -1,5 +1,6 @@
Version 2.02.115 -
=====================================
Correctly rename active split LV with -splitmirrors for raid1.
Add report/compact_output to lvm.conf to enable/disable compact report output.
Still restrict mirror region size to power of 2 when VG extent size is not.

View File

@ -1164,6 +1164,22 @@ int lv_raid_split(struct logical_volume *lv, const char *split_name,
if (!activate_lv_excl_local(cmd, lvl->lv))
return_0;
/*
* Since newly split LV is typically already active - we need to call
* suspend() and resume() to also rename it.
*
* TODO: activate should recognize it and avoid these 2 calls
*/
if (!suspend_lv(cmd, lvl->lv)) {
log_error("Failed to suspend %s.", lvl->lv->name);
return 0;
}
if (!resume_lv(cmd, lvl->lv)) {
log_error("Failed to reactivate %s.", lvl->lv->name);
return 0;
}
dm_list_iterate_items(lvl, &removal_list)
if (!activate_lv_excl_local(cmd, lvl->lv))
return_0;

View File

@ -107,6 +107,7 @@ aux wait_for_sync $vg $lv1
lvconvert --splitmirrors 1 -n $lv2 $vg/$lv1
check lv_exists $vg $lv1
check linear $vg $lv2
check active $vg $lv2
# FIXME: ensure no residual devices
lvremove -ff $vg
@ -116,6 +117,7 @@ aux wait_for_sync $vg $lv1
lvconvert --splitmirrors 1 -n $lv2 $vg/$lv1
check linear $vg $lv1
check linear $vg $lv2
check active $vg $lv2
# FIXME: ensure no residual devices
lvremove -ff $vg