mirror of
git://sourceware.org/git/lvm2.git
synced 2024-12-23 21:35:29 +03:00
Adding a new mimage (leg/copy) to a mirror behaves differently
depending on if the mirror has a 'core' or 'disk' log. When there is a disk log, the new leg is added by stacking a new mirror on top of the old (one leg is the old mirror and the other leg is the newly added device). When the log is a 'core' log, the new leg is simply added to the existing mirror and all the devices are re-synced. The logic that handles collapsing the stacked 'disk' log mirror was having the effect of causing 'core' logged mirrors to begin resync'ing for a second time. I have used the 'CONVERTING' flag to indicate that a mirror is converting by way of stacking. This is no longer set for up-converting core logs. The final 'collapse' logic can safely be skipped for 'core' log mirrors - getting rid of the second resync. Signed-off-by: Jonathan Brassow <jbrassow@redhat.com>
This commit is contained in:
parent
b15ada28ed
commit
f607a0a0a6
@ -1,5 +1,6 @@
|
||||
Version 2.02.61 -
|
||||
===================================
|
||||
Fix inappropriate second resync when adding mimage to core-logged mirror.
|
||||
Exclude internal VG names and uuids in lists returned via liblvm interface.
|
||||
Add %ORIGIN support to lv{create,extend,reduce,resize} --extents option.
|
||||
Add copy constructor for metadata_area.
|
||||
|
@ -335,6 +335,9 @@ static int _finish_lvconvert_mirror(struct cmd_context *cmd,
|
||||
{
|
||||
int r = 0;
|
||||
|
||||
if (!(lv->status & CONVERTING))
|
||||
return 1;
|
||||
|
||||
if (!collapse_mirrored_lv(lv)) {
|
||||
log_error("Failed to remove temporary sync layer.");
|
||||
return 0;
|
||||
@ -967,7 +970,8 @@ static int _lvconvert_mirrors(struct cmd_context *cmd, struct logical_volume *lv
|
||||
stack;
|
||||
return failure_code;
|
||||
}
|
||||
lv->status |= CONVERTING;
|
||||
if (seg->log_lv)
|
||||
lv->status |= CONVERTING;
|
||||
lp->need_polling = 1;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user