mirror of
git://sourceware.org/git/lvm2.git
synced 2024-12-22 17:35:59 +03:00
Fix allocation policy loop so it doesn't continue beyond cling using later
policies it shouldn't be using when --alloc cling is specified but no tags are defined.
This commit is contained in:
parent
d2a3be546f
commit
3a042496fd
@ -1,5 +1,6 @@
|
|||||||
Version 2.02.96 -
|
Version 2.02.96 -
|
||||||
================================
|
================================
|
||||||
|
Fix policy loop not to use later policies when --alloc cling without tags.
|
||||||
Append _TO_LVSEG to names of internal A_CONTIGUOUS and A_CLING flags.
|
Append _TO_LVSEG to names of internal A_CONTIGUOUS and A_CLING flags.
|
||||||
Add missing pkg init --with-systemdsystemunitdir in configure.in (2.02.92).
|
Add missing pkg init --with-systemdsystemunitdir in configure.in (2.02.92).
|
||||||
Fix division by zero if PV with zero PE count is used during vgcfgrestore.
|
Fix division by zero if PV with zero PE count is used during vgcfgrestore.
|
||||||
|
@ -2022,7 +2022,7 @@ static int _allocate(struct alloc_handle *ah,
|
|||||||
ah->alloc = ALLOC_CLING_BY_TAGS;
|
ah->alloc = ALLOC_CLING_BY_TAGS;
|
||||||
|
|
||||||
/* Attempt each defined allocation policy in turn */
|
/* Attempt each defined allocation policy in turn */
|
||||||
for (alloc = ALLOC_CONTIGUOUS; alloc < ALLOC_INHERIT; alloc++) {
|
for (alloc = ALLOC_CONTIGUOUS; alloc <= ah->alloc; alloc++) {
|
||||||
/* Skip cling_by_tags if no list defined */
|
/* Skip cling_by_tags if no list defined */
|
||||||
if (alloc == ALLOC_CLING_BY_TAGS && !ah->cling_tag_list_cn)
|
if (alloc == ALLOC_CLING_BY_TAGS && !ah->cling_tag_list_cn)
|
||||||
continue;
|
continue;
|
||||||
@ -2039,7 +2039,7 @@ 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;
|
||||||
|
|
||||||
if ((alloc_state.allocated == ah->new_extents && !alloc_state.log_area_count_still_needed) || (ah->alloc == alloc) ||
|
if ((alloc_state.allocated == ah->new_extents && !alloc_state.log_area_count_still_needed) ||
|
||||||
(!can_split && (alloc_state.allocated != old_allocated)))
|
(!can_split && (alloc_state.allocated != old_allocated)))
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -2154,7 +2154,7 @@ struct alloc_handle *allocate_extents(struct volume_group *vg,
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (alloc == ALLOC_INHERIT)
|
if (alloc >= ALLOC_INHERIT)
|
||||||
alloc = vg->alloc;
|
alloc = vg->alloc;
|
||||||
|
|
||||||
new_extents = (lv ? lv->le_count : 0) + extents;
|
new_extents = (lv ? lv->le_count : 0) + extents;
|
||||||
|
Loading…
Reference in New Issue
Block a user