mirror of
git://sourceware.org/git/lvm2.git
synced 2025-01-03 05:18:29 +03:00
lvcreate: remove RaidLV on creation failure
In case a newly created RaidLV is blacklisted using config \"activation { volume list = [ ... ] }\" (i.e. its SubLVs stay inactive), the metadata SubLVs can't get wiped thus failing the creation. As a result, the RaidLV together with its SubLVs is left behind in an inconsistent state. Fix by removing the RaidLV and provide a hint about volume_list reasoning. Resolves: rhbz1161347
This commit is contained in:
parent
9553dc7761
commit
d68d71013f
@ -1,5 +1,6 @@
|
|||||||
Version 2.02.178 -
|
Version 2.02.178 -
|
||||||
=====================================
|
=====================================
|
||||||
|
Remove RaidLV on creation failure when rmeta devices can't be activated.
|
||||||
Add prioritized_section() to restore cookie boundaries (2.02.177).
|
Add prioritized_section() to restore cookie boundaries (2.02.177).
|
||||||
Enhance error messages when read error happens.
|
Enhance error messages when read error happens.
|
||||||
Enhance mirror log initialization for old mirror target.
|
Enhance mirror log initialization for old mirror target.
|
||||||
|
@ -4100,9 +4100,16 @@ static int _lv_extend_layered_lv(struct alloc_handle *ah,
|
|||||||
str_list_wipe(&meta_lv->tags);
|
str_list_wipe(&meta_lv->tags);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fail)
|
if (fail) {
|
||||||
/* Fail, after trying to deactivate all we could */
|
/* Fail, after trying to deactivate all we could */
|
||||||
|
struct volume_group *vg = lv->vg;
|
||||||
|
|
||||||
|
if (!lv_remove(lv))
|
||||||
|
log_error("Failed to remove LV");
|
||||||
|
else if (!vg_write(vg) || !vg_commit(vg))
|
||||||
|
log_error("Failed to commit VG %s", vg->name);
|
||||||
return_0;
|
return_0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (s = 0; s < seg->area_count; s++)
|
for (s = 0; s < seg->area_count; s++)
|
||||||
@ -7155,7 +7162,7 @@ int wipe_lv(struct logical_volume *lv, struct wipe_params wp)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!lv_is_active_locally(lv)) {
|
if (!lv_is_active_locally(lv)) {
|
||||||
log_error("Volume \"%s/%s\" is not active locally.",
|
log_error("Volume \"%s/%s\" is not active locally (volume_list activation filter?).",
|
||||||
lv->vg->name, lv->name);
|
lv->vg->name, lv->name);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user