Lines Matching refs:dnode
514 static int _node_clear_table(struct dm_tree_node *dnode) in _node_clear_table() argument
521 if (!(info = &dnode->info)) { in _node_clear_table()
526 if (!(name = dm_tree_node_get_name(dnode))) { in _node_clear_table()
571 struct dm_tree_node *dnode; in dm_tree_add_new_dev() local
577 if (!(dnode = dm_tree_find_node_by_uuid(dtree, uuid))) { in dm_tree_add_new_dev()
594 if (!(dnode = _create_dm_tree_node(dtree, name2, uuid2, &info, in dm_tree_add_new_dev()
599 if (!_add_to_toplevel(dnode) || !_add_to_bottomlevel(dnode)) in dm_tree_add_new_dev()
602 dnode->props.major = major; in dm_tree_add_new_dev()
603 dnode->props.minor = minor; in dm_tree_add_new_dev()
604 dnode->props.new_name = NULL; in dm_tree_add_new_dev()
605 dnode->props.size_changed = 0; in dm_tree_add_new_dev()
606 } else if (strcmp(name, dnode->name)) { in dm_tree_add_new_dev()
608 if (!(dnode->props.new_name = dm_pool_strdup(dtree->mem, name))) { in dm_tree_add_new_dev()
614 dnode->props.read_only = read_only ? 1 : 0; in dm_tree_add_new_dev()
615 dnode->props.read_ahead = DM_READ_AHEAD_AUTO; in dm_tree_add_new_dev()
616 dnode->props.read_ahead_flags = 0; in dm_tree_add_new_dev()
618 if (clear_inactive && !_node_clear_table(dnode)) in dm_tree_add_new_dev()
621 dnode->context = context; in dm_tree_add_new_dev()
622 dnode->udev_flags = 0; in dm_tree_add_new_dev()
624 return dnode; in dm_tree_add_new_dev()
647 void dm_tree_node_set_read_ahead(struct dm_tree_node *dnode, in dm_tree_node_set_read_ahead() argument
651 dnode->props.read_ahead = read_ahead; in dm_tree_node_set_read_ahead()
652 dnode->props.read_ahead_flags = read_ahead_flags; in dm_tree_node_set_read_ahead()
680 int dm_tree_node_size_changed(struct dm_tree_node *dnode) in dm_tree_node_size_changed() argument
682 return dnode->props.size_changed; in dm_tree_node_size_changed()
1007 int dm_tree_deactivate_children(struct dm_tree_node *dnode, in dm_tree_deactivate_children() argument
1012 struct dm_tree_node *child = dnode; in dm_tree_deactivate_children()
1018 while ((child = dm_tree_next_child(&handle, dnode, 0))) { in dm_tree_deactivate_children()
1058 void dm_tree_skip_lockfs(struct dm_tree_node *dnode) in dm_tree_skip_lockfs() argument
1060 dnode->dtree->skip_lockfs = 1; in dm_tree_skip_lockfs()
1063 void dm_tree_use_no_flush_suspend(struct dm_tree_node *dnode) in dm_tree_use_no_flush_suspend() argument
1065 dnode->dtree->no_flush = 1; in dm_tree_use_no_flush_suspend()
1068 int dm_tree_suspend_children(struct dm_tree_node *dnode, in dm_tree_suspend_children() argument
1073 struct dm_tree_node *child = dnode; in dm_tree_suspend_children()
1080 while ((child = dm_tree_next_child(&handle, dnode, 0))) { in dm_tree_suspend_children()
1124 while ((child = dm_tree_next_child(&handle, dnode, 0))) { in dm_tree_suspend_children()
1141 int dm_tree_activate_children(struct dm_tree_node *dnode, in dm_tree_activate_children() argument
1146 struct dm_tree_node *child = dnode; in dm_tree_activate_children()
1153 while ((child = dm_tree_next_child(&handle, dnode, 0))) { in dm_tree_activate_children()
1169 while ((child = dm_tree_next_child(&handle, dnode, 0))) { in dm_tree_activate_children()
1222 static int _create_node(struct dm_tree_node *dnode) in _create_node() argument
1227 log_verbose("Creating %s", dnode->name); in _create_node()
1230 log_error("Create dm_task creation failed for %s", dnode->name); in _create_node()
1234 if (!dm_task_set_name(dmt, dnode->name)) { in _create_node()
1235 log_error("Failed to set device name for %s", dnode->name); in _create_node()
1239 if (!dm_task_set_uuid(dmt, dnode->uuid)) { in _create_node()
1240 log_error("Failed to set uuid for %s", dnode->name); in _create_node()
1244 if (dnode->props.major && in _create_node()
1245 (!dm_task_set_major(dmt, dnode->props.major) || in _create_node()
1246 !dm_task_set_minor(dmt, dnode->props.minor))) { in _create_node()
1247 log_error("Failed to set device number for %s creation.", dnode->name); in _create_node()
1251 if (dnode->props.read_only && !dm_task_set_ro(dmt)) { in _create_node()
1252 log_error("Failed to set read only flag for %s", dnode->name); in _create_node()
1260 r = dm_task_get_info(dmt, &dnode->info); in _create_node()
1547 static int _load_node(struct dm_tree_node *dnode) in _load_node() argument
1554 log_verbose("Loading %s table (%" PRIu32 ":%" PRIu32 ")", dnode->name, in _load_node()
1555 dnode->info.major, dnode->info.minor); in _load_node()
1558 log_error("Reload dm_task creation failed for %s", dnode->name); in _load_node()
1562 if (!dm_task_set_major(dmt, dnode->info.major) || in _load_node()
1563 !dm_task_set_minor(dmt, dnode->info.minor)) { in _load_node()
1564 log_error("Failed to set device number for %s reload.", dnode->name); in _load_node()
1568 if (dnode->props.read_only && !dm_task_set_ro(dmt)) { in _load_node()
1569 log_error("Failed to set read only flag for %s", dnode->name); in _load_node()
1576 dm_list_iterate_items(seg, &dnode->props.segs) in _load_node()
1577 if (!_emit_segment(dmt, dnode->info.major, dnode->info.minor, in _load_node()
1585 r = dm_task_get_info(dmt, &dnode->info); in _load_node()
1586 if (r && !dnode->info.inactive_table) in _load_node()
1588 dnode->name); in _load_node()
1590 if ((dnode->props.size_changed = in _load_node()
1595 seg_start, dnode->name); in _load_node()
1598 dnode->props.segment_count = 0; in _load_node()
1606 int dm_tree_preload_children(struct dm_tree_node *dnode, in dm_tree_preload_children() argument
1615 while ((child = dm_tree_next_child(&handle, dnode, 0))) { in dm_tree_preload_children()
1645 dnode->props.size_changed = 1; in dm_tree_preload_children()
1675 int dm_tree_children_use_uuid(struct dm_tree_node *dnode, in dm_tree_children_use_uuid() argument
1680 struct dm_tree_node *child = dnode; in dm_tree_children_use_uuid()
1683 while ((child = dm_tree_next_child(&handle, dnode, 0))) { in dm_tree_children_use_uuid()
1702 static struct load_segment *_add_segment(struct dm_tree_node *dnode, unsigned type, uint64_t size) in _add_segment() argument
1706 if (!(seg = dm_pool_zalloc(dnode->dtree->mem, sizeof(*seg)))) { in _add_segment()
1721 dm_list_add(&dnode->props.segs, &seg->list); in _add_segment()
1722 dnode->props.segment_count++; in _add_segment()
1727 int dm_tree_node_add_snapshot_origin_target(struct dm_tree_node *dnode, in dm_tree_node_add_snapshot_origin_target() argument
1734 if (!(seg = _add_segment(dnode, SEG_SNAPSHOT_ORIGIN, size))) in dm_tree_node_add_snapshot_origin_target()
1737 if (!(origin_node = dm_tree_find_node_by_uuid(dnode->dtree, origin_uuid))) { in dm_tree_node_add_snapshot_origin_target()
1743 if (!_link_tree_nodes(dnode, origin_node)) in dm_tree_node_add_snapshot_origin_target()
1747 dnode->activation_priority = 1; in dm_tree_node_add_snapshot_origin_target()