mirror of
git://sourceware.org/git/lvm2.git
synced 2024-12-21 13:34:40 +03:00
allow a mirror to contain only one mimage
This commit is contained in:
parent
c014417c46
commit
876003dc44
@ -508,6 +508,13 @@ int lv_mirror_percent(struct cmd_context *cmd, struct logical_volume *lv,
|
||||
struct dev_manager *dm;
|
||||
struct lvinfo info;
|
||||
|
||||
/* If mirrored LV is temporarily shrinked to 1 area (= linear),
|
||||
* it should be considered in-sync. */
|
||||
if (list_size(&lv->segments) == 1 && first_seg(lv)->area_count == 1) {
|
||||
*percent = 100.0;
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (!activation())
|
||||
return 0;
|
||||
|
||||
|
@ -956,7 +956,7 @@ float copy_percent(struct logical_volume *lv_mirr)
|
||||
list_iterate_items(seg, &lv_mirr->segments) {
|
||||
denominator += seg->area_len;
|
||||
|
||||
if (seg_is_mirrored(seg))
|
||||
if (seg_is_mirrored(seg) && seg->area_count > 1)
|
||||
numerator += seg->extents_copied;
|
||||
else
|
||||
numerator += seg->area_len;
|
||||
|
@ -283,6 +283,11 @@ static int _mirrored_add_target_line(struct dev_manager *dm, struct dm_pool *mem
|
||||
|
||||
mirr_state = *target_state;
|
||||
|
||||
/* Mirror segment could have only 1 area temporarily,
|
||||
* if the segment is under conversion. */
|
||||
if (seg->area_count == 1)
|
||||
mirror_status = MIRR_DISABLED;
|
||||
|
||||
/*
|
||||
* For pvmove, only have one mirror segment RUNNING at once.
|
||||
* Segments before this are COMPLETED and use 2nd area.
|
||||
|
Loading…
Reference in New Issue
Block a user