Lines Matching refs:dentry
55 static char *get_dname(struct dentry *dentry) in get_dname() argument
59 int len = dentry->d_name.len; in get_dname()
61 dname = dentry->d_name.name; in get_dname()
71 struct inode *inode, struct dentry *dentry, in tracefs_syscall_mkdir() argument
77 name = get_dname(dentry); in tracefs_syscall_mkdir()
95 static int tracefs_syscall_rmdir(struct inode *inode, struct dentry *dentry) in tracefs_syscall_rmdir() argument
100 name = get_dname(dentry); in tracefs_syscall_rmdir()
112 inode_unlock(d_inode(dentry)); in tracefs_syscall_rmdir()
117 inode_lock(d_inode(dentry)); in tracefs_syscall_rmdir()
166 static void change_gid(struct dentry *dentry, kgid_t gid) in change_gid() argument
168 if (!dentry->d_inode) in change_gid()
170 dentry->d_inode->i_gid = gid; in change_gid()
180 static void set_gid(struct dentry *parent, kgid_t gid) in set_gid()
182 struct dentry *this_parent; in set_gid()
194 struct dentry *dentry = list_entry(tmp, struct dentry, d_child); in set_gid() local
197 spin_lock_nested(&dentry->d_lock, DENTRY_D_LOCK_NESTED); in set_gid()
199 change_gid(dentry, gid); in set_gid()
201 if (!list_empty(&dentry->d_subdirs)) { in set_gid()
203 spin_release(&dentry->d_lock.dep_map, _RET_IP_); in set_gid()
204 this_parent = dentry; in set_gid()
208 spin_unlock(&dentry->d_lock); in set_gid()
216 struct dentry *child = this_parent; in set_gid()
227 child = list_entry(next, struct dentry, d_child); in set_gid()
331 static int tracefs_show_options(struct seq_file *m, struct dentry *root) in tracefs_show_options()
387 static struct dentry *trace_mount(struct file_system_type *fs_type, in trace_mount()
402 static struct dentry *start_creating(const char *name, struct dentry *parent) in start_creating()
404 struct dentry *dentry; in start_creating() local
424 dentry = ERR_PTR(-ENOENT); in start_creating()
426 dentry = lookup_one_len(name, parent, strlen(name)); in start_creating()
427 if (!IS_ERR(dentry) && d_inode(dentry)) { in start_creating()
428 dput(dentry); in start_creating()
429 dentry = ERR_PTR(-EEXIST); in start_creating()
432 if (IS_ERR(dentry)) { in start_creating()
437 return dentry; in start_creating()
440 static struct dentry *failed_creating(struct dentry *dentry) in failed_creating() argument
442 inode_unlock(d_inode(dentry->d_parent)); in failed_creating()
443 dput(dentry); in failed_creating()
448 static struct dentry *end_creating(struct dentry *dentry) in end_creating() argument
450 inode_unlock(d_inode(dentry->d_parent)); in end_creating()
451 return dentry; in end_creating()
480 struct dentry *tracefs_create_file(const char *name, umode_t mode, in tracefs_create_file()
481 struct dentry *parent, void *data, in tracefs_create_file()
484 struct dentry *dentry; in tracefs_create_file() local
493 dentry = start_creating(name, parent); in tracefs_create_file()
495 if (IS_ERR(dentry)) in tracefs_create_file()
498 inode = tracefs_get_inode(dentry->d_sb); in tracefs_create_file()
500 return failed_creating(dentry); in tracefs_create_file()
505 inode->i_uid = d_inode(dentry->d_parent)->i_uid; in tracefs_create_file()
506 inode->i_gid = d_inode(dentry->d_parent)->i_gid; in tracefs_create_file()
507 d_instantiate(dentry, inode); in tracefs_create_file()
508 fsnotify_create(d_inode(dentry->d_parent), dentry); in tracefs_create_file()
509 return end_creating(dentry); in tracefs_create_file()
512 static struct dentry *__create_dir(const char *name, struct dentry *parent, in __create_dir()
515 struct dentry *dentry = start_creating(name, parent); in __create_dir() local
518 if (IS_ERR(dentry)) in __create_dir()
521 inode = tracefs_get_inode(dentry->d_sb); in __create_dir()
523 return failed_creating(dentry); in __create_dir()
529 inode->i_uid = d_inode(dentry->d_parent)->i_uid; in __create_dir()
530 inode->i_gid = d_inode(dentry->d_parent)->i_gid; in __create_dir()
534 d_instantiate(dentry, inode); in __create_dir()
535 inc_nlink(d_inode(dentry->d_parent)); in __create_dir()
536 fsnotify_mkdir(d_inode(dentry->d_parent), dentry); in __create_dir()
537 return end_creating(dentry); in __create_dir()
557 struct dentry *tracefs_create_dir(const char *name, struct dentry *parent) in tracefs_create_dir()
579 __init struct dentry *tracefs_create_instance_dir(const char *name, in tracefs_create_instance_dir()
580 struct dentry *parent, in tracefs_create_instance_dir()
584 struct dentry *dentry; in tracefs_create_instance_dir() local
590 dentry = __create_dir(name, parent, &tracefs_dir_inode_operations); in tracefs_create_instance_dir()
591 if (!dentry) in tracefs_create_instance_dir()
597 return dentry; in tracefs_create_instance_dir()
600 static void remove_one(struct dentry *victim) in remove_one()
613 void tracefs_remove(struct dentry *dentry) in tracefs_remove() argument
615 if (IS_ERR_OR_NULL(dentry)) in tracefs_remove()
619 simple_recursive_removal(dentry, remove_one); in tracefs_remove()