summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZdenek Kabelac <zkabelac@redhat.com>2017-10-30 17:23:56 +0100
committerZdenek Kabelac <zkabelac@redhat.com>2017-10-30 17:23:56 +0100
commit2b6391538c53e19a6fccdb4e3638ba9dd221819a (patch)
tree6cc897365c144162a859944b3dc65456825aa248
parent3efd1f9c6e1e63c70d12cf3bc2f8eadcba47d7e5 (diff)
downloadlvm2-2b6391538c53e19a6fccdb4e3638ba9dd221819a.tar.gz
raid: setup LV size earlier
New validation code which does require to not store LV with no size (no segments) revealed this size setup code needs to happen earlier.
-rw-r--r--lib/metadata/lv_manip.c18
1 files changed, 9 insertions, 9 deletions
diff --git a/lib/metadata/lv_manip.c b/lib/metadata/lv_manip.c
index a3634ac0c..f0e492bcf 100644
--- a/lib/metadata/lv_manip.c
+++ b/lib/metadata/lv_manip.c
@@ -4028,6 +4028,15 @@ static int _lv_extend_layered_lv(struct alloc_handle *ah,
fa += stripes;
}
+ seg->len += extents;
+ if (seg_is_raid(seg))
+ seg->area_len = seg->len;
+ else
+ seg->area_len += extents / area_multiple;
+
+ if (!_setup_lv_size(lv, lv->le_count + extents))
+ return_0;
+
if (clear_metadata) {
/*
* We must clear the metadata areas upon creation.
@@ -4092,15 +4101,6 @@ static int _lv_extend_layered_lv(struct alloc_handle *ah,
lv_set_hidden(seg_metalv(seg, s));
}
- seg->len += extents;
- if (seg_is_raid(seg))
- seg->area_len = seg->len;
- else
- seg->area_len += extents / area_multiple;
-
- if (!_setup_lv_size(lv, lv->le_count + extents))
- return_0;
-
return 1;
}