mirror of
git://sourceware.org/git/lvm2.git
synced 2024-12-07 18:00:49 +03:00
rename deptree
This commit is contained in:
parent
ad6b0ebb73
commit
b4f1578fc2
@ -1,5 +1,7 @@
|
||||
Version 1.02.00 -
|
||||
=============================
|
||||
Added activation functions to library.
|
||||
Added return macros.
|
||||
Also suppress error if device doesn't exist with DM_DEVICE_STATUS.
|
||||
Export dm_set_selinux_context().
|
||||
Add dm_driver_version().
|
||||
|
@ -30,34 +30,34 @@ dm_get_next_target
|
||||
dm_set_dev_dir
|
||||
dm_dir
|
||||
dm_format_dev
|
||||
dm_deptree_create
|
||||
dm_deptree_free
|
||||
dm_deptree_add_dev
|
||||
dm_deptree_add_new_dev
|
||||
dm_deptree_node_get_name
|
||||
dm_deptree_node_get_uuid
|
||||
dm_deptree_node_get_info
|
||||
dm_deptree_node_get_context
|
||||
dm_deptree_node_num_children
|
||||
dm_deptree_node_num_parents
|
||||
dm_deptree_find_node
|
||||
dm_deptree_find_node_by_uuid
|
||||
dm_deptree_next_child
|
||||
dm_deptree_next_parent
|
||||
dm_deptree_deactivate_children
|
||||
dm_deptree_activate_children
|
||||
dm_deptree_preload_children
|
||||
dm_deptree_suspend_children
|
||||
dm_deptree_children_use_uuid
|
||||
dm_deptree_node_add_snapshot_origin_target
|
||||
dm_deptree_node_add_snapshot_target
|
||||
dm_deptree_node_add_error_target
|
||||
dm_deptree_node_add_zero_target
|
||||
dm_deptree_node_add_linear_target
|
||||
dm_deptree_node_add_striped_target
|
||||
dm_deptree_node_add_mirror_target
|
||||
dm_deptree_node_add_mirror_target_log
|
||||
dm_deptree_node_add_target_area
|
||||
dm_tree_create
|
||||
dm_tree_free
|
||||
dm_tree_add_dev
|
||||
dm_tree_add_new_dev
|
||||
dm_tree_node_get_name
|
||||
dm_tree_node_get_uuid
|
||||
dm_tree_node_get_info
|
||||
dm_tree_node_get_context
|
||||
dm_tree_node_num_children
|
||||
dm_tree_node_num_parents
|
||||
dm_tree_find_node
|
||||
dm_tree_find_node_by_uuid
|
||||
dm_tree_next_child
|
||||
dm_tree_next_parent
|
||||
dm_tree_deactivate_children
|
||||
dm_tree_activate_children
|
||||
dm_tree_preload_children
|
||||
dm_tree_suspend_children
|
||||
dm_tree_children_use_uuid
|
||||
dm_tree_node_add_snapshot_origin_target
|
||||
dm_tree_node_add_snapshot_target
|
||||
dm_tree_node_add_error_target
|
||||
dm_tree_node_add_zero_target
|
||||
dm_tree_node_add_linear_target
|
||||
dm_tree_node_add_striped_target
|
||||
dm_tree_node_add_mirror_target
|
||||
dm_tree_node_add_mirror_target_log
|
||||
dm_tree_node_add_target_area
|
||||
dm_is_dm_major
|
||||
dm_mknodes
|
||||
dm_malloc_aux
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (C) 2001-2004 Sistina Software, Inc. All rights reserved.
|
||||
* Copyright (C) 2004 Red Hat, Inc. All rights reserved.
|
||||
* Copyright (C) 2004-2005 Red Hat, Inc. All rights reserved.
|
||||
*
|
||||
* This file is part of the device-mapper userspace tools.
|
||||
*
|
||||
@ -27,6 +27,11 @@
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
/*****************************************************************
|
||||
* The first section of this file provides direct access to the
|
||||
* individual device-mapper ioctls.
|
||||
****************************************************************/
|
||||
|
||||
/*
|
||||
* Since it is quite laborious to build the ioctl
|
||||
* arguments for the device-mapper people are
|
||||
@ -180,21 +185,17 @@ int dm_is_dm_major(uint32_t major);
|
||||
void dm_lib_release(void);
|
||||
void dm_lib_exit(void) __attribute((destructor));
|
||||
|
||||
/***********************************************************************
|
||||
* Wrappers
|
||||
***********************************************************************/
|
||||
|
||||
/*
|
||||
* Use NULL for all devices.
|
||||
*/
|
||||
int dm_mknodes(const char *name);
|
||||
int dm_driver_version(char *version, size_t size);
|
||||
|
||||
/*****************************
|
||||
* Dependency tree functions *
|
||||
*****************************/
|
||||
struct deptree;
|
||||
struct deptree_node;
|
||||
/******************************************************
|
||||
* Functions to build and manipulate trees of devices *
|
||||
******************************************************/
|
||||
struct dm_tree;
|
||||
struct dm_tree_node;
|
||||
|
||||
/*
|
||||
* Initialise an empty dependency tree.
|
||||
@ -207,18 +208,18 @@ struct deptree_node;
|
||||
* The root node is the parent/child of every node that doesn't have other
|
||||
* parents/children.
|
||||
*/
|
||||
struct deptree *dm_deptree_create(void);
|
||||
void dm_deptree_free(struct deptree *deptree);
|
||||
struct dm_tree *dm_tree_create(void);
|
||||
void dm_tree_free(struct dm_tree *tree);
|
||||
|
||||
/*
|
||||
* Add nodes to the tree for a given device and all the devices it uses.
|
||||
*/
|
||||
int dm_deptree_add_dev(struct deptree *deptree, uint32_t major, uint32_t minor);
|
||||
int dm_tree_add_dev(struct dm_tree *tree, uint32_t major, uint32_t minor);
|
||||
|
||||
/*
|
||||
* Add a new node to the tree if it doesn't already exist.
|
||||
*/
|
||||
struct deptree_node *dm_deptree_add_new_dev(struct deptree *deptree,
|
||||
struct dm_tree_node *dm_tree_add_new_dev(struct dm_tree *tree,
|
||||
const char *name,
|
||||
const char *uuid,
|
||||
uint32_t major, uint32_t minor,
|
||||
@ -230,10 +231,10 @@ struct deptree_node *dm_deptree_add_new_dev(struct deptree *deptree,
|
||||
* Search for a node in the tree.
|
||||
* Set major and minor to 0 or uuid to NULL to get the root node.
|
||||
*/
|
||||
struct deptree_node *dm_deptree_find_node(struct deptree *deptree,
|
||||
struct dm_tree_node *dm_tree_find_node(struct dm_tree *tree,
|
||||
uint32_t major,
|
||||
uint32_t minor);
|
||||
struct deptree_node *dm_deptree_find_node_by_uuid(struct deptree *deptree,
|
||||
struct dm_tree_node *dm_tree_find_node_by_uuid(struct dm_tree *tree,
|
||||
const char *uuid);
|
||||
|
||||
/*
|
||||
@ -242,36 +243,36 @@ struct deptree_node *dm_deptree_find_node_by_uuid(struct deptree *deptree,
|
||||
* Returns NULL after the last child.
|
||||
* Set inverted to use inverted tree.
|
||||
*/
|
||||
struct deptree_node *dm_deptree_next_child(void **handle,
|
||||
struct deptree_node *parent,
|
||||
struct dm_tree_node *dm_tree_next_child(void **handle,
|
||||
struct dm_tree_node *parent,
|
||||
uint32_t inverted);
|
||||
|
||||
/*
|
||||
* Get properties of a node.
|
||||
*/
|
||||
const char *dm_deptree_node_get_name(struct deptree_node *node);
|
||||
const char *dm_deptree_node_get_uuid(struct deptree_node *node);
|
||||
const struct dm_info *dm_deptree_node_get_info(struct deptree_node *node);
|
||||
void *dm_deptree_node_get_context(struct deptree_node *node);
|
||||
const char *dm_tree_node_get_name(struct dm_tree_node *node);
|
||||
const char *dm_tree_node_get_uuid(struct dm_tree_node *node);
|
||||
const struct dm_info *dm_tree_node_get_info(struct dm_tree_node *node);
|
||||
void *dm_tree_node_get_context(struct dm_tree_node *node);
|
||||
|
||||
/*
|
||||
* Returns the number of children of the given node (excluding the root node).
|
||||
* Set inverted for the number of parents.
|
||||
*/
|
||||
int dm_deptree_node_num_children(struct deptree_node *node, uint32_t inverted);
|
||||
int dm_tree_node_num_children(struct dm_tree_node *node, uint32_t inverted);
|
||||
|
||||
/*
|
||||
* Deactivate a device plus all dependencies.
|
||||
* Ignores devices that don't have a uuid starting with uuid_prefix.
|
||||
*/
|
||||
int dm_deptree_deactivate_children(struct deptree_node *dnode,
|
||||
int dm_tree_deactivate_children(struct dm_tree_node *dnode,
|
||||
const char *uuid_prefix,
|
||||
size_t uuid_prefix_len);
|
||||
/*
|
||||
* Preload/create a device plus all dependencies.
|
||||
* Ignores devices that don't have a uuid starting with uuid_prefix.
|
||||
*/
|
||||
int dm_deptree_preload_children(struct deptree_node *dnode,
|
||||
int dm_tree_preload_children(struct dm_tree_node *dnode,
|
||||
const char *uuid_prefix,
|
||||
size_t uuid_prefix_len);
|
||||
|
||||
@ -279,7 +280,7 @@ int dm_deptree_preload_children(struct deptree_node *dnode,
|
||||
* Resume a device plus all dependencies.
|
||||
* Ignores devices that don't have a uuid starting with uuid_prefix.
|
||||
*/
|
||||
int dm_deptree_activate_children(struct deptree_node *dnode,
|
||||
int dm_tree_activate_children(struct dm_tree_node *dnode,
|
||||
const char *uuid_prefix,
|
||||
size_t uuid_prefix_len);
|
||||
|
||||
@ -287,7 +288,7 @@ int dm_deptree_activate_children(struct deptree_node *dnode,
|
||||
* Suspend a device plus all dependencies.
|
||||
* Ignores devices that don't have a uuid starting with uuid_prefix.
|
||||
*/
|
||||
int dm_deptree_suspend_children(struct deptree_node *dnode,
|
||||
int dm_tree_suspend_children(struct dm_tree_node *dnode,
|
||||
const char *uuid_prefix,
|
||||
size_t uuid_prefix_len);
|
||||
|
||||
@ -296,39 +297,39 @@ int dm_deptree_suspend_children(struct deptree_node *dnode,
|
||||
* Only returns 0 if every node was checked successfully.
|
||||
* Returns 1 if the tree walk has to be aborted.
|
||||
*/
|
||||
int dm_deptree_children_use_uuid(struct deptree_node *dnode,
|
||||
int dm_tree_children_use_uuid(struct dm_tree_node *dnode,
|
||||
const char *uuid_prefix,
|
||||
size_t uuid_prefix_len);
|
||||
|
||||
/*
|
||||
* Construct tables for new nodes.
|
||||
* Construct tables for new nodes before activating them.
|
||||
*/
|
||||
int dm_deptree_node_add_snapshot_origin_target(struct deptree_node *dnode,
|
||||
int dm_tree_node_add_snapshot_origin_target(struct dm_tree_node *dnode,
|
||||
uint64_t size,
|
||||
const char *origin_uuid);
|
||||
int dm_deptree_node_add_snapshot_target(struct deptree_node *node,
|
||||
int dm_tree_node_add_snapshot_target(struct dm_tree_node *node,
|
||||
uint64_t size,
|
||||
const char *origin_uuid,
|
||||
const char *cow_uuid,
|
||||
int persistent,
|
||||
uint32_t chunk_size);
|
||||
int dm_deptree_node_add_error_target(struct deptree_node *node,
|
||||
int dm_tree_node_add_error_target(struct dm_tree_node *node,
|
||||
uint64_t size);
|
||||
int dm_deptree_node_add_zero_target(struct deptree_node *node,
|
||||
int dm_tree_node_add_zero_target(struct dm_tree_node *node,
|
||||
uint64_t size);
|
||||
int dm_deptree_node_add_linear_target(struct deptree_node *node,
|
||||
int dm_tree_node_add_linear_target(struct dm_tree_node *node,
|
||||
uint64_t size);
|
||||
int dm_deptree_node_add_striped_target(struct deptree_node *node,
|
||||
int dm_tree_node_add_striped_target(struct dm_tree_node *node,
|
||||
uint64_t size,
|
||||
uint32_t stripe_size);
|
||||
int dm_deptree_node_add_mirror_target(struct deptree_node *node,
|
||||
int dm_tree_node_add_mirror_target(struct dm_tree_node *node,
|
||||
uint64_t size);
|
||||
int dm_deptree_node_add_mirror_target_log(struct deptree_node *node,
|
||||
int dm_tree_node_add_mirror_target_log(struct dm_tree_node *node,
|
||||
uint32_t region_size,
|
||||
unsigned clustered,
|
||||
const char *log_uuid,
|
||||
unsigned area_count);
|
||||
int dm_deptree_node_add_target_area(struct deptree_node *node,
|
||||
int dm_tree_node_add_target_area(struct dm_tree_node *node,
|
||||
const char *dev_name,
|
||||
const char *dlid,
|
||||
uint64_t offset);
|
||||
@ -337,6 +338,10 @@ int dm_deptree_node_add_target_area(struct deptree_node *node,
|
||||
* Library functions
|
||||
*****************************************************************************/
|
||||
|
||||
/*******************
|
||||
* Memory management
|
||||
*******************/
|
||||
|
||||
void *dm_malloc_aux(size_t s, const char *file, int line);
|
||||
#define dm_malloc(s) dm_malloc_aux((s), __FILE__, __LINE__)
|
||||
|
||||
@ -361,10 +366,6 @@ void dm_bounds_check(void);
|
||||
|
||||
#endif
|
||||
|
||||
/******************
|
||||
* pool functions
|
||||
******************/
|
||||
|
||||
/*
|
||||
* The pool allocator is useful when you are going to allocate
|
||||
* lots of memory, use the memory for a bit, and then free the
|
||||
@ -533,7 +534,7 @@ struct dm_hash_node *dm_hash_get_next(struct dm_hash_table *t, struct dm_hash_no
|
||||
|
||||
#endif /* LIB_DEVICE_MAPPER_H */
|
||||
|
||||
/*
|
||||
/*********
|
||||
* selinux
|
||||
*/
|
||||
*********/
|
||||
int dm_set_selinux_context(const char *path, mode_t mode);
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -107,7 +107,7 @@ static char *_uuid;
|
||||
static char *_fields;
|
||||
static char *_target;
|
||||
static char *_command;
|
||||
static struct deptree *_dtree;
|
||||
static struct dm_tree *_dtree;
|
||||
|
||||
/*
|
||||
* Commands
|
||||
@ -1107,14 +1107,14 @@ static void _out_prefix(int depth)
|
||||
/*
|
||||
* Display tree
|
||||
*/
|
||||
static void _display_tree_attributes(struct deptree_node *node)
|
||||
static void _display_tree_attributes(struct dm_tree_node *node)
|
||||
{
|
||||
int attr = 0;
|
||||
const char *uuid;
|
||||
const struct dm_info *info;
|
||||
|
||||
uuid = dm_deptree_node_get_uuid(node);
|
||||
info = dm_deptree_node_get_info(node);
|
||||
uuid = dm_tree_node_get_uuid(node);
|
||||
info = dm_tree_node_get_info(node);
|
||||
|
||||
if (!info->exists)
|
||||
return;
|
||||
@ -1143,7 +1143,7 @@ static void _display_tree_attributes(struct deptree_node *node)
|
||||
_out_char(']');
|
||||
}
|
||||
|
||||
static void _display_tree_node(struct deptree_node *node, unsigned depth,
|
||||
static void _display_tree_node(struct dm_tree_node *node, unsigned depth,
|
||||
unsigned first_child, unsigned last_child,
|
||||
unsigned has_children)
|
||||
{
|
||||
@ -1156,7 +1156,7 @@ static void _display_tree_node(struct deptree_node *node, unsigned depth,
|
||||
if (depth + 2 > MAX_DEPTH)
|
||||
return;
|
||||
|
||||
name = dm_deptree_node_get_name(node);
|
||||
name = dm_tree_node_get_name(node);
|
||||
|
||||
if ((!name || !*name) && !_tree_switches[TR_DEVICE])
|
||||
return;
|
||||
@ -1181,7 +1181,7 @@ static void _display_tree_node(struct deptree_node *node, unsigned depth,
|
||||
if (name)
|
||||
_out_string(name);
|
||||
|
||||
info = dm_deptree_node_get_info(node);
|
||||
info = dm_tree_node_get_info(node);
|
||||
|
||||
if (_tree_switches[TR_DEVICE]) {
|
||||
_out_string(name ? " (" : "(");
|
||||
@ -1210,20 +1210,20 @@ static void _display_tree_node(struct deptree_node *node, unsigned depth,
|
||||
/*
|
||||
* Walk the dependency tree
|
||||
*/
|
||||
static void _tree_walk_children(struct deptree_node *node, unsigned depth)
|
||||
static void _tree_walk_children(struct dm_tree_node *node, unsigned depth)
|
||||
{
|
||||
struct deptree_node *child, *next_child;
|
||||
struct dm_tree_node *child, *next_child;
|
||||
void *handle = NULL;
|
||||
uint32_t inverted = _tree_switches[TR_BOTTOMUP];
|
||||
unsigned first_child = 1;
|
||||
unsigned has_children;
|
||||
|
||||
next_child = dm_deptree_next_child(&handle, node, inverted);
|
||||
next_child = dm_tree_next_child(&handle, node, inverted);
|
||||
|
||||
while ((child = next_child)) {
|
||||
next_child = dm_deptree_next_child(&handle, node, inverted);
|
||||
next_child = dm_tree_next_child(&handle, node, inverted);
|
||||
has_children =
|
||||
dm_deptree_node_num_children(child, inverted) ? 1 : 0;
|
||||
dm_tree_node_num_children(child, inverted) ? 1 : 0;
|
||||
|
||||
_display_tree_node(child, depth, first_child,
|
||||
next_child ? 0 : 1, has_children);
|
||||
@ -1239,7 +1239,7 @@ static int _add_dep(int argc, char **argv, void *data)
|
||||
{
|
||||
struct dm_names *names = (struct dm_names *) data;
|
||||
|
||||
if (!dm_deptree_add_dev(_dtree, MAJOR(names->dev), MINOR(names->dev)))
|
||||
if (!dm_tree_add_dev(_dtree, MAJOR(names->dev), MINOR(names->dev)))
|
||||
return 0;
|
||||
|
||||
return 1;
|
||||
@ -1250,15 +1250,15 @@ static int _add_dep(int argc, char **argv, void *data)
|
||||
*/
|
||||
static int _tree(int argc, char **argv, void *data)
|
||||
{
|
||||
if (!(_dtree = dm_deptree_create()))
|
||||
if (!(_dtree = dm_tree_create()))
|
||||
return 0;
|
||||
|
||||
if (!_process_all(argc, argv, _add_dep))
|
||||
return 0;
|
||||
|
||||
_tree_walk_children(dm_deptree_find_node(_dtree, 0, 0), 0);
|
||||
_tree_walk_children(dm_tree_find_node(_dtree, 0, 0), 0);
|
||||
|
||||
dm_deptree_free(_dtree);
|
||||
dm_tree_free(_dtree);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user