Lines Matching refs:parent

21 static DEFINE_SPINLOCK(kernfs_rename_lock);	/* kn->parent and ->name */
55 return strlcpy(buf, kn->parent ? kn->name : "/", buflen);
63 while (to->parent && to != from) {
65 to = to->parent;
83 a = a->parent;
87 b = b->parent;
93 b = b->parent;
94 a = a->parent;
167 kn = kn->parent;
204 * @from: parent kernfs_node relative to which we need to build the path
210 * be on the same kernfs-root. If @from is not parent of @to, then a relative
281 * kernfs_get_parent - determine the parent node and pin it
284 * Determines @kn's parent, pins and returns it. This function can be
289 struct kernfs_node *parent;
293 parent = kn->parent;
294 kernfs_get(parent);
297 return parent;
348 * @kn->parent->dir.children.
358 struct rb_node **node = &kn->parent->dir.children.rb_node;
359 struct rb_node *parent = NULL;
366 parent = *node;
377 rb_link_node(&kn->rb, parent, node);
378 rb_insert_color(&kn->rb, &kn->parent->dir.children);
382 kn->parent->dir.subdirs++;
392 * kn->parent->dir.children. Returns %true if @kn was actually
404 kn->parent->dir.subdirs--;
406 rb_erase(&kn->rb, &kn->parent->dir.children);
516 struct kernfs_node *parent;
525 * kn->parent won't change beneath us.
527 parent = kn->parent;
531 parent ? parent->name : "", kn->name, atomic_read(&kn->active));
547 kn = parent;
578 if (kernfs_dentry_node(dentry->d_parent) != kn->parent)
586 if (kn->parent && kernfs_ns_enabled(kn->parent) &&
622 struct kernfs_node *parent,
673 if (parent) {
674 ret = security_kernfs_init_security(parent, kn);
692 struct kernfs_node *kernfs_new_node(struct kernfs_node *parent,
699 if (parent->mode & S_ISGID) {
704 if (parent->iattr)
705 gid = parent->iattr->ia_gid;
711 kn = __kernfs_new_node(kernfs_root(parent), parent,
714 kernfs_get(parent);
715 kn->parent = parent;
771 * kernfs_add_one - add kernfs_node to parent without warning
774 * The caller must already have initialized @kn->parent. This
775 * function increments nlink of the parent's inode if @kn is a
776 * directory and link into the children list of the parent.
784 struct kernfs_node *parent = kn->parent;
792 has_ns = kernfs_ns_enabled(parent);
794 has_ns ? "required" : "invalid", parent->name, kn->name))
797 if (kernfs_type(parent) != KERNFS_DIR)
801 if (parent->flags & KERNFS_EMPTY_DIR)
804 if ((parent->flags & KERNFS_ACTIVATED) && !kernfs_active(parent))
813 /* Update timestamps on the parent */
814 ps_iattr = parent->iattr;
840 * @parent: kernfs_node to search under
844 * Look for kernfs_node with name @name under @parent. Returns pointer to
847 static struct kernfs_node *kernfs_find_ns(struct kernfs_node *parent,
851 struct rb_node *node = parent->dir.children.rb_node;
852 bool has_ns = kernfs_ns_enabled(parent);
859 has_ns ? "required" : "invalid", parent->name, name);
880 static struct kernfs_node *kernfs_walk_ns(struct kernfs_node *parent,
900 while ((name = strsep(&p, "/")) && parent) {
903 parent = kernfs_find_ns(parent, name, ns);
908 return parent;
913 * @parent: kernfs_node to search under
917 * Look for kernfs_node with name @name under @parent and get a reference
921 struct kernfs_node *kernfs_find_and_get_ns(struct kernfs_node *parent,
927 kn = kernfs_find_ns(parent, name, ns);
937 * @parent: kernfs_node to search under
941 * Look for kernfs_node with path @path under @parent and get a reference
945 struct kernfs_node *kernfs_walk_and_get_ns(struct kernfs_node *parent,
951 kn = kernfs_walk_ns(parent, path, ns);
1028 * @parent: parent in which to create a new directory
1038 struct kernfs_node *kernfs_create_dir_ns(struct kernfs_node *parent,
1047 kn = kernfs_new_node(parent, name, mode | S_IFDIR,
1052 kn->dir.root = parent->dir.root;
1067 * @parent: parent in which to create a new directory
1072 struct kernfs_node *kernfs_create_empty_dir(struct kernfs_node *parent,
1079 kn = kernfs_new_node(parent, name, S_IRUGO|S_IXUGO|S_IFDIR,
1085 kn->dir.root = parent->dir.root;
1103 struct kernfs_node *parent = dir->i_private;
1110 if (kernfs_ns_enabled(parent))
1113 kn = kernfs_find_ns(parent, dentry->d_name.name, ns);
1138 struct kernfs_node *parent = dir->i_private;
1139 struct kernfs_syscall_ops *scops = kernfs_root(parent)->syscall_ops;
1145 if (!kernfs_get_active(parent))
1148 ret = scops->mkdir(parent, dentry->d_name.name, mode);
1150 kernfs_put_active(parent);
1265 /* no sibling left, visit parent */
1266 return pos->parent;
1293 WARN_ON_ONCE(pos->parent && RB_EMPTY_NODE(&pos->rb));
1314 if (!kn || (kn->parent && RB_EMPTY_NODE(&kn->rb)))
1352 if (!pos->parent || kernfs_unlink_sibling(pos)) {
1354 pos->parent ? pos->parent->iattr : NULL;
1356 /* update timestamps on the parent */
1515 * @parent: parent of the target
1519 * Look for the kernfs_node with @name and @ns under @parent and remove it.
1522 int kernfs_remove_by_name_ns(struct kernfs_node *parent, const char *name,
1527 if (!parent) {
1535 kn = kernfs_find_ns(parent, name, ns);
1553 * @new_parent: new parent to put @sd under
1565 if (!kn->parent)
1576 if ((kn->parent == new_parent) && (kn->ns == new_ns) &&
1600 /* rename_lock protects ->parent and ->name accessors */
1603 old_parent = kn->parent;
1604 kn->parent = new_parent;
1639 struct kernfs_node *parent, loff_t hash, struct kernfs_node *pos)
1643 pos->parent == parent && hash == pos->hash;
1649 struct rb_node *node = parent->dir.children.rb_node;
1673 struct kernfs_node *parent, ino_t ino, struct kernfs_node *pos)
1675 pos = kernfs_dir_pos(ns, parent, ino, pos);
1691 struct kernfs_node *parent = kernfs_dentry_node(dentry);
1699 if (kernfs_ns_enabled(parent))
1702 for (pos = kernfs_dir_pos(ns, parent, ctx->pos, pos);
1704 pos = kernfs_dir_next_pos(ns, parent, ctx->pos, pos)) {