Lines Matching refs:dir
33 static void set_empty_dir(struct ctl_dir *dir) in set_empty_dir() argument
35 dir->header.ctl_table[0].child = sysctl_mount_point; in set_empty_dir()
38 static void clear_empty_dir(struct ctl_dir *dir) in clear_empty_dir() argument
41 dir->header.ctl_table[0].child = NULL; in clear_empty_dir()
61 .default_set.dir.header = {
79 static void sysctl_print_dir(struct ctl_dir *dir) in sysctl_print_dir() argument
81 if (dir->header.parent) in sysctl_print_dir()
82 sysctl_print_dir(dir->header.parent); in sysctl_print_dir()
83 pr_cont("%s/", dir->header.ctl_table[0].procname); in sysctl_print_dir()
103 struct ctl_dir *dir, const char *name, int namelen) in find_entry() argument
107 struct rb_node *node = dir->root.rb_node; in find_entry()
207 static int insert_header(struct ctl_dir *dir, struct ctl_table_header *header) in insert_header() argument
213 if (is_empty_dir(&dir->header)) in insert_header()
218 if (!RB_EMPTY_ROOT(&dir->root)) in insert_header()
220 set_empty_dir(dir); in insert_header()
223 dir->header.nreg++; in insert_header()
224 header->parent = dir; in insert_header()
239 clear_empty_dir(dir); in insert_header()
241 drop_sysctl_table(&dir->header); in insert_header()
331 struct ctl_dir *dir, in lookup_entry() argument
338 entry = find_entry(&head, dir, name, namelen); in lookup_entry()
359 static void first_entry(struct ctl_dir *dir, in first_entry() argument
367 ctl_node = first_usable_entry(rb_first(&dir->root)); in first_entry()
468 head = &sysctl_table_root.default_set.dir.header; in grab_header()
472 static struct dentry *proc_sys_lookup(struct inode *dir, struct dentry *dentry, in proc_sys_lookup() argument
475 struct ctl_table_header *head = grab_header(dir); in proc_sys_lookup()
501 inode = proc_sys_make_inode(dir->i_sb, h ? h : head, p); in proc_sys_lookup()
618 struct dentry *child, *dir = file->f_path.dentry; in proc_sys_fill_cache() local
628 child = d_lookup(dir, &qname); in proc_sys_fill_cache()
630 child = d_alloc(dir, &qname); in proc_sys_fill_cache()
632 inode = proc_sys_make_inode(dir->d_sb, head, table); in proc_sys_fill_cache()
862 static struct ctl_dir *find_subdir(struct ctl_dir *dir, in find_subdir() argument
868 entry = find_entry(&head, dir, name, namelen); in find_subdir()
897 init_header(&new->header, set->dir.header.root, set, node, table); in new_dir()
914 static struct ctl_dir *get_subdir(struct ctl_dir *dir, in get_subdir() argument
917 struct ctl_table_set *set = dir->header.set; in get_subdir()
922 subdir = find_subdir(dir, name, namelen); in get_subdir()
936 subdir = find_subdir(dir, name, namelen); in get_subdir()
943 err = insert_header(dir, &new->header); in get_subdir()
953 sysctl_print_dir(dir); in get_subdir()
957 drop_sysctl_table(&dir->header); in get_subdir()
964 static struct ctl_dir *xlate_dir(struct ctl_table_set *set, struct ctl_dir *dir) in xlate_dir() argument
968 if (!dir->header.parent) in xlate_dir()
969 return &set->dir; in xlate_dir()
970 parent = xlate_dir(set, dir->header.parent); in xlate_dir()
973 procname = dir->header.ctl_table[0].procname; in xlate_dir()
984 struct ctl_dir *dir; in sysctl_follow_link() local
991 dir = xlate_dir(set, (*phead)->parent); in sysctl_follow_link()
992 if (IS_ERR(dir)) in sysctl_follow_link()
993 ret = PTR_ERR(dir); in sysctl_follow_link()
997 entry = find_entry(&head, dir, procname, strlen(procname)); in sysctl_follow_link()
1057 static struct ctl_table_header *new_links(struct ctl_dir *dir, struct ctl_table *table, in new_links() argument
1094 init_header(links, dir->header.root, dir->header.set, node, link_table); in new_links()
1100 static bool get_links(struct ctl_dir *dir, in get_links() argument
1109 link = find_entry(&head, dir, procname, strlen(procname)); in get_links()
1122 link = find_entry(&head, dir, procname, strlen(procname)); in get_links()
1215 struct ctl_table_root *root = set->dir.header.root; in __register_sysctl_table()
1218 struct ctl_dir *dir; in __register_sysctl_table() local
1237 dir = &set->dir; in __register_sysctl_table()
1239 dir->header.nreg++; in __register_sysctl_table()
1255 dir = get_subdir(dir, name, namelen); in __register_sysctl_table()
1256 if (IS_ERR(dir)) in __register_sysctl_table()
1261 if (insert_header(dir, header)) in __register_sysctl_table()
1264 drop_sysctl_table(&dir->header); in __register_sysctl_table()
1270 drop_sysctl_table(&dir->header); in __register_sysctl_table()
1601 init_header(&set->dir.header, root, set, NULL, root_table); in setup_sysctl_set()
1606 WARN_ON(!RB_EMPTY_ROOT(&set->dir.root)); in retire_sysctl_set()