summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlasdair Kergon <agk@redhat.com>2002-07-10 13:54:17 +0000
committerAlasdair Kergon <agk@redhat.com>2002-07-10 13:54:17 +0000
commit0dbd22124b0a8c3f48aa0a0a9e1bf43281f4ead0 (patch)
tree08769a4a1b224c0925e6aeffb87688907073ce72
parent7df3006c6b3a9e83778e4c356367cce19b9d3d37 (diff)
downloadlvm2-0dbd22124b0a8c3f48aa0a0a9e1bf43281f4ead0.tar.gz
lvm2-0dbd22124b0a8c3f48aa0a0a9e1bf43281f4ead0.tar.xz
lvm2-0dbd22124b0a8c3f48aa0a0a9e1bf43281f4ead0.zip
Merge adjacent "Missing" segments.
-rw-r--r--lib/format1/import-extents.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/lib/format1/import-extents.c b/lib/format1/import-extents.c
index 84791b58..13f5d930 100644
--- a/lib/format1/import-extents.c
+++ b/lib/format1/import-extents.c
@@ -226,7 +226,8 @@ static int _read_linear(struct pool *mem, struct lv_map *lvm)
seg->len++;
while ((lvm->map[le + seg->len].pv == seg->area[0].pv) &&
- (lvm->map[le + seg->len].pe == seg->area[0].pe +
+ (seg->area[0].pv &&
+ lvm->map[le + seg->len].pe == seg->area[0].pe +
seg->len));
le += seg->len;
@@ -249,7 +250,8 @@ static int _check_stripe(struct lv_map *lvm, struct stripe_segment *seg,
*/
for (st = 0; st < seg->stripes; st++)
if ((lvm->map[le + st * len].pv != seg->area[st].pv) ||
- (lvm->map[le + st * len].pe != seg->area[st].pe + seg->len))
+ (seg->area[st].pv &&
+ lvm->map[le + st * len].pe != seg->area[st].pe + seg->len))
return 0;
return 1;