Lines Matching refs:parent
296 struct kernfs_node *parent; in kernfs_get_parent() local
302 parent = kernfs_parent(kn); in kernfs_get_parent()
303 kernfs_get(parent); in kernfs_get_parent()
306 return parent; in kernfs_get_parent()
367 struct rb_node *parent = NULL; in kernfs_link_sibling() local
379 parent = *node; in kernfs_link_sibling()
390 rb_link_node(&kn->rb, parent, node); in kernfs_link_sibling()
566 struct kernfs_node *parent; in kernfs_put() local
577 parent = kernfs_parent(kn); in kernfs_put()
581 parent ? rcu_dereference(parent->name) : "", in kernfs_put()
593 kn = parent; in kernfs_put()
624 struct kernfs_node *parent, in __kernfs_new_node() argument
675 if (parent) { in __kernfs_new_node()
676 ret = security_kernfs_init_security(parent, kn); in __kernfs_new_node()
694 struct kernfs_node *kernfs_new_node(struct kernfs_node *parent, in kernfs_new_node() argument
701 if (parent->mode & S_ISGID) { in kernfs_new_node()
706 if (parent->iattr) in kernfs_new_node()
707 gid = parent->iattr->ia_gid; in kernfs_new_node()
713 kn = __kernfs_new_node(kernfs_root(parent), parent, in kernfs_new_node()
716 kernfs_get(parent); in kernfs_new_node()
717 rcu_assign_pointer(kn->__parent, parent); in kernfs_new_node()
787 struct kernfs_node *parent; in kernfs_add_one() local
792 parent = kernfs_parent(kn); in kernfs_add_one()
795 has_ns = kernfs_ns_enabled(parent); in kernfs_add_one()
798 kernfs_rcu_name(parent), kernfs_rcu_name(kn))) in kernfs_add_one()
801 if (kernfs_type(parent) != KERNFS_DIR) in kernfs_add_one()
805 if (parent->flags & (KERNFS_REMOVING | KERNFS_EMPTY_DIR)) in kernfs_add_one()
817 ps_iattr = parent->iattr; in kernfs_add_one()
852 static struct kernfs_node *kernfs_find_ns(struct kernfs_node *parent, in kernfs_find_ns() argument
856 struct rb_node *node = parent->dir.children.rb_node; in kernfs_find_ns()
857 bool has_ns = kernfs_ns_enabled(parent); in kernfs_find_ns()
860 lockdep_assert_held(&kernfs_root(parent)->kernfs_rwsem); in kernfs_find_ns()
864 has_ns ? "required" : "invalid", kernfs_rcu_name(parent), name); in kernfs_find_ns()
885 static struct kernfs_node *kernfs_walk_ns(struct kernfs_node *parent, in kernfs_walk_ns() argument
892 lockdep_assert_held_read(&kernfs_root(parent)->kernfs_rwsem); in kernfs_walk_ns()
905 while ((name = strsep(&p, "/")) && parent) { in kernfs_walk_ns()
908 parent = kernfs_find_ns(parent, name, ns); in kernfs_walk_ns()
913 return parent; in kernfs_walk_ns()
927 struct kernfs_node *kernfs_find_and_get_ns(struct kernfs_node *parent, in kernfs_find_and_get_ns() argument
931 struct kernfs_root *root = kernfs_root(parent); in kernfs_find_and_get_ns()
934 kn = kernfs_find_ns(parent, name, ns); in kernfs_find_and_get_ns()
953 struct kernfs_node *kernfs_walk_and_get_ns(struct kernfs_node *parent, in kernfs_walk_and_get_ns() argument
957 struct kernfs_root *root = kernfs_root(parent); in kernfs_walk_and_get_ns()
960 kn = kernfs_walk_ns(parent, path, ns); in kernfs_walk_and_get_ns()
1074 struct kernfs_node *kernfs_create_dir_ns(struct kernfs_node *parent, in kernfs_create_dir_ns() argument
1083 kn = kernfs_new_node(parent, name, mode | S_IFDIR, in kernfs_create_dir_ns()
1088 kn->dir.root = parent->dir.root; in kernfs_create_dir_ns()
1108 struct kernfs_node *kernfs_create_empty_dir(struct kernfs_node *parent, in kernfs_create_empty_dir() argument
1115 kn = kernfs_new_node(parent, name, S_IRUGO|S_IXUGO|S_IFDIR, in kernfs_create_empty_dir()
1121 kn->dir.root = parent->dir.root; in kernfs_create_empty_dir()
1137 struct kernfs_node *kn, *parent; in kernfs_dop_revalidate() local
1163 parent = kernfs_dentry_node(dentry->d_parent); in kernfs_dop_revalidate()
1164 if (parent) { in kernfs_dop_revalidate()
1165 if (kernfs_dir_changed(parent, dentry)) { in kernfs_dop_revalidate()
1186 parent = kernfs_parent(kn); in kernfs_dop_revalidate()
1188 if (kernfs_dentry_node(dentry->d_parent) != parent) in kernfs_dop_revalidate()
1196 if (parent && kernfs_ns_enabled(parent) && in kernfs_dop_revalidate()
1215 struct kernfs_node *parent = dir->i_private; in kernfs_iop_lookup() local
1221 root = kernfs_root(parent); in kernfs_iop_lookup()
1223 if (kernfs_ns_enabled(parent)) in kernfs_iop_lookup()
1226 kn = kernfs_find_ns(parent, dentry->d_name.name, ns); in kernfs_iop_lookup()
1247 kernfs_set_rev(parent, dentry); in kernfs_iop_lookup()
1258 struct kernfs_node *parent = dir->i_private; in kernfs_iop_mkdir() local
1259 struct kernfs_syscall_ops *scops = kernfs_root(parent)->syscall_ops; in kernfs_iop_mkdir()
1265 if (!kernfs_get_active(parent)) in kernfs_iop_mkdir()
1268 ret = scops->mkdir(parent, dentry->d_name.name, mode); in kernfs_iop_mkdir()
1270 kernfs_put_active(parent); in kernfs_iop_mkdir()
1471 struct kernfs_node *pos, *parent; in __kernfs_remove() local
1509 parent = kernfs_parent(pos); in __kernfs_remove()
1514 if (!parent || kernfs_unlink_sibling(pos)) { in __kernfs_remove()
1516 parent ? parent->iattr : NULL; in __kernfs_remove()
1699 int kernfs_remove_by_name_ns(struct kernfs_node *parent, const char *name, in kernfs_remove_by_name_ns() argument
1705 if (!parent) { in kernfs_remove_by_name_ns()
1711 root = kernfs_root(parent); in kernfs_remove_by_name_ns()
1714 kn = kernfs_find_ns(parent, name, ns); in kernfs_remove_by_name_ns()
1831 struct kernfs_node *parent, loff_t hash, struct kernfs_node *pos) in kernfs_dir_pos() argument
1835 rcu_access_pointer(pos->__parent) == parent && in kernfs_dir_pos()
1842 struct rb_node *node = parent->dir.children.rb_node; in kernfs_dir_pos()
1866 struct kernfs_node *parent, ino_t ino, struct kernfs_node *pos) in kernfs_dir_next_pos() argument
1868 pos = kernfs_dir_pos(ns, parent, ino, pos); in kernfs_dir_next_pos()
1884 struct kernfs_node *parent = kernfs_dentry_node(dentry); in kernfs_fop_readdir() local
1892 root = kernfs_root(parent); in kernfs_fop_readdir()
1895 if (kernfs_ns_enabled(parent)) in kernfs_fop_readdir()
1898 for (pos = kernfs_dir_pos(ns, parent, ctx->pos, pos); in kernfs_fop_readdir()
1900 pos = kernfs_dir_next_pos(ns, parent, ctx->pos, pos)) { in kernfs_fop_readdir()