Lines Matching full:parent
102 pfs_add_node(struct pfs_node *parent, struct pfs_node *pn) in pfs_add_node() argument
108 KASSERT(parent != NULL, in pfs_add_node()
109 ("%s(): parent is NULL", __func__)); in pfs_add_node()
111 ("%s(): node already has a parent", __func__)); in pfs_add_node()
112 KASSERT(parent->pn_info != NULL, in pfs_add_node()
113 ("%s(): parent has no pn_info", __func__)); in pfs_add_node()
114 KASSERT(parent->pn_type == pfstype_dir || in pfs_add_node()
115 parent->pn_type == pfstype_procdir || in pfs_add_node()
116 parent->pn_type == pfstype_root, in pfs_add_node()
117 ("%s(): parent is not a directory", __func__)); in pfs_add_node()
122 for (iter = parent; iter != NULL; iter = iter->pn_parent) in pfs_add_node()
125 for (iter = parent->pn_nodes; iter != NULL; iter = iter->pn_next) { in pfs_add_node()
134 pn->pn_parent = parent; in pfs_add_node()
137 pfs_lock(parent); in pfs_add_node()
138 if ((parent->pn_flags & PFS_PROCDEP) != 0) in pfs_add_node()
140 if (parent->pn_nodes == NULL) { in pfs_add_node()
141 KASSERT(parent->pn_last_node == NULL, in pfs_add_node()
143 parent->pn_nodes = pn; in pfs_add_node()
144 parent->pn_last_node = pn; in pfs_add_node()
146 KASSERT(parent->pn_last_node != NULL, in pfs_add_node()
148 KASSERT(parent->pn_last_node->pn_next == NULL, in pfs_add_node()
150 parent->pn_last_node->pn_next = pn; in pfs_add_node()
151 parent->pn_last_node = pn; in pfs_add_node()
153 pfs_unlock(parent); in pfs_add_node()
162 struct pfs_node *node, *parent = pn->pn_parent; in pfs_detach_node() local
165 KASSERT(parent != NULL, ("%s(): node has no parent", __func__)); in pfs_detach_node()
166 KASSERT(parent->pn_info == pn->pn_info, in pfs_detach_node()
167 ("%s(): parent has different pn_info", __func__)); in pfs_detach_node()
169 pfs_lock(parent); in pfs_detach_node()
170 if (pn == parent->pn_last_node) { in pfs_detach_node()
172 parent->pn_last_node = NULL; in pfs_detach_node()
174 for (node = parent->pn_nodes; in pfs_detach_node()
177 parent->pn_last_node = node; in pfs_detach_node()
180 iter = &parent->pn_nodes; in pfs_detach_node()
189 pfs_unlock(parent); in pfs_detach_node()
196 pfs_fixup_dir_flags(struct pfs_node *parent, int flags) in pfs_fixup_dir_flags() argument
200 dot = pfs_alloc_node_flags(parent->pn_info, ".", pfstype_this, flags); in pfs_fixup_dir_flags()
203 dotdot = pfs_alloc_node_flags(parent->pn_info, "..", pfstype_parent, flags); in pfs_fixup_dir_flags()
208 pfs_add_node(parent, dot); in pfs_fixup_dir_flags()
209 pfs_add_node(parent, dotdot); in pfs_fixup_dir_flags()
214 pfs_fixup_dir(struct pfs_node *parent) in pfs_fixup_dir() argument
217 pfs_fixup_dir_flags(parent, 0); in pfs_fixup_dir()
224 pfs_create_dir(struct pfs_node *parent, const char *name, in pfs_create_dir() argument
231 pn = pfs_alloc_node_flags(parent->pn_info, name, in pfs_create_dir()
239 pfs_add_node(parent, pn); in pfs_create_dir()
252 pfs_create_file(struct pfs_node *parent, const char *name, pfs_fill_t fill, in pfs_create_file() argument
258 pn = pfs_alloc_node_flags(parent->pn_info, name, pfstype_file, flags); in pfs_create_file()
266 pfs_add_node(parent, pn); in pfs_create_file()
275 pfs_create_link(struct pfs_node *parent, const char *name, pfs_fill_t fill, in pfs_create_link() argument
281 pn = pfs_alloc_node_flags(parent->pn_info, name, pfstype_symlink, flags); in pfs_create_link()
289 pfs_add_node(parent, pn); in pfs_create_link()
298 pfs_find_node(struct pfs_node *parent, const char *name) in pfs_find_node() argument
302 pfs_lock(parent); in pfs_find_node()
303 for (pn = parent->pn_nodes; pn != NULL; pn = pn->pn_next) in pfs_find_node()
306 pfs_unlock(parent); in pfs_find_node()
312 * has a parent, the parent's mutex must be held.