1
0
mirror of git://sourceware.org/git/lvm2.git synced 2024-10-28 20:25:52 +03:00
lvm2/lib/metadata
Jonathan Brassow b35fb0b15a raid/misc: Allow creation of parallel areas by LV vs segment
I've changed build_parallel_areas_from_lv to take a new parameter
that allows the caller to build parallel areas by LV vs by segment.
Previously, the function created a list of parallel areas for each
segment in the given LV.  When it came time for allocation, the
parallel areas were honored on a segment basis.  This was problematic
for RAID because any new RAID image must avoid being placed on any
PVs used by other images in the RAID.  For example, if we have a
linear LV that has half its space on one PV and half on another, we
do not want an up-convert to use either of those PVs.  It should
especially not wind up with the following, where the first portion
of one LV is paired up with the second portion of the other:
------PV1-------  ------PV2-------
[ 2of2 image_1 ]  [ 1of2 image_1 ]
[ 1of2 image_0 ]  [ 2of2 image_0 ]
----------------  ----------------
Previously, it was possible for this to happen.  The change makes
it so that the returned parallel areas list contains one "super"
segment (seg_pvs) with a list of all the PVs from every actual
segment in the given LV and covering the entire logical extent range.

This change allows RAID conversions to function properly when there
are existing images that contain multiple segments that span more
than one PV.
2014-06-25 21:20:41 -05:00
..
cache_manip.c cleanup: use insert_layer_for_lv implicit rename 2014-06-18 15:00:18 +02:00
lv_alloc.h raid/misc: Allow creation of parallel areas by LV vs segment 2014-06-25 21:20:41 -05:00
lv_manip.c raid/misc: Allow creation of parallel areas by LV vs segment 2014-06-25 21:20:41 -05:00
lv.c lv: fix lv_is_raid 2014-06-20 11:37:45 +02:00
lv.h cleanup: self compilable headers 2013-12-12 13:28:19 +01:00
merge.c pvvmove: add a few comments 2014-06-20 11:41:20 +01:00
metadata-exported.h pvmove: tidy 2014-06-19 13:40:47 +01:00
metadata.c filters: always reevaluate filter before creating a PV 2014-06-25 16:24:28 +02:00
metadata.h metadata: Make it possible to write partial VGs obtained from lvmetad. 2014-06-08 17:41:11 +02:00
mirror.c raid/misc: Allow creation of parallel areas by LV vs segment 2014-06-25 21:20:41 -05:00
pool_manip.c cleanup: add seg_is_pool macro 2014-05-23 21:36:55 +02:00
pv_alloc.h cleanup: self compilable headers 2013-12-12 13:28:19 +01:00
pv_manip.c pvremove: Update lvmcache => avoid spurious error messages. 2014-06-08 22:57:04 +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 pv_vg_name: do not expose internal orphans to lvm2 users 2014-03-19 00:57:59 +01:00
pv.h cleanup: self compilable headers 2013-12-12 13:28:19 +01:00
raid_manip.c raid/misc: Allow creation of parallel areas by LV vs segment 2014-06-25 21:20:41 -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 report: select: refactor: move percent handling code to libdm for reuse 2014-06-17 16:27:21 +02:00
snapshot_manip.c snapshot: check snapshot exists 2014-06-17 13:36:07 +02:00
thin_manip.c report: select: refactor: move percent handling code to libdm for reuse 2014-06-17 16:27:21 +02:00
vg.c lvmetad: more reuse precommit buffer 2014-03-01 14:08:58 +01:00
vg.h lvmetad: more reuse precommit buffer 2014-03-01 14:08:58 +01:00