Lines Matching refs:dentry

75 static char *get_dname(struct dentry *dentry)  in get_dname()  argument
79 int len = dentry->d_name.len; in get_dname()
81 dname = dentry->d_name.name; in get_dname()
91 struct inode *inode, struct dentry *dentry, in tracefs_syscall_mkdir() argument
97 name = get_dname(dentry); in tracefs_syscall_mkdir()
115 static int tracefs_syscall_rmdir(struct inode *inode, struct dentry *dentry) in tracefs_syscall_rmdir() argument
120 name = get_dname(dentry); in tracefs_syscall_rmdir()
132 inode_unlock(d_inode(dentry)); in tracefs_syscall_rmdir()
137 inode_lock(d_inode(dentry)); in tracefs_syscall_rmdir()
186 static void change_gid(struct dentry *dentry, kgid_t gid) in change_gid() argument
188 if (!dentry->d_inode) in change_gid()
190 dentry->d_inode->i_gid = gid; in change_gid()
200 static void set_gid(struct dentry *parent, kgid_t gid) in set_gid()
202 struct dentry *this_parent; in set_gid()
214 struct dentry *dentry = list_entry(tmp, struct dentry, d_child); in set_gid() local
217 spin_lock_nested(&dentry->d_lock, DENTRY_D_LOCK_NESTED); in set_gid()
219 change_gid(dentry, gid); in set_gid()
221 if (!list_empty(&dentry->d_subdirs)) { in set_gid()
223 spin_release(&dentry->d_lock.dep_map, _RET_IP_); in set_gid()
224 this_parent = dentry; in set_gid()
228 spin_unlock(&dentry->d_lock); in set_gid()
236 struct dentry *child = this_parent; in set_gid()
247 child = list_entry(next, struct dentry, d_child); in set_gid()
353 static int tracefs_show_options(struct seq_file *m, struct dentry *root) in tracefs_show_options()
379 static void tracefs_dentry_iput(struct dentry *dentry, struct inode *inode) in tracefs_dentry_iput() argument
383 if (!dentry || !inode) in tracefs_dentry_iput()
388 eventfs_set_ef_status_free(ti, dentry); in tracefs_dentry_iput()
430 static struct dentry *trace_mount(struct file_system_type *fs_type, in trace_mount()
445 struct dentry *tracefs_start_creating(const char *name, struct dentry *parent) in tracefs_start_creating()
447 struct dentry *dentry; in tracefs_start_creating() local
467 dentry = ERR_PTR(-ENOENT); in tracefs_start_creating()
469 dentry = lookup_one_len(name, parent, strlen(name)); in tracefs_start_creating()
470 if (!IS_ERR(dentry) && d_inode(dentry)) { in tracefs_start_creating()
471 dput(dentry); in tracefs_start_creating()
472 dentry = ERR_PTR(-EEXIST); in tracefs_start_creating()
475 if (IS_ERR(dentry)) { in tracefs_start_creating()
480 return dentry; in tracefs_start_creating()
483 struct dentry *tracefs_failed_creating(struct dentry *dentry) in tracefs_failed_creating() argument
485 inode_unlock(d_inode(dentry->d_parent)); in tracefs_failed_creating()
486 dput(dentry); in tracefs_failed_creating()
491 struct dentry *tracefs_end_creating(struct dentry *dentry) in tracefs_end_creating() argument
493 inode_unlock(d_inode(dentry->d_parent)); in tracefs_end_creating()
494 return dentry; in tracefs_end_creating()
507 struct dentry *eventfs_start_creating(const char *name, struct dentry *parent) in eventfs_start_creating()
509 struct dentry *dentry; in eventfs_start_creating() local
527 dentry = ERR_PTR(-ENOENT); in eventfs_start_creating()
529 dentry = lookup_one_len(name, parent, strlen(name)); in eventfs_start_creating()
531 if (!IS_ERR(dentry) && dentry->d_inode) { in eventfs_start_creating()
532 dput(dentry); in eventfs_start_creating()
533 dentry = ERR_PTR(-EEXIST); in eventfs_start_creating()
536 if (IS_ERR(dentry)) in eventfs_start_creating()
539 return dentry; in eventfs_start_creating()
550 struct dentry *eventfs_failed_creating(struct dentry *dentry) in eventfs_failed_creating() argument
552 dput(dentry); in eventfs_failed_creating()
566 struct dentry *eventfs_end_creating(struct dentry *dentry) in eventfs_end_creating() argument
568 return dentry; in eventfs_end_creating()
597 struct dentry *tracefs_create_file(const char *name, umode_t mode, in tracefs_create_file()
598 struct dentry *parent, void *data, in tracefs_create_file()
601 struct dentry *dentry; in tracefs_create_file() local
610 dentry = tracefs_start_creating(name, parent); in tracefs_create_file()
612 if (IS_ERR(dentry)) in tracefs_create_file()
615 inode = tracefs_get_inode(dentry->d_sb); in tracefs_create_file()
617 return tracefs_failed_creating(dentry); in tracefs_create_file()
622 inode->i_uid = d_inode(dentry->d_parent)->i_uid; in tracefs_create_file()
623 inode->i_gid = d_inode(dentry->d_parent)->i_gid; in tracefs_create_file()
624 d_instantiate(dentry, inode); in tracefs_create_file()
625 fsnotify_create(d_inode(dentry->d_parent), dentry); in tracefs_create_file()
626 return tracefs_end_creating(dentry); in tracefs_create_file()
629 static struct dentry *__create_dir(const char *name, struct dentry *parent, in __create_dir()
632 struct dentry *dentry = tracefs_start_creating(name, parent); in __create_dir() local
635 if (IS_ERR(dentry)) in __create_dir()
638 inode = tracefs_get_inode(dentry->d_sb); in __create_dir()
640 return tracefs_failed_creating(dentry); in __create_dir()
646 inode->i_uid = d_inode(dentry->d_parent)->i_uid; in __create_dir()
647 inode->i_gid = d_inode(dentry->d_parent)->i_gid; in __create_dir()
651 d_instantiate(dentry, inode); in __create_dir()
652 inc_nlink(d_inode(dentry->d_parent)); in __create_dir()
653 fsnotify_mkdir(d_inode(dentry->d_parent), dentry); in __create_dir()
654 return tracefs_end_creating(dentry); in __create_dir()
674 struct dentry *tracefs_create_dir(const char *name, struct dentry *parent) in tracefs_create_dir()
699 __init struct dentry *tracefs_create_instance_dir(const char *name, in tracefs_create_instance_dir()
700 struct dentry *parent, in tracefs_create_instance_dir()
704 struct dentry *dentry; in tracefs_create_instance_dir() local
710 dentry = __create_dir(name, parent, &tracefs_dir_inode_operations); in tracefs_create_instance_dir()
711 if (!dentry) in tracefs_create_instance_dir()
717 return dentry; in tracefs_create_instance_dir()
720 static void remove_one(struct dentry *victim) in remove_one()
733 void tracefs_remove(struct dentry *dentry) in tracefs_remove() argument
735 if (IS_ERR_OR_NULL(dentry)) in tracefs_remove()
739 simple_recursive_removal(dentry, remove_one); in tracefs_remove()