ns_tree_node
struct ns_tree_node ns_unified_node;
struct ns_tree_node ns_tree_node;
struct ns_tree_node ns_owner_node;
.ns_tree_node.ns_list_entry = LIST_HEAD_INIT(nsname.ns.ns_tree_node.ns_list_entry), \
void ns_tree_node_init(struct ns_tree_node *node);
bool ns_tree_node_empty(const struct ns_tree_node *node);
struct rb_node *ns_tree_node_add(struct ns_tree_node *node,
void ns_tree_node_del(struct ns_tree_node *node, struct ns_tree_root *root);
#define ns_tree_active(__ns) (!RB_EMPTY_NODE(&to_ns_common(__ns)->ns_tree_node.ns_node))
ns_tree_node_init(&ns->ns_tree_node);
struct rb_node *ns_tree_node_add(struct ns_tree_node *node,
struct ns_tree_node *prev_node;
prev_node = rb_entry(prev, struct ns_tree_node, ns_node);
void ns_tree_node_del(struct ns_tree_node *node, struct ns_tree_root *root)
return rb_entry(node, struct ns_common, ns_tree_node.ns_node);
node = ns_tree_node_add(&ns->ns_tree_node, ns_tree, ns_cmp);
VFS_WARN_ON_ONCE(ns_tree_node_empty(&ns->ns_tree_node));
VFS_WARN_ON_ONCE(list_empty(&ns->ns_tree_node.ns_list_entry));
ns_tree_node_del(&ns->ns_tree_node, ns_tree);
list = rcu_dereference(list_bidir_prev_rcu(&ns->ns_tree_node.ns_list_entry));
list = rcu_dereference(list_next_rcu(&ns->ns_tree_node.ns_list_entry));
return list_entry_rcu(list, struct ns_common, ns_tree_node.ns_list_entry);
return list_entry_rcu(head->next, struct ns_common, ns_tree_node.ns_list_entry);
return list_entry_rcu(ns->ns_tree_node.ns_list_entry.next, struct ns_common, ns_tree_node.ns_list_entry);
return &ns->ns_tree_node.ns_list_entry == head;
void ns_tree_node_init(struct ns_tree_node *node)
bool ns_tree_node_empty(const struct ns_tree_node *node)