Lines Matching refs:dentry

44 static int debugfs_setattr(struct dentry *dentry, struct iattr *ia)  in debugfs_setattr()  argument
50 return simple_setattr(dentry, ia); in debugfs_setattr()
179 static int debugfs_show_options(struct seq_file *m, struct dentry *root) in debugfs_show_options()
210 static void debugfs_release_dentry(struct dentry *dentry) in debugfs_release_dentry() argument
212 void *fsd = dentry->d_fsdata; in debugfs_release_dentry()
215 kfree(dentry->d_fsdata); in debugfs_release_dentry()
221 f = (debugfs_automount_t)path->dentry->d_fsdata; in debugfs_automount()
222 return f(path->dentry, d_inode(path->dentry)->i_private); in debugfs_automount()
265 static struct dentry *debug_mount(struct file_system_type *fs_type, in debug_mount()
292 struct dentry *debugfs_lookup(const char *name, struct dentry *parent) in debugfs_lookup()
294 struct dentry *dentry; in debugfs_lookup() local
302 dentry = lookup_one_len_unlocked(name, parent, strlen(name)); in debugfs_lookup()
303 if (IS_ERR(dentry)) in debugfs_lookup()
305 if (!d_really_is_positive(dentry)) { in debugfs_lookup()
306 dput(dentry); in debugfs_lookup()
309 return dentry; in debugfs_lookup()
313 static struct dentry *start_creating(const char *name, struct dentry *parent) in start_creating()
315 struct dentry *dentry; in start_creating() local
339 dentry = lookup_one_len(name, parent, strlen(name)); in start_creating()
340 if (!IS_ERR(dentry) && d_really_is_positive(dentry)) { in start_creating()
341 if (d_is_dir(dentry)) in start_creating()
347 dput(dentry); in start_creating()
348 dentry = ERR_PTR(-EEXIST); in start_creating()
351 if (IS_ERR(dentry)) { in start_creating()
356 return dentry; in start_creating()
359 static struct dentry *failed_creating(struct dentry *dentry) in failed_creating() argument
361 inode_unlock(d_inode(dentry->d_parent)); in failed_creating()
362 dput(dentry); in failed_creating()
367 static struct dentry *end_creating(struct dentry *dentry) in end_creating() argument
369 inode_unlock(d_inode(dentry->d_parent)); in end_creating()
370 return dentry; in end_creating()
373 static struct dentry *__debugfs_create_file(const char *name, umode_t mode, in __debugfs_create_file()
374 struct dentry *parent, void *data, in __debugfs_create_file()
378 struct dentry *dentry; in __debugfs_create_file() local
384 dentry = start_creating(name, parent); in __debugfs_create_file()
386 if (IS_ERR(dentry)) in __debugfs_create_file()
387 return dentry; in __debugfs_create_file()
389 inode = debugfs_get_inode(dentry->d_sb); in __debugfs_create_file()
393 return failed_creating(dentry); in __debugfs_create_file()
401 dentry->d_fsdata = (void *)((unsigned long)real_fops | in __debugfs_create_file()
404 d_instantiate(dentry, inode); in __debugfs_create_file()
405 fsnotify_create(d_inode(dentry->d_parent), dentry); in __debugfs_create_file()
406 return end_creating(dentry); in __debugfs_create_file()
436 struct dentry *debugfs_create_file(const char *name, umode_t mode, in debugfs_create_file()
437 struct dentry *parent, void *data, in debugfs_create_file()
475 struct dentry *debugfs_create_file_unsafe(const char *name, umode_t mode, in debugfs_create_file_unsafe()
476 struct dentry *parent, void *data, in debugfs_create_file_unsafe()
515 struct dentry *debugfs_create_file_size(const char *name, umode_t mode, in debugfs_create_file_size()
516 struct dentry *parent, void *data, in debugfs_create_file_size()
520 struct dentry *de = debugfs_create_file(name, mode, parent, data, fops); in debugfs_create_file_size()
547 struct dentry *debugfs_create_dir(const char *name, struct dentry *parent) in debugfs_create_dir()
549 struct dentry *dentry = start_creating(name, parent); in debugfs_create_dir() local
552 if (IS_ERR(dentry)) in debugfs_create_dir()
553 return dentry; in debugfs_create_dir()
555 inode = debugfs_get_inode(dentry->d_sb); in debugfs_create_dir()
559 return failed_creating(dentry); in debugfs_create_dir()
568 d_instantiate(dentry, inode); in debugfs_create_dir()
569 inc_nlink(d_inode(dentry->d_parent)); in debugfs_create_dir()
570 fsnotify_mkdir(d_inode(dentry->d_parent), dentry); in debugfs_create_dir()
571 return end_creating(dentry); in debugfs_create_dir()
586 struct dentry *debugfs_create_automount(const char *name, in debugfs_create_automount()
587 struct dentry *parent, in debugfs_create_automount()
591 struct dentry *dentry = start_creating(name, parent); in debugfs_create_automount() local
594 if (IS_ERR(dentry)) in debugfs_create_automount()
595 return dentry; in debugfs_create_automount()
597 inode = debugfs_get_inode(dentry->d_sb); in debugfs_create_automount()
601 return failed_creating(dentry); in debugfs_create_automount()
607 dentry->d_fsdata = (void *)f; in debugfs_create_automount()
610 d_instantiate(dentry, inode); in debugfs_create_automount()
611 inc_nlink(d_inode(dentry->d_parent)); in debugfs_create_automount()
612 fsnotify_mkdir(d_inode(dentry->d_parent), dentry); in debugfs_create_automount()
613 return end_creating(dentry); in debugfs_create_automount()
640 struct dentry *debugfs_create_symlink(const char *name, struct dentry *parent, in debugfs_create_symlink()
643 struct dentry *dentry; in debugfs_create_symlink() local
649 dentry = start_creating(name, parent); in debugfs_create_symlink()
650 if (IS_ERR(dentry)) { in debugfs_create_symlink()
652 return dentry; in debugfs_create_symlink()
655 inode = debugfs_get_inode(dentry->d_sb); in debugfs_create_symlink()
660 return failed_creating(dentry); in debugfs_create_symlink()
665 d_instantiate(dentry, inode); in debugfs_create_symlink()
666 return end_creating(dentry); in debugfs_create_symlink()
670 static void __debugfs_file_removed(struct dentry *dentry) in __debugfs_file_removed() argument
681 fsd = READ_ONCE(dentry->d_fsdata); in __debugfs_file_removed()
688 static int __debugfs_remove(struct dentry *dentry, struct dentry *parent) in __debugfs_remove() argument
692 if (simple_positive(dentry)) { in __debugfs_remove()
693 dget(dentry); in __debugfs_remove()
694 if (d_is_dir(dentry)) { in __debugfs_remove()
695 ret = simple_rmdir(d_inode(parent), dentry); in __debugfs_remove()
697 fsnotify_rmdir(d_inode(parent), dentry); in __debugfs_remove()
699 simple_unlink(d_inode(parent), dentry); in __debugfs_remove()
700 fsnotify_unlink(d_inode(parent), dentry); in __debugfs_remove()
703 d_delete(dentry); in __debugfs_remove()
704 if (d_is_reg(dentry)) in __debugfs_remove()
705 __debugfs_file_removed(dentry); in __debugfs_remove()
706 dput(dentry); in __debugfs_remove()
725 void debugfs_remove(struct dentry *dentry) in debugfs_remove() argument
727 struct dentry *parent; in debugfs_remove()
730 if (IS_ERR_OR_NULL(dentry)) in debugfs_remove()
733 parent = dentry->d_parent; in debugfs_remove()
735 ret = __debugfs_remove(dentry, parent); in debugfs_remove()
755 void debugfs_remove_recursive(struct dentry *dentry) in debugfs_remove_recursive() argument
757 struct dentry *child, *parent; in debugfs_remove_recursive()
759 if (IS_ERR_OR_NULL(dentry)) in debugfs_remove_recursive()
762 parent = dentry; in debugfs_remove_recursive()
805 if (child != dentry) in debugfs_remove_recursive()
834 struct dentry *debugfs_rename(struct dentry *old_dir, struct dentry *old_dentry, in debugfs_rename()
835 struct dentry *new_dir, const char *new_name) in debugfs_rename()
838 struct dentry *dentry = NULL, *trap; in debugfs_rename() local
856 dentry = lookup_one_len(new_name, new_dir, strlen(new_name)); in debugfs_rename()
858 if (IS_ERR(dentry) || dentry == trap || d_really_is_positive(dentry)) in debugfs_rename()
864 dentry, 0); in debugfs_rename()
869 d_move(old_dentry, dentry); in debugfs_rename()
875 dput(dentry); in debugfs_rename()
878 if (dentry && !IS_ERR(dentry)) in debugfs_rename()
879 dput(dentry); in debugfs_rename()
881 if (IS_ERR(dentry)) in debugfs_rename()
882 return dentry; in debugfs_rename()