1
0
mirror of git://sourceware.org/git/lvm2.git synced 2025-01-17 06:04:23 +03:00

raid: add missing archive call

Before starting to update raid metadata, archive existing unmodified one.
This commit is contained in:
Zdenek Kabelac 2014-09-12 11:30:38 +02:00
parent 569184a3bb
commit 08bde75093
2 changed files with 16 additions and 0 deletions

View File

@ -1,5 +1,6 @@
Version 2.02.112 - Version 2.02.112 -
===================================== =====================================
Archive metadata before starting their modification in raid target.
Add missing vg_revert in suspend_lv() error path in raid target. Add missing vg_revert in suspend_lv() error path in raid target.
Add missing backup of lvm2 metadata after some raid modifications. Add missing backup of lvm2 metadata after some raid modifications.
Use vg memory pool for extent allocation. Use vg memory pool for extent allocation.

View File

@ -520,6 +520,9 @@ static int _raid_add_images(struct logical_volume *lv,
return 0; return 0;
} }
if (!archive(lv->vg))
return_0;
dm_list_init(&meta_lvs); /* For image addition */ dm_list_init(&meta_lvs); /* For image addition */
dm_list_init(&data_lvs); /* For image addition */ dm_list_init(&data_lvs); /* For image addition */
@ -909,6 +912,9 @@ static int _raid_remove_images(struct logical_volume *lv,
struct dm_list removal_list; struct dm_list removal_list;
struct lv_list *lvl; struct lv_list *lvl;
if (!archive(lv->vg))
return_0;
dm_list_init(&removal_list); dm_list_init(&removal_list);
if (!_raid_extract_images(lv, new_count, pvs, 1, if (!_raid_extract_images(lv, new_count, pvs, 1,
@ -1313,6 +1319,9 @@ static int _convert_mirror_to_raid1(struct logical_volume *lv,
return 0; return 0;
} }
if (!archive(lv->vg))
return_0;
for (s = 0; s < seg->area_count; s++) { for (s = 0; s < seg->area_count; s++) {
log_debug_metadata("Allocating new metadata LV for %s", log_debug_metadata("Allocating new metadata LV for %s",
seg_lv(seg, s)->name); seg_lv(seg, s)->name);
@ -1543,6 +1552,9 @@ int lv_raid_replace(struct logical_volume *lv,
return 0; return 0;
} }
if (!archive(lv->vg))
return_0;
/* /*
* How many sub-LVs are being removed? * How many sub-LVs are being removed?
*/ */
@ -1767,6 +1779,9 @@ int lv_raid_remove_missing(struct logical_volume *lv)
return 0; return 0;
} }
if (!archive(lv->vg))
return_0;
log_debug("Attempting to remove missing devices from %s LV, %s", log_debug("Attempting to remove missing devices from %s LV, %s",
seg->segtype->ops->name(seg), lv->name); seg->segtype->ops->name(seg), lv->name);