summaryrefslogtreecommitdiffstats
path: root/lib/activate
diff options
context:
space:
mode:
authorAlasdair Kergon <agk@redhat.com>2011-07-05 23:10:14 +0000
committerAlasdair Kergon <agk@redhat.com>2011-07-05 23:10:14 +0000
commit86b15c7c90c87ad0756f4c7d5238a243326c6529 (patch)
tree5477946c6e187d1b5366c0c0b7310d2d44272c9e /lib/activate
parent3a8eb3870eba441187128da40533431f0eb9b39c (diff)
downloadlvm2-86b15c7c90c87ad0756f4c7d5238a243326c6529.tar.gz
lvm2-86b15c7c90c87ad0756f4c7d5238a243326c6529.tar.xz
lvm2-86b15c7c90c87ad0756f4c7d5238a243326c6529.zip
Abort operation if dm_tree_node_add_target_area fails.
Diffstat (limited to 'lib/activate')
-rw-r--r--lib/activate/dev_manager.c29
1 files changed, 12 insertions, 17 deletions
diff --git a/lib/activate/dev_manager.c b/lib/activate/dev_manager.c
index 04eb1244..6c037496 100644
--- a/lib/activate/dev_manager.c
+++ b/lib/activate/dev_manager.c
@@ -1178,12 +1178,11 @@ static int _add_error_area(struct dev_manager *dm, struct dm_tree_node *node,
dlid = _add_error_device(dm, *tree, seg, s);
if (!dlid)
return_0;
- dm_tree_node_add_target_area(node, NULL, dlid,
- extent_size * seg_le(seg, s));
+ if (!dm_tree_node_add_target_area(node, NULL, dlid, extent_size * seg_le(seg, s)))
+ return_0;
} else
- dm_tree_node_add_target_area(node,
- dm->cmd->stripe_filler,
- NULL, UINT64_C(0));
+ if (!dm_tree_node_add_target_area(node, dm->cmd->stripe_filler, NULL, UINT64_C(0)))
+ return_0;
return 1;
}
@@ -1204,19 +1203,15 @@ int add_areas_line(struct dev_manager *dm, struct lv_segment *seg,
(seg_type(seg, s) == AREA_LV && !seg_lv(seg, s))) {
if (!_add_error_area(dm, node, seg, s))
return_0;
- } else if (seg_type(seg, s) == AREA_PV)
- dm_tree_node_add_target_area(node,
- dev_name(seg_dev(seg, s)),
- NULL,
- (seg_pv(seg, s)->pe_start +
- (extent_size * seg_pe(seg, s))));
- else if (seg_type(seg, s) == AREA_LV) {
- if (!(dlid = build_dm_uuid(dm->mem,
- seg_lv(seg, s)->lvid.s,
- NULL)))
+ } else if (seg_type(seg, s) == AREA_PV) {
+ if (!dm_tree_node_add_target_area(node, dev_name(seg_dev(seg, s)), NULL,
+ (seg_pv(seg, s)->pe_start + (extent_size * seg_pe(seg, s)))))
+ return_0;
+ } else if (seg_type(seg, s) == AREA_LV) {
+ if (!(dlid = build_dm_uuid(dm->mem, seg_lv(seg, s)->lvid.s, NULL)))
+ return_0;
+ if (!dm_tree_node_add_target_area(node, NULL, dlid, extent_size * seg_le(seg, s)))
return_0;
- dm_tree_node_add_target_area(node, NULL, dlid,
- extent_size * seg_le(seg, s));
} else {
log_error(INTERNAL_ERROR "Unassigned area found in LV %s.",
seg->lv->name);