Lines Matching refs:parent

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