mirror of
git://sourceware.org/git/lvm2.git
synced 2024-12-21 13:34:40 +03:00
alloc: Use --alloc normal for mirror logs.
The existing code doesn't understand that mirror logs should cling to parallel LVs (like extending them) instead of avoiding them. As a quick workaround to avoid lvcreate failures, hard-code --alloc normal for mirror logs even if the rest of the allocation used a stricter policy. https://bugzilla.redhat.com/show_bug.cgi?id=1376532
This commit is contained in:
parent
5da35d879a
commit
9c8c8fb63a
@ -1,5 +1,6 @@
|
|||||||
Version 2.02.166 -
|
Version 2.02.166 -
|
||||||
=====================================
|
=====================================
|
||||||
|
Use --alloc normal for mirror logs even if the mimages were stricter.
|
||||||
Use O_DIRECT to gather metadata in lvmdump.
|
Use O_DIRECT to gather metadata in lvmdump.
|
||||||
Fix possible NULL pointer derefence when checking for monitoring.
|
Fix possible NULL pointer derefence when checking for monitoring.
|
||||||
Add lvmreport(7) man page.
|
Add lvmreport(7) man page.
|
||||||
|
@ -3085,6 +3085,15 @@ static int _allocate(struct alloc_handle *ah,
|
|||||||
if (!_find_max_parallel_space_for_one_policy(ah, &alloc_parms, pvms, &alloc_state))
|
if (!_find_max_parallel_space_for_one_policy(ah, &alloc_parms, pvms, &alloc_state))
|
||||||
goto_out;
|
goto_out;
|
||||||
|
|
||||||
|
/* As a workaround, if only the log is missing now, fall through and try later policies up to normal. */
|
||||||
|
/* FIXME Change the core algorithm so the log extents cling to parallel LVs instead of avoiding them. */
|
||||||
|
if (alloc_state.allocated == ah->new_extents &&
|
||||||
|
alloc_state.log_area_count_still_needed &&
|
||||||
|
ah->alloc < ALLOC_NORMAL) {
|
||||||
|
ah->alloc = ALLOC_NORMAL;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if ((alloc_state.allocated == ah->new_extents &&
|
if ((alloc_state.allocated == ah->new_extents &&
|
||||||
!alloc_state.log_area_count_still_needed) ||
|
!alloc_state.log_area_count_still_needed) ||
|
||||||
(!can_split && (alloc_state.allocated != old_allocated)))
|
(!can_split && (alloc_state.allocated != old_allocated)))
|
||||||
|
Loading…
Reference in New Issue
Block a user