mirror of
git://sourceware.org/git/lvm2.git
synced 2024-12-21 13:34:40 +03:00
rename deptree
This commit is contained in:
parent
436d36943d
commit
e88f56d9da
@ -573,7 +573,7 @@ int dev_manager_lv_rmnodes(const struct logical_volume *lv)
|
|||||||
return fs_del_lv(lv);
|
return fs_del_lv(lv);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int _add_dev_to_deptree(struct dev_manager *dm, struct deptree *dtree,
|
static int _add_dev_to_deptree(struct dev_manager *dm, struct dm_tree *dtree,
|
||||||
struct logical_volume *lv, const char *layer)
|
struct logical_volume *lv, const char *layer)
|
||||||
{
|
{
|
||||||
char *dlid, *name;
|
char *dlid, *name;
|
||||||
@ -591,7 +591,7 @@ static int _add_dev_to_deptree(struct dev_manager *dm, struct deptree *dtree,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (info.exists && !dm_deptree_add_dev(dtree, info.major, info.minor)) {
|
if (info.exists && !dm_tree_add_dev(dtree, info.major, info.minor)) {
|
||||||
log_error("Failed to add device (%" PRIu32 ":%" PRIu32") to deptree",
|
log_error("Failed to add device (%" PRIu32 ":%" PRIu32") to deptree",
|
||||||
info.major, info.minor);
|
info.major, info.minor);
|
||||||
return 0;
|
return 0;
|
||||||
@ -603,7 +603,7 @@ static int _add_dev_to_deptree(struct dev_manager *dm, struct deptree *dtree,
|
|||||||
/*
|
/*
|
||||||
* Add LV and any known dependencies
|
* Add LV and any known dependencies
|
||||||
*/
|
*/
|
||||||
static int _add_lv_to_deptree(struct dev_manager *dm, struct deptree *dtree, struct logical_volume *lv)
|
static int _add_lv_to_deptree(struct dev_manager *dm, struct dm_tree *dtree, struct logical_volume *lv)
|
||||||
{
|
{
|
||||||
if (!_add_dev_to_deptree(dm, dtree, lv, NULL))
|
if (!_add_dev_to_deptree(dm, dtree, lv, NULL))
|
||||||
return_0;
|
return_0;
|
||||||
@ -618,12 +618,12 @@ static int _add_lv_to_deptree(struct dev_manager *dm, struct deptree *dtree, str
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct deptree *_create_partial_deptree(struct dev_manager *dm, struct logical_volume *lv)
|
static struct dm_tree *_create_partial_deptree(struct dev_manager *dm, struct logical_volume *lv)
|
||||||
{
|
{
|
||||||
struct deptree *dtree;
|
struct dm_tree *dtree;
|
||||||
struct list *snh, *snht;
|
struct list *snh, *snht;
|
||||||
|
|
||||||
if (!(dtree = dm_deptree_create())) {
|
if (!(dtree = dm_tree_create())) {
|
||||||
log_error("Partial deptree creation failed for %s.", lv->name);
|
log_error("Partial deptree creation failed for %s.", lv->name);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
@ -643,12 +643,12 @@ static struct deptree *_create_partial_deptree(struct dev_manager *dm, struct lo
|
|||||||
return dtree;
|
return dtree;
|
||||||
|
|
||||||
fail:
|
fail:
|
||||||
dm_deptree_free(dtree);
|
dm_tree_free(dtree);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
int add_areas_line(struct dev_manager *dm, struct lv_segment *seg,
|
int add_areas_line(struct dev_manager *dm, struct lv_segment *seg,
|
||||||
struct deptree_node *node, int start_area, int areas)
|
struct dm_tree_node *node, int start_area, int areas)
|
||||||
{
|
{
|
||||||
uint64_t extent_size = seg->lv->vg->extent_size;
|
uint64_t extent_size = seg->lv->vg->extent_size;
|
||||||
uint32_t s;
|
uint32_t s;
|
||||||
@ -660,11 +660,11 @@ int add_areas_line(struct dev_manager *dm, struct lv_segment *seg,
|
|||||||
!seg_pv(seg, s) ||
|
!seg_pv(seg, s) ||
|
||||||
!seg_dev(seg, s))) ||
|
!seg_dev(seg, s))) ||
|
||||||
(seg_type(seg, s) == AREA_LV && !seg_lv(seg, s)))
|
(seg_type(seg, s) == AREA_LV && !seg_lv(seg, s)))
|
||||||
dm_deptree_node_add_target_area(node,
|
dm_tree_node_add_target_area(node,
|
||||||
dm->stripe_filler,
|
dm->stripe_filler,
|
||||||
NULL, 0);
|
NULL, 0);
|
||||||
else if (seg_type(seg, s) == AREA_PV)
|
else if (seg_type(seg, s) == AREA_PV)
|
||||||
dm_deptree_node_add_target_area(node,
|
dm_tree_node_add_target_area(node,
|
||||||
dev_name(seg_dev(seg, s)),
|
dev_name(seg_dev(seg, s)),
|
||||||
NULL,
|
NULL,
|
||||||
(seg_pv(seg, s)->pe_start +
|
(seg_pv(seg, s)->pe_start +
|
||||||
@ -674,7 +674,7 @@ int add_areas_line(struct dev_manager *dm, struct lv_segment *seg,
|
|||||||
seg_lv(seg, s)->lvid.s,
|
seg_lv(seg, s)->lvid.s,
|
||||||
NULL)))
|
NULL)))
|
||||||
return_0;
|
return_0;
|
||||||
dm_deptree_node_add_target_area(node, NULL, dlid,
|
dm_tree_node_add_target_area(node, NULL, dlid,
|
||||||
extent_size * seg_le(seg, s));
|
extent_size * seg_le(seg, s));
|
||||||
} else {
|
} else {
|
||||||
log_error("Internal error: Unassigned area found in LV %s.",
|
log_error("Internal error: Unassigned area found in LV %s.",
|
||||||
@ -687,8 +687,8 @@ int add_areas_line(struct dev_manager *dm, struct lv_segment *seg,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int _add_origin_target_to_deptree(struct dev_manager *dm,
|
static int _add_origin_target_to_deptree(struct dev_manager *dm,
|
||||||
struct deptree *dtree,
|
struct dm_tree *dtree,
|
||||||
struct deptree_node *dnode,
|
struct dm_tree_node *dnode,
|
||||||
struct logical_volume *lv)
|
struct logical_volume *lv)
|
||||||
{
|
{
|
||||||
const char *real_dlid;
|
const char *real_dlid;
|
||||||
@ -696,15 +696,15 @@ static int _add_origin_target_to_deptree(struct dev_manager *dm,
|
|||||||
if (!(real_dlid = build_dlid(dm, lv->lvid.s, "real")))
|
if (!(real_dlid = build_dlid(dm, lv->lvid.s, "real")))
|
||||||
return_0;
|
return_0;
|
||||||
|
|
||||||
if (!dm_deptree_node_add_snapshot_origin_target(dnode, lv->size, real_dlid))
|
if (!dm_tree_node_add_snapshot_origin_target(dnode, lv->size, real_dlid))
|
||||||
return_0;
|
return_0;
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int _add_snapshot_target_to_deptree(struct dev_manager *dm,
|
static int _add_snapshot_target_to_deptree(struct dev_manager *dm,
|
||||||
struct deptree *dtree,
|
struct dm_tree *dtree,
|
||||||
struct deptree_node *dnode,
|
struct dm_tree_node *dnode,
|
||||||
struct logical_volume *lv)
|
struct logical_volume *lv)
|
||||||
{
|
{
|
||||||
const char *origin_dlid;
|
const char *origin_dlid;
|
||||||
@ -725,15 +725,15 @@ static int _add_snapshot_target_to_deptree(struct dev_manager *dm,
|
|||||||
|
|
||||||
size = (uint64_t) snap_seg->len * snap_seg->origin->vg->extent_size;
|
size = (uint64_t) snap_seg->len * snap_seg->origin->vg->extent_size;
|
||||||
|
|
||||||
if (!dm_deptree_node_add_snapshot_target(dnode, size, origin_dlid, cow_dlid, 1, snap_seg->chunk_size))
|
if (!dm_tree_node_add_snapshot_target(dnode, size, origin_dlid, cow_dlid, 1, snap_seg->chunk_size))
|
||||||
return_0;
|
return_0;
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int _add_target_to_deptree(struct dev_manager *dm,
|
static int _add_target_to_deptree(struct dev_manager *dm,
|
||||||
struct deptree *dtree,
|
struct dm_tree *dtree,
|
||||||
struct deptree_node *dnode,
|
struct dm_tree_node *dnode,
|
||||||
struct lv_segment *seg)
|
struct lv_segment *seg)
|
||||||
{
|
{
|
||||||
uint64_t extent_size = seg->lv->vg->extent_size;
|
uint64_t extent_size = seg->lv->vg->extent_size;
|
||||||
@ -751,12 +751,12 @@ static int _add_target_to_deptree(struct dev_manager *dm,
|
|||||||
&dm-> pvmove_mirror_count);
|
&dm-> pvmove_mirror_count);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int _add_new_lv_to_deptree(struct dev_manager *dm, struct deptree *dtree,
|
static int _add_new_lv_to_deptree(struct dev_manager *dm, struct dm_tree *dtree,
|
||||||
struct logical_volume *lv, const char *layer);
|
struct logical_volume *lv, const char *layer);
|
||||||
|
|
||||||
static int _add_segment_to_deptree(struct dev_manager *dm,
|
static int _add_segment_to_deptree(struct dev_manager *dm,
|
||||||
struct deptree *dtree,
|
struct dm_tree *dtree,
|
||||||
struct deptree_node *dnode,
|
struct dm_tree_node *dnode,
|
||||||
struct lv_segment *seg,
|
struct lv_segment *seg,
|
||||||
const char *layer)
|
const char *layer)
|
||||||
{
|
{
|
||||||
@ -814,12 +814,12 @@ static int _add_segment_to_deptree(struct dev_manager *dm,
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int _add_new_lv_to_deptree(struct dev_manager *dm, struct deptree *dtree,
|
static int _add_new_lv_to_deptree(struct dev_manager *dm, struct dm_tree *dtree,
|
||||||
struct logical_volume *lv, const char *layer)
|
struct logical_volume *lv, const char *layer)
|
||||||
{
|
{
|
||||||
struct lv_segment *seg;
|
struct lv_segment *seg;
|
||||||
struct lv_layer *lvlayer;
|
struct lv_layer *lvlayer;
|
||||||
struct deptree_node *dnode;
|
struct dm_tree_node *dnode;
|
||||||
char *name, *dlid;
|
char *name, *dlid;
|
||||||
|
|
||||||
if (!(name = build_dm_name(dm->mem, lv->vg->name, lv->name, layer)))
|
if (!(name = build_dm_name(dm->mem, lv->vg->name, lv->name, layer)))
|
||||||
@ -829,8 +829,8 @@ static int _add_new_lv_to_deptree(struct dev_manager *dm, struct deptree *dtree,
|
|||||||
return_0;
|
return_0;
|
||||||
|
|
||||||
/* We've already processed this node if it already has a context ptr */
|
/* We've already processed this node if it already has a context ptr */
|
||||||
if ((dnode = dm_deptree_find_node_by_uuid(dtree, dlid)) &&
|
if ((dnode = dm_tree_find_node_by_uuid(dtree, dlid)) &&
|
||||||
dm_deptree_node_get_context(dnode))
|
dm_tree_node_get_context(dnode))
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
/* FIXME How do we determine whether a pre-existing node need reloading or not? */
|
/* FIXME How do we determine whether a pre-existing node need reloading or not? */
|
||||||
@ -847,7 +847,7 @@ static int _add_new_lv_to_deptree(struct dev_manager *dm, struct deptree *dtree,
|
|||||||
* existing inactive table left behind.
|
* existing inactive table left behind.
|
||||||
* Major/minor settings only apply to the visible layer.
|
* Major/minor settings only apply to the visible layer.
|
||||||
*/
|
*/
|
||||||
if (!(dnode = dm_deptree_add_new_dev(dtree, name, dlid,
|
if (!(dnode = dm_tree_add_new_dev(dtree, name, dlid,
|
||||||
layer ? lv->major : 0,
|
layer ? lv->major : 0,
|
||||||
layer ? lv->minor : 0,
|
layer ? lv->minor : 0,
|
||||||
_read_only_lv(lv),
|
_read_only_lv(lv),
|
||||||
@ -856,7 +856,7 @@ static int _add_new_lv_to_deptree(struct dev_manager *dm, struct deptree *dtree,
|
|||||||
return_0;
|
return_0;
|
||||||
|
|
||||||
/* Store existing name so we can do rename later */
|
/* Store existing name so we can do rename later */
|
||||||
lvlayer->old_name = dm_deptree_node_get_name(dnode);
|
lvlayer->old_name = dm_tree_node_get_name(dnode);
|
||||||
|
|
||||||
/* Create table */
|
/* Create table */
|
||||||
dm->pvmove_mirror_count = 0u;
|
dm->pvmove_mirror_count = 0u;
|
||||||
@ -876,21 +876,21 @@ static int _add_new_lv_to_deptree(struct dev_manager *dm, struct deptree *dtree,
|
|||||||
/*
|
/*
|
||||||
* Create LV symlinks for children of supplied root node.
|
* Create LV symlinks for children of supplied root node.
|
||||||
*/
|
*/
|
||||||
static int _create_lv_symlinks(struct dev_manager *dm, struct deptree_node *root)
|
static int _create_lv_symlinks(struct dev_manager *dm, struct dm_tree_node *root)
|
||||||
{
|
{
|
||||||
void *handle = NULL;
|
void *handle = NULL;
|
||||||
struct deptree_node *child;
|
struct dm_tree_node *child;
|
||||||
struct lv_layer *lvlayer;
|
struct lv_layer *lvlayer;
|
||||||
char *vgname, *lvname, *layer;
|
char *vgname, *lvname, *layer;
|
||||||
const char *name;
|
const char *name;
|
||||||
int r = 1;
|
int r = 1;
|
||||||
|
|
||||||
while ((child = dm_deptree_next_child(&handle, root, 0))) {
|
while ((child = dm_tree_next_child(&handle, root, 0))) {
|
||||||
if (!(lvlayer = (struct lv_layer *) dm_deptree_node_get_context(child)))
|
if (!(lvlayer = (struct lv_layer *) dm_tree_node_get_context(child)))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
/* Detect rename */
|
/* Detect rename */
|
||||||
name = dm_deptree_node_get_name(child);
|
name = dm_tree_node_get_name(child);
|
||||||
|
|
||||||
if (name && lvlayer->old_name && *lvlayer->old_name && strcmp(name, lvlayer->old_name)) {
|
if (name && lvlayer->old_name && *lvlayer->old_name && strcmp(name, lvlayer->old_name)) {
|
||||||
if (!split_dm_name(dm->mem, lvlayer->old_name, &vgname, &lvname, &layer)) {
|
if (!split_dm_name(dm->mem, lvlayer->old_name, &vgname, &lvname, &layer)) {
|
||||||
@ -905,18 +905,18 @@ static int _create_lv_symlinks(struct dev_manager *dm, struct deptree_node *root
|
|||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int _clean_tree(struct dev_manager *dm, struct logical_volume *lv, struct deptree_node *root)
|
static int _clean_tree(struct dev_manager *dm, struct logical_volume *lv, struct dm_tree_node *root)
|
||||||
{
|
{
|
||||||
void *handle = NULL;
|
void *handle = NULL;
|
||||||
struct deptree_node *child;
|
struct dm_tree_node *child;
|
||||||
char *vgname, *lvname, *layer;
|
char *vgname, *lvname, *layer;
|
||||||
const char *name, *uuid;
|
const char *name, *uuid;
|
||||||
|
|
||||||
while ((child = dm_deptree_next_child(&handle, root, 0))) {
|
while ((child = dm_tree_next_child(&handle, root, 0))) {
|
||||||
if (!(name = dm_deptree_node_get_name(child)))
|
if (!(name = dm_tree_node_get_name(child)))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (!(uuid = dm_deptree_node_get_uuid(child)))
|
if (!(uuid = dm_tree_node_get_uuid(child)))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (!split_dm_name(dm->mem, name, &vgname, &lvname, &layer)) {
|
if (!split_dm_name(dm->mem, name, &vgname, &lvname, &layer)) {
|
||||||
@ -928,7 +928,7 @@ static int _clean_tree(struct dev_manager *dm, struct logical_volume *lv, struct
|
|||||||
if (!*layer)
|
if (!*layer)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (!dm_deptree_deactivate_children(root, uuid, strlen(uuid)))
|
if (!dm_tree_deactivate_children(root, uuid, strlen(uuid)))
|
||||||
return_0;
|
return_0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -937,15 +937,15 @@ static int _clean_tree(struct dev_manager *dm, struct logical_volume *lv, struct
|
|||||||
|
|
||||||
static int _tree_action(struct dev_manager *dm, struct logical_volume *lv, action_t action)
|
static int _tree_action(struct dev_manager *dm, struct logical_volume *lv, action_t action)
|
||||||
{
|
{
|
||||||
struct deptree *dtree;
|
struct dm_tree *dtree;
|
||||||
struct deptree_node *root;
|
struct dm_tree_node *root;
|
||||||
char *dlid;
|
char *dlid;
|
||||||
int r = 0;
|
int r = 0;
|
||||||
|
|
||||||
if (!(dtree = _create_partial_deptree(dm, lv)))
|
if (!(dtree = _create_partial_deptree(dm, lv)))
|
||||||
return_0;
|
return_0;
|
||||||
|
|
||||||
if (!(root = dm_deptree_find_node(dtree, 0, 0))) {
|
if (!(root = dm_tree_find_node(dtree, 0, 0))) {
|
||||||
log_error("Lost dependency tree root node");
|
log_error("Lost dependency tree root node");
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
@ -962,11 +962,11 @@ static int _tree_action(struct dev_manager *dm, struct logical_volume *lv, actio
|
|||||||
break;
|
break;
|
||||||
case DEACTIVATE:
|
case DEACTIVATE:
|
||||||
/* Deactivate LV and all devices it references that nothing else has open. */
|
/* Deactivate LV and all devices it references that nothing else has open. */
|
||||||
if (!dm_deptree_deactivate_children(root, dlid, ID_LEN + sizeof(UUID_PREFIX) - 1))
|
if (!dm_tree_deactivate_children(root, dlid, ID_LEN + sizeof(UUID_PREFIX) - 1))
|
||||||
goto_out;
|
goto_out;
|
||||||
break;
|
break;
|
||||||
case SUSPEND:
|
case SUSPEND:
|
||||||
if (!dm_deptree_suspend_children(root, dlid, ID_LEN + sizeof(UUID_PREFIX) - 1))
|
if (!dm_tree_suspend_children(root, dlid, ID_LEN + sizeof(UUID_PREFIX) - 1))
|
||||||
goto_out;
|
goto_out;
|
||||||
break;
|
break;
|
||||||
case PRELOAD:
|
case PRELOAD:
|
||||||
@ -976,11 +976,11 @@ static int _tree_action(struct dev_manager *dm, struct logical_volume *lv, actio
|
|||||||
goto_out;
|
goto_out;
|
||||||
|
|
||||||
/* Preload any devices required before any suspensions */
|
/* Preload any devices required before any suspensions */
|
||||||
if (!dm_deptree_preload_children(root, dlid, ID_LEN + sizeof(UUID_PREFIX) - 1))
|
if (!dm_tree_preload_children(root, dlid, ID_LEN + sizeof(UUID_PREFIX) - 1))
|
||||||
goto_out;
|
goto_out;
|
||||||
|
|
||||||
if ((action == ACTIVATE) &&
|
if ((action == ACTIVATE) &&
|
||||||
!dm_deptree_activate_children(root, dlid, ID_LEN + sizeof(UUID_PREFIX) - 1))
|
!dm_tree_activate_children(root, dlid, ID_LEN + sizeof(UUID_PREFIX) - 1))
|
||||||
goto_out;
|
goto_out;
|
||||||
|
|
||||||
if (!_create_lv_symlinks(dm, root)) {
|
if (!_create_lv_symlinks(dm, root)) {
|
||||||
@ -996,7 +996,7 @@ static int _tree_action(struct dev_manager *dm, struct logical_volume *lv, actio
|
|||||||
r = 1;
|
r = 1;
|
||||||
|
|
||||||
out:
|
out:
|
||||||
dm_deptree_free(dtree);
|
dm_tree_free(dtree);
|
||||||
|
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
@ -1037,17 +1037,17 @@ int dev_manager_suspend(struct dev_manager *dm, struct logical_volume *lv)
|
|||||||
int dev_manager_device_uses_vg(struct dev_manager *dm, struct device *dev,
|
int dev_manager_device_uses_vg(struct dev_manager *dm, struct device *dev,
|
||||||
struct volume_group *vg)
|
struct volume_group *vg)
|
||||||
{
|
{
|
||||||
struct deptree *dtree;
|
struct dm_tree *dtree;
|
||||||
struct deptree_node *root;
|
struct dm_tree_node *root;
|
||||||
char dlid[sizeof(UUID_PREFIX) + sizeof(struct id) - 1];
|
char dlid[sizeof(UUID_PREFIX) + sizeof(struct id) - 1];
|
||||||
int r = 1;
|
int r = 1;
|
||||||
|
|
||||||
if (!(dtree = dm_deptree_create())) {
|
if (!(dtree = dm_tree_create())) {
|
||||||
log_error("partial deptree creation failed");
|
log_error("partial deptree creation failed");
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!dm_deptree_add_dev(dtree, MAJOR(dev->dev), MINOR(dev->dev))) {
|
if (!dm_tree_add_dev(dtree, MAJOR(dev->dev), MINOR(dev->dev))) {
|
||||||
log_error("Failed to add device %s (%" PRIu32 ":%" PRIu32") to deptree",
|
log_error("Failed to add device %s (%" PRIu32 ":%" PRIu32") to deptree",
|
||||||
dev_name(dev), (uint32_t) MAJOR(dev->dev), (uint32_t) MINOR(dev->dev));
|
dev_name(dev), (uint32_t) MAJOR(dev->dev), (uint32_t) MINOR(dev->dev));
|
||||||
goto out;
|
goto out;
|
||||||
@ -1056,17 +1056,17 @@ int dev_manager_device_uses_vg(struct dev_manager *dm, struct device *dev,
|
|||||||
memcpy(dlid, UUID_PREFIX, sizeof(UUID_PREFIX) - 1);
|
memcpy(dlid, UUID_PREFIX, sizeof(UUID_PREFIX) - 1);
|
||||||
memcpy(dlid + sizeof(UUID_PREFIX) - 1, &vg->id.uuid[0], sizeof(vg->id));
|
memcpy(dlid + sizeof(UUID_PREFIX) - 1, &vg->id.uuid[0], sizeof(vg->id));
|
||||||
|
|
||||||
if (!(root = dm_deptree_find_node(dtree, 0, 0))) {
|
if (!(root = dm_tree_find_node(dtree, 0, 0))) {
|
||||||
log_error("Lost dependency tree root node");
|
log_error("Lost dependency tree root node");
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (dm_deptree_children_use_uuid(root, dlid, sizeof(UUID_PREFIX) + sizeof(vg->id) - 1))
|
if (dm_tree_children_use_uuid(root, dlid, sizeof(UUID_PREFIX) + sizeof(vg->id) - 1))
|
||||||
goto_out;
|
goto_out;
|
||||||
|
|
||||||
r = 0;
|
r = 0;
|
||||||
|
|
||||||
out:
|
out:
|
||||||
dm_deptree_free(dtree);
|
dm_tree_free(dtree);
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user