1
0
mirror of git://sourceware.org/git/lvm2.git synced 2025-01-10 05:18:36 +03:00
lvm2/lib/metadata
Jonathan Brassow acdc731e83 RAID: Fix _sufficient_pes_free calculation for RAID
lib/metadata/lv_manip.c:_sufficient_pes_free() was calculating the
required space for RAID allocations incorrectly due to double
accounting.  This resulted in failure to allocate when available
space was tight.

When RAID data and metadata areas are allocated together, the total
amount is stored in ah->new_extents and ah->alloc_and_split_meta is
set.  '_sufficient_pes_free' was adding the necessary metadata extents
to ah->new_extents without ever checking ah->alloc_and_split_meta.
This often led to double accounting of the metadata extents.  This
patch checks 'ah->alloc_and_split_meta' to perform proper calculations
for RAID.

This error is only present in the function that checks for the needed
space, not in the functions that do the actual allocation.
2013-09-26 11:30:07 -05:00
..
lv_alloc.h discards: don't discard reconfigured extents 2012-06-27 22:12:01 +01:00
lv_manip.c RAID: Fix _sufficient_pes_free calculation for RAID 2013-09-26 11:30:07 -05:00
lv.c RAID: Make RAID single-machine-exclusive capable in a cluster 2013-09-10 16:33:22 -05:00
lv.h report: add vg_profile and lv_profile to report the profile attached to VG/LV 2013-07-02 15:22:12 +02:00
merge.c thin: validation catch multiseg thin pool/volumes 2013-09-07 03:32:07 +02:00
metadata-exported.h thin: use appropriate default value based on allocation/thin_pool_chunk_size_calculation setting 2013-09-25 16:06:38 +02:00
metadata.c cleanup: skip call of detect... 2013-09-23 11:35:15 +02:00
metadata.h thin: rename extend_pool to create_pool 2013-07-23 13:33:14 +01:00
mirror.c Revert a previous change 2013-07-24 14:18:07 -05:00
pv_alloc.h discards: split discard from release_pv_segment 2012-06-27 22:11:54 +01:00
pv_manip.c cleanup: use dm_list_empty 2013-07-18 18:22:42 +02:00
pv_map.c logging: classify log_debug messages 2013-01-07 22:30:29 +00:00
pv_map.h Track unreserved space for all alloc policies and then permit NORMAL to place 2012-02-01 02:10:45 +00:00
pv.c refactor: rename embedding area -> bootloader area 2013-05-28 12:37:22 +02:00
pv.h refactor: rename embedding area -> bootloader area 2013-05-28 12:37:22 +02:00
raid_manip.c RAID: Make RAID single-machine-exclusive capable in a cluster 2013-09-10 16:33:22 -05:00
replicator_manip.c logging: classify log_debug messages 2013-01-07 22:30:29 +00:00
segtype.c clean: remove unneeded assign 2013-06-17 09:34:56 +02:00
segtype.h cleanup: indent line 2013-04-02 15:17:05 +02:00
snapshot_manip.c snapshot: update merging fix 2013-07-23 15:15:04 +02:00
thin_manip.c thin: use appropriate default value based on allocation/thin_pool_chunk_size_calculation setting 2013-09-25 16:06:38 +02:00
vg.c RAID: Make RAID single-machine-exclusive capable in a cluster 2013-09-10 16:33:22 -05:00
vg.h thin: add pool metadata spare lv support 2013-07-18 18:22:43 +02:00