mirror of
git://sourceware.org/git/lvm2.git
synced 2024-12-21 13:34:40 +03:00
Replicator: update _create_partial_dtree()
Adding function _add_partial_replicator_to_dtree() to create partial tree for Replicator target. Using dm_tree_node_set_presuspend_node() for Replicator.
This commit is contained in:
parent
9249fb12b8
commit
dc7d777606
@ -1,5 +1,6 @@
|
|||||||
Version 2.02.67 -
|
Version 2.02.67 -
|
||||||
===============================
|
===============================
|
||||||
|
Add _add_partial_replicator_to_dtree().
|
||||||
Activation code read and releases also remote VGs (Replicator).
|
Activation code read and releases also remote VGs (Replicator).
|
||||||
Check for missing VGs before taking lock_vol (Replicator).
|
Check for missing VGs before taking lock_vol (Replicator).
|
||||||
Update process_each_lv_in_vg() to use cmd_vg structure.
|
Update process_each_lv_in_vg() to use cmd_vg structure.
|
||||||
|
@ -864,6 +864,84 @@ static int _add_dev_to_dtree(struct dev_manager *dm, struct dm_tree *dtree,
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Add replicator devices
|
||||||
|
*
|
||||||
|
* Using _add_dev_to_dtree() directly instead of _add_lv_to_dtree()
|
||||||
|
* to avoid extra checks with extensions.
|
||||||
|
*/
|
||||||
|
static int _add_partial_replicator_to_dtree(struct dev_manager *dm,
|
||||||
|
struct dm_tree *dtree,
|
||||||
|
struct logical_volume *lv)
|
||||||
|
{
|
||||||
|
struct logical_volume *rlv = first_seg(lv)->replicator;
|
||||||
|
struct replicator_device *rdev;
|
||||||
|
struct replicator_site *rsite;
|
||||||
|
struct dm_tree_node *rep_node, *rdev_node;
|
||||||
|
const char *uuid;
|
||||||
|
|
||||||
|
if (!lv_is_active_replicator_dev(lv)) {
|
||||||
|
if (!_add_dev_to_dtree(dm, dtree, lv->rdevice->lv,
|
||||||
|
NULL))
|
||||||
|
return_0;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Add _rlog and replicator device */
|
||||||
|
if (!_add_dev_to_dtree(dm, dtree, first_seg(rlv)->rlog_lv, NULL))
|
||||||
|
return_0;
|
||||||
|
|
||||||
|
if (!_add_dev_to_dtree(dm, dtree, rlv, NULL))
|
||||||
|
return_0;
|
||||||
|
|
||||||
|
if (!(uuid = build_dm_uuid(dm->mem, rlv->lvid.s, NULL)))
|
||||||
|
return_0;
|
||||||
|
|
||||||
|
rep_node = dm_tree_find_node_by_uuid(dtree, uuid);
|
||||||
|
|
||||||
|
/* Add all related devices for replicator */
|
||||||
|
dm_list_iterate_items(rsite, &rlv->rsites)
|
||||||
|
dm_list_iterate_items(rdev, &rsite->rdevices) {
|
||||||
|
if (rsite->state == REPLICATOR_STATE_ACTIVE) {
|
||||||
|
/* Add _rimage LV */
|
||||||
|
if (!_add_dev_to_dtree(dm, dtree, rdev->lv, NULL))
|
||||||
|
return_0;
|
||||||
|
|
||||||
|
/* Add replicator-dev LV, except of the already added one */
|
||||||
|
if ((lv != rdev->replicator_dev->lv) &&
|
||||||
|
!_add_dev_to_dtree(dm, dtree,
|
||||||
|
rdev->replicator_dev->lv, NULL))
|
||||||
|
return_0;
|
||||||
|
|
||||||
|
/* If replicator exists - try connect existing heads */
|
||||||
|
if (rep_node) {
|
||||||
|
uuid = build_dm_uuid(dm->mem,
|
||||||
|
rdev->replicator_dev->lv->lvid.s,
|
||||||
|
NULL);
|
||||||
|
if (!uuid)
|
||||||
|
return_0;
|
||||||
|
|
||||||
|
rdev_node = dm_tree_find_node_by_uuid(dtree, uuid);
|
||||||
|
if (rdev_node)
|
||||||
|
dm_tree_node_set_presuspend_node(rdev_node,
|
||||||
|
rep_node);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!rdev->rsite->vg_name)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (!_add_dev_to_dtree(dm, dtree, rdev->lv, NULL))
|
||||||
|
return_0;
|
||||||
|
|
||||||
|
if (rdev->slog &&
|
||||||
|
!_add_dev_to_dtree(dm, dtree, rdev->slog, NULL))
|
||||||
|
return_0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Add LV and any known dependencies
|
* Add LV and any known dependencies
|
||||||
*/
|
*/
|
||||||
@ -883,6 +961,11 @@ static int _add_lv_to_dtree(struct dev_manager *dm, struct dm_tree *dtree, struc
|
|||||||
!_add_dev_to_dtree(dm, dtree, first_seg(lv)->log_lv, NULL))
|
!_add_dev_to_dtree(dm, dtree, first_seg(lv)->log_lv, NULL))
|
||||||
return_0;
|
return_0;
|
||||||
|
|
||||||
|
/* Adding LV head of replicator adds all other related devs */
|
||||||
|
if (lv_is_replicator_dev(lv) &&
|
||||||
|
!_add_partial_replicator_to_dtree(dm, dtree, lv))
|
||||||
|
return_0;
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user