1
0
mirror of git://sourceware.org/git/lvm2.git synced 2024-12-21 13:34:40 +03:00

Fail allocation if number of extents not divisible by area count

Allocation should fail early if this condition is not met.

Quick fix for https://bugzilla.redhat.com/show_bug.cgi?id=707779
This commit is contained in:
Milan Broz 2011-06-23 10:53:24 +00:00
parent 9e277b9e2c
commit 6adbb95b82
3 changed files with 13 additions and 0 deletions

View File

@ -1,5 +1,6 @@
Version 2.02.86 - Version 2.02.86 -
================================= =================================
Reject allocation if number of extents is not divisible by area count.
Fix issue preventing cluster mirror creation. Fix issue preventing cluster mirror creation.
Disable udev fallback by default and add activation/udev_fallback to lvm.conf. Disable udev fallback by default and add activation/udev_fallback to lvm.conf.
Call vg_mark_partial_lvs() before VG structure is returned from the cache. Call vg_mark_partial_lvs() before VG structure is returned from the cache.

View File

@ -1716,6 +1716,13 @@ static int _allocate(struct alloc_handle *ah,
return 1; return 1;
} }
if (ah->area_multiple > 1 &&
(ah->new_extents - alloc_state.allocated) % ah->area_count) {
log_error("Number of extents requested (%d) needs to be divisible by %d.",
ah->new_extents - alloc_state.allocated, ah->area_count);
return 0;
}
alloc_state.log_area_count_still_needed = ah->log_area_count; alloc_state.log_area_count_still_needed = ah->log_area_count;
if (ah->alloc == ALLOC_CONTIGUOUS) if (ah->alloc == ALLOC_CONTIGUOUS)

View File

@ -248,3 +248,8 @@ lvconvert -m1 -i1 $vg/$lv1
lvreduce -f -l1 $vg/$lv1 lvreduce -f -l1 $vg/$lv1
lvextend -f -l10 $vg/$lv1 lvextend -f -l10 $vg/$lv1
lvremove -ff $vg/$lv1 lvremove -ff $vg/$lv1
# extents must be divisible
lvcreate -l15 -n $lv1 $vg
not lvconvert -m1 --corelog --stripes 2 $vg/$lv1
lvremove -ff $vg/$lv1