Lines Matching refs:dentry

46 			   struct dentry *dentry, struct iattr *ia)  in debugfs_setattr()  argument
55 return simple_setattr(&nop_mnt_idmap, dentry, ia); in debugfs_setattr()
206 static int debugfs_show_options(struct seq_file *m, struct dentry *root) in debugfs_show_options()
237 static void debugfs_release_dentry(struct dentry *dentry) in debugfs_release_dentry() argument
239 void *fsd = dentry->d_fsdata; in debugfs_release_dentry()
242 kfree(dentry->d_fsdata); in debugfs_release_dentry()
248 f = (debugfs_automount_t)path->dentry->d_fsdata; in debugfs_automount()
249 return f(path->dentry, d_inode(path->dentry)->i_private); in debugfs_automount()
292 static struct dentry *debug_mount(struct file_system_type *fs_type, in debug_mount()
322 struct dentry *debugfs_lookup(const char *name, struct dentry *parent) in debugfs_lookup()
324 struct dentry *dentry; in debugfs_lookup() local
332 dentry = lookup_positive_unlocked(name, parent, strlen(name)); in debugfs_lookup()
333 if (IS_ERR(dentry)) in debugfs_lookup()
335 return dentry; in debugfs_lookup()
339 static struct dentry *start_creating(const char *name, struct dentry *parent) in start_creating()
341 struct dentry *dentry; in start_creating() local
372 dentry = ERR_PTR(-ENOENT); in start_creating()
374 dentry = lookup_one_len(name, parent, strlen(name)); in start_creating()
375 if (!IS_ERR(dentry) && d_really_is_positive(dentry)) { in start_creating()
376 if (d_is_dir(dentry)) in start_creating()
382 dput(dentry); in start_creating()
383 dentry = ERR_PTR(-EEXIST); in start_creating()
386 if (IS_ERR(dentry)) { in start_creating()
391 return dentry; in start_creating()
394 static struct dentry *failed_creating(struct dentry *dentry) in failed_creating() argument
396 inode_unlock(d_inode(dentry->d_parent)); in failed_creating()
397 dput(dentry); in failed_creating()
402 static struct dentry *end_creating(struct dentry *dentry) in end_creating() argument
404 inode_unlock(d_inode(dentry->d_parent)); in end_creating()
405 return dentry; in end_creating()
408 static struct dentry *__debugfs_create_file(const char *name, umode_t mode, in __debugfs_create_file()
409 struct dentry *parent, void *data, in __debugfs_create_file()
413 struct dentry *dentry; in __debugfs_create_file() local
419 dentry = start_creating(name, parent); in __debugfs_create_file()
421 if (IS_ERR(dentry)) in __debugfs_create_file()
422 return dentry; in __debugfs_create_file()
425 failed_creating(dentry); in __debugfs_create_file()
429 inode = debugfs_get_inode(dentry->d_sb); in __debugfs_create_file()
433 return failed_creating(dentry); in __debugfs_create_file()
441 dentry->d_fsdata = (void *)((unsigned long)real_fops | in __debugfs_create_file()
444 d_instantiate(dentry, inode); in __debugfs_create_file()
445 fsnotify_create(d_inode(dentry->d_parent), dentry); in __debugfs_create_file()
446 return end_creating(dentry); in __debugfs_create_file()
481 struct dentry *debugfs_create_file(const char *name, umode_t mode, in debugfs_create_file()
482 struct dentry *parent, void *data, in debugfs_create_file()
520 struct dentry *debugfs_create_file_unsafe(const char *name, umode_t mode, in debugfs_create_file_unsafe()
521 struct dentry *parent, void *data, in debugfs_create_file_unsafe()
552 struct dentry *parent, void *data, in debugfs_create_file_size()
556 struct dentry *de = debugfs_create_file(name, mode, parent, data, fops); in debugfs_create_file_size()
587 struct dentry *debugfs_create_dir(const char *name, struct dentry *parent) in debugfs_create_dir()
589 struct dentry *dentry = start_creating(name, parent); in debugfs_create_dir() local
592 if (IS_ERR(dentry)) in debugfs_create_dir()
593 return dentry; in debugfs_create_dir()
596 failed_creating(dentry); in debugfs_create_dir()
600 inode = debugfs_get_inode(dentry->d_sb); in debugfs_create_dir()
604 return failed_creating(dentry); in debugfs_create_dir()
613 d_instantiate(dentry, inode); in debugfs_create_dir()
614 inc_nlink(d_inode(dentry->d_parent)); in debugfs_create_dir()
615 fsnotify_mkdir(d_inode(dentry->d_parent), dentry); in debugfs_create_dir()
616 return end_creating(dentry); in debugfs_create_dir()
631 struct dentry *debugfs_create_automount(const char *name, in debugfs_create_automount()
632 struct dentry *parent, in debugfs_create_automount()
636 struct dentry *dentry = start_creating(name, parent); in debugfs_create_automount() local
639 if (IS_ERR(dentry)) in debugfs_create_automount()
640 return dentry; in debugfs_create_automount()
643 failed_creating(dentry); in debugfs_create_automount()
647 inode = debugfs_get_inode(dentry->d_sb); in debugfs_create_automount()
651 return failed_creating(dentry); in debugfs_create_automount()
657 dentry->d_fsdata = (void *)f; in debugfs_create_automount()
660 d_instantiate(dentry, inode); in debugfs_create_automount()
661 inc_nlink(d_inode(dentry->d_parent)); in debugfs_create_automount()
662 fsnotify_mkdir(d_inode(dentry->d_parent), dentry); in debugfs_create_automount()
663 return end_creating(dentry); in debugfs_create_automount()
690 struct dentry *debugfs_create_symlink(const char *name, struct dentry *parent, in debugfs_create_symlink()
693 struct dentry *dentry; in debugfs_create_symlink() local
699 dentry = start_creating(name, parent); in debugfs_create_symlink()
700 if (IS_ERR(dentry)) { in debugfs_create_symlink()
702 return dentry; in debugfs_create_symlink()
705 inode = debugfs_get_inode(dentry->d_sb); in debugfs_create_symlink()
710 return failed_creating(dentry); in debugfs_create_symlink()
715 d_instantiate(dentry, inode); in debugfs_create_symlink()
716 return end_creating(dentry); in debugfs_create_symlink()
720 static void __debugfs_file_removed(struct dentry *dentry) in __debugfs_file_removed() argument
731 fsd = READ_ONCE(dentry->d_fsdata); in __debugfs_file_removed()
738 static void remove_one(struct dentry *victim) in remove_one()
758 void debugfs_remove(struct dentry *dentry) in debugfs_remove() argument
760 if (IS_ERR_OR_NULL(dentry)) in debugfs_remove()
764 simple_recursive_removal(dentry, remove_one); in debugfs_remove()
778 void debugfs_lookup_and_remove(const char *name, struct dentry *parent) in debugfs_lookup_and_remove()
780 struct dentry *dentry; in debugfs_lookup_and_remove() local
782 dentry = debugfs_lookup(name, parent); in debugfs_lookup_and_remove()
783 if (!dentry) in debugfs_lookup_and_remove()
786 debugfs_remove(dentry); in debugfs_lookup_and_remove()
787 dput(dentry); in debugfs_lookup_and_remove()
810 struct dentry *debugfs_rename(struct dentry *old_dir, struct dentry *old_dentry, in debugfs_rename()
811 struct dentry *new_dir, const char *new_name) in debugfs_rename()
814 struct dentry *dentry = NULL, *trap; in debugfs_rename() local
832 dentry = lookup_one_len(new_name, new_dir, strlen(new_name)); in debugfs_rename()
834 if (IS_ERR(dentry) || dentry == trap || d_really_is_positive(dentry)) in debugfs_rename()
840 d_inode(new_dir), dentry, 0); in debugfs_rename()
845 d_move(old_dentry, dentry); in debugfs_rename()
851 dput(dentry); in debugfs_rename()
854 if (dentry && !IS_ERR(dentry)) in debugfs_rename()
855 dput(dentry); in debugfs_rename()
857 if (IS_ERR(dentry)) in debugfs_rename()
858 return dentry; in debugfs_rename()