mirror of
git://sourceware.org/git/lvm2.git
synced 2025-01-18 10:04:20 +03:00
RAID LVs could not handle a down-convert if a device other than the last one
in the array was specified for removal. This change addresses that (bz806111).
This commit is contained in:
parent
bad8b5848f
commit
c0b5886f18
@ -1,5 +1,6 @@
|
||||
Version 2.02.96 -
|
||||
================================
|
||||
Fix problems when specifying PVs during RAID down-converts.
|
||||
Fix ability to handle failures in mirrored log (regression intro 2.02.89).
|
||||
Fix unlocking volume group in vgreduce in error path.
|
||||
Exit immediately if LISTEN_PID env var incorrect during systemd handover.
|
||||
|
@ -975,6 +975,8 @@ static int _raid_extract_images(struct logical_volume *lv, uint32_t new_count,
|
||||
static int _raid_remove_images(struct logical_volume *lv,
|
||||
uint32_t new_count, struct dm_list *pvs)
|
||||
{
|
||||
uint32_t s;
|
||||
struct lv_segment *seg;
|
||||
struct dm_list removal_list;
|
||||
struct lv_list *lvl;
|
||||
|
||||
@ -1024,9 +1026,21 @@ static int _raid_remove_images(struct logical_volume *lv,
|
||||
}
|
||||
|
||||
/*
|
||||
* Resume original LV
|
||||
* This also resumes all other sub-LVs
|
||||
* Resume the remaining LVs
|
||||
* We must start by resuming the sub-LVs first (which would
|
||||
* otherwise be handled automatically) because the shifting
|
||||
* of positions could otherwise cause name collisions. For
|
||||
* example, if position 0 of a 3-way array is removed, position
|
||||
* 1 and 2 must be shifted and renamed 0 and 1. If position 2
|
||||
* tries to rename first, it will collide with the existing
|
||||
* position 1.
|
||||
*/
|
||||
seg = first_seg(lv);
|
||||
for (s = 0; (new_count > 1) && (s < seg->area_count); s++) {
|
||||
if (!resume_lv(lv->vg->cmd, seg_lv(seg, s)) ||
|
||||
!resume_lv(lv->vg->cmd, seg_metalv(seg, s)))
|
||||
return_0;
|
||||
}
|
||||
if (!resume_lv(lv->vg->cmd, lv)) {
|
||||
log_error("Failed to resume %s/%s after committing changes",
|
||||
lv->vg->name, lv->name);
|
||||
|
Loading…
x
Reference in New Issue
Block a user