Lines Matching refs:dentry

58 static char *get_dname(struct dentry *dentry)  in get_dname()  argument
62 int len = dentry->d_name.len; in get_dname()
64 dname = dentry->d_name.name; in get_dname()
73 static int tracefs_syscall_mkdir(struct inode *inode, struct dentry *dentry, umode_t mode) in tracefs_syscall_mkdir() argument
78 name = get_dname(dentry); in tracefs_syscall_mkdir()
96 static int tracefs_syscall_rmdir(struct inode *inode, struct dentry *dentry) in tracefs_syscall_rmdir() argument
101 name = get_dname(dentry); in tracefs_syscall_rmdir()
113 mutex_unlock(&dentry->d_inode->i_mutex); in tracefs_syscall_rmdir()
118 mutex_lock(&dentry->d_inode->i_mutex); in tracefs_syscall_rmdir()
244 static int tracefs_show_options(struct seq_file *m, struct dentry *root) in tracefs_show_options()
302 static struct dentry *trace_mount(struct file_system_type *fs_type, in trace_mount()
317 static struct dentry *start_creating(const char *name, struct dentry *parent) in start_creating()
319 struct dentry *dentry; in start_creating() local
338 dentry = lookup_one_len(name, parent, strlen(name)); in start_creating()
339 if (!IS_ERR(dentry) && dentry->d_inode) { in start_creating()
340 dput(dentry); in start_creating()
341 dentry = ERR_PTR(-EEXIST); in start_creating()
343 if (IS_ERR(dentry)) in start_creating()
345 return dentry; in start_creating()
348 static struct dentry *failed_creating(struct dentry *dentry) in failed_creating() argument
350 mutex_unlock(&dentry->d_parent->d_inode->i_mutex); in failed_creating()
351 dput(dentry); in failed_creating()
356 static struct dentry *end_creating(struct dentry *dentry) in end_creating() argument
358 mutex_unlock(&dentry->d_parent->d_inode->i_mutex); in end_creating()
359 return dentry; in end_creating()
388 struct dentry *tracefs_create_file(const char *name, umode_t mode, in tracefs_create_file()
389 struct dentry *parent, void *data, in tracefs_create_file()
392 struct dentry *dentry; in tracefs_create_file() local
398 dentry = start_creating(name, parent); in tracefs_create_file()
400 if (IS_ERR(dentry)) in tracefs_create_file()
403 inode = tracefs_get_inode(dentry->d_sb); in tracefs_create_file()
405 return failed_creating(dentry); in tracefs_create_file()
410 d_instantiate(dentry, inode); in tracefs_create_file()
411 fsnotify_create(dentry->d_parent->d_inode, dentry); in tracefs_create_file()
412 return end_creating(dentry); in tracefs_create_file()
415 static struct dentry *__create_dir(const char *name, struct dentry *parent, in __create_dir()
418 struct dentry *dentry = start_creating(name, parent); in __create_dir() local
421 if (IS_ERR(dentry)) in __create_dir()
424 inode = tracefs_get_inode(dentry->d_sb); in __create_dir()
426 return failed_creating(dentry); in __create_dir()
434 d_instantiate(dentry, inode); in __create_dir()
435 inc_nlink(dentry->d_parent->d_inode); in __create_dir()
436 fsnotify_mkdir(dentry->d_parent->d_inode, dentry); in __create_dir()
437 return end_creating(dentry); in __create_dir()
457 struct dentry *tracefs_create_dir(const char *name, struct dentry *parent) in tracefs_create_dir()
479 struct dentry *tracefs_create_instance_dir(const char *name, struct dentry *parent, in tracefs_create_instance_dir()
483 struct dentry *dentry; in tracefs_create_instance_dir() local
489 dentry = __create_dir(name, parent, &tracefs_dir_inode_operations); in tracefs_create_instance_dir()
490 if (!dentry) in tracefs_create_instance_dir()
496 return dentry; in tracefs_create_instance_dir()
499 static inline int tracefs_positive(struct dentry *dentry) in tracefs_positive() argument
501 return dentry->d_inode && !d_unhashed(dentry); in tracefs_positive()
504 static int __tracefs_remove(struct dentry *dentry, struct dentry *parent) in __tracefs_remove() argument
508 if (tracefs_positive(dentry)) { in __tracefs_remove()
509 if (dentry->d_inode) { in __tracefs_remove()
510 dget(dentry); in __tracefs_remove()
511 switch (dentry->d_inode->i_mode & S_IFMT) { in __tracefs_remove()
513 ret = simple_rmdir(parent->d_inode, dentry); in __tracefs_remove()
516 simple_unlink(parent->d_inode, dentry); in __tracefs_remove()
520 d_delete(dentry); in __tracefs_remove()
521 dput(dentry); in __tracefs_remove()
536 void tracefs_remove(struct dentry *dentry) in tracefs_remove() argument
538 struct dentry *parent; in tracefs_remove()
541 if (IS_ERR_OR_NULL(dentry)) in tracefs_remove()
544 parent = dentry->d_parent; in tracefs_remove()
549 ret = __tracefs_remove(dentry, parent); in tracefs_remove()
563 void tracefs_remove_recursive(struct dentry *dentry) in tracefs_remove_recursive() argument
565 struct dentry *child, *parent; in tracefs_remove_recursive()
567 if (IS_ERR_OR_NULL(dentry)) in tracefs_remove_recursive()
570 parent = dentry->d_parent; in tracefs_remove_recursive()
574 parent = dentry; in tracefs_remove_recursive()
617 if (child != dentry) in tracefs_remove_recursive()