diff options
author | Jonathan Earl Brassow <jbrassow@redhat.com> | 2011-08-11 04:18:17 +0000 |
---|---|---|
committer | Jonathan Earl Brassow <jbrassow@redhat.com> | 2011-08-11 04:18:17 +0000 |
commit | ff58e019d8dfbd77fe1753d313b5f9fc8b0f8ee2 (patch) | |
tree | 9760fb005f17f38466366be04d763801b7367b52 /lib/activate | |
parent | 66d96755593bf8c2f7a593fe4a207252e06657ab (diff) | |
download | lvm2-ff58e019d8dfbd77fe1753d313b5f9fc8b0f8ee2.tar.gz lvm2-ff58e019d8dfbd77fe1753d313b5f9fc8b0f8ee2.tar.xz lvm2-ff58e019d8dfbd77fe1753d313b5f9fc8b0f8ee2.zip |
Add RAID metadata devices to considered devices in _add_lv_to_dtree.
_add_lv_to_dtree must also add RAID metadata devices.
Diffstat (limited to 'lib/activate')
-rw-r--r-- | lib/activate/dev_manager.c | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/lib/activate/dev_manager.c b/lib/activate/dev_manager.c index 78e346b9..c5b377d6 100644 --- a/lib/activate/dev_manager.c +++ b/lib/activate/dev_manager.c @@ -1060,9 +1060,12 @@ static int _add_partial_replicator_to_dtree(struct dev_manager *dm, /* * Add LV and any known dependencies */ -static int _add_lv_to_dtree(struct dev_manager *dm, struct dm_tree *dtree, struct logical_volume *lv, int origin_only) +static int _add_lv_to_dtree(struct dev_manager *dm, struct dm_tree *dtree, + struct logical_volume *lv, int origin_only) { + uint32_t s; struct seg_list *sl; + struct lv_segment *seg = first_seg(lv); if (!origin_only && !_add_dev_to_dtree(dm, dtree, lv, NULL)) return_0; @@ -1074,10 +1077,16 @@ static int _add_lv_to_dtree(struct dev_manager *dm, struct dm_tree *dtree, struc if (!origin_only && !_add_dev_to_dtree(dm, dtree, lv, "cow")) return_0; - if ((lv->status & MIRRORED) && first_seg(lv)->log_lv && - !_add_dev_to_dtree(dm, dtree, first_seg(lv)->log_lv, NULL)) + if ((lv->status & MIRRORED) && seg->log_lv && + !_add_dev_to_dtree(dm, dtree, seg->log_lv, NULL)) return_0; + if (lv->status & RAID) + for (s = 0; s < seg->area_count; s++) + if (!_add_lv_to_dtree(dm, dtree, + seg_metalv(seg, s), origin_only)) + return_0; + /* Add any LVs referencing a PVMOVE LV unless told not to. */ if (dm->track_pvmove_deps && lv->status & PVMOVE) dm_list_iterate_items(sl, &lv->segs_using_this_lv) |