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()
195 static int debugfs_show_options(struct seq_file *m, struct dentry *root) in debugfs_show_options()
224 static void debugfs_release_dentry(struct dentry *dentry) in debugfs_release_dentry() argument
226 struct debugfs_fsdata *fsd = dentry->d_fsdata; in debugfs_release_dentry()
242 struct debugfs_fsdata *fsd = path->dentry->d_fsdata; in debugfs_automount()
244 return fsd->automount(path->dentry, d_inode(path->dentry)->i_private); in debugfs_automount()
326 struct dentry *debugfs_lookup(const char *name, struct dentry *parent) in debugfs_lookup()
328 struct dentry *dentry; in debugfs_lookup() local
336 dentry = lookup_positive_unlocked(name, parent, strlen(name)); in debugfs_lookup()
337 if (IS_ERR(dentry)) in debugfs_lookup()
339 return dentry; in debugfs_lookup()
343 static struct dentry *start_creating(const char *name, struct dentry *parent) in start_creating()
345 struct dentry *dentry; in start_creating() local
376 dentry = ERR_PTR(-ENOENT); in start_creating()
378 dentry = lookup_one_len(name, parent, strlen(name)); in start_creating()
379 if (!IS_ERR(dentry) && d_really_is_positive(dentry)) { in start_creating()
380 if (d_is_dir(dentry)) in start_creating()
386 dput(dentry); in start_creating()
387 dentry = ERR_PTR(-EEXIST); in start_creating()
390 if (IS_ERR(dentry)) { in start_creating()
395 return dentry; in start_creating()
398 static struct dentry *failed_creating(struct dentry *dentry) in failed_creating() argument
400 inode_unlock(d_inode(dentry->d_parent)); in failed_creating()
401 dput(dentry); in failed_creating()
406 static struct dentry *end_creating(struct dentry *dentry) in end_creating() argument
408 inode_unlock(d_inode(dentry->d_parent)); in end_creating()
409 return dentry; in end_creating()
412 static struct dentry *__debugfs_create_file(const char *name, umode_t mode, in __debugfs_create_file()
413 struct dentry *parent, void *data, in __debugfs_create_file()
417 struct dentry *dentry; in __debugfs_create_file() local
423 dentry = start_creating(name, parent); in __debugfs_create_file()
425 if (IS_ERR(dentry)) in __debugfs_create_file()
426 return dentry; in __debugfs_create_file()
429 failed_creating(dentry); in __debugfs_create_file()
433 inode = debugfs_get_inode(dentry->d_sb); in __debugfs_create_file()
437 return failed_creating(dentry); in __debugfs_create_file()
445 dentry->d_fsdata = (void *)((unsigned long)real_fops | in __debugfs_create_file()
448 d_instantiate(dentry, inode); in __debugfs_create_file()
449 fsnotify_create(d_inode(dentry->d_parent), dentry); in __debugfs_create_file()
450 return end_creating(dentry); in __debugfs_create_file()
485 struct dentry *debugfs_create_file(const char *name, umode_t mode, in debugfs_create_file()
486 struct dentry *parent, void *data, in debugfs_create_file()
524 struct dentry *debugfs_create_file_unsafe(const char *name, umode_t mode, in debugfs_create_file_unsafe()
525 struct dentry *parent, void *data, in debugfs_create_file_unsafe()
556 struct dentry *parent, void *data, in debugfs_create_file_size()
560 struct dentry *de = debugfs_create_file(name, mode, parent, data, fops); in debugfs_create_file_size()
591 struct dentry *debugfs_create_dir(const char *name, struct dentry *parent) in debugfs_create_dir()
593 struct dentry *dentry = start_creating(name, parent); in debugfs_create_dir() local
596 if (IS_ERR(dentry)) in debugfs_create_dir()
597 return dentry; in debugfs_create_dir()
600 failed_creating(dentry); in debugfs_create_dir()
604 inode = debugfs_get_inode(dentry->d_sb); in debugfs_create_dir()
608 return failed_creating(dentry); in debugfs_create_dir()
617 d_instantiate(dentry, inode); in debugfs_create_dir()
618 inc_nlink(d_inode(dentry->d_parent)); in debugfs_create_dir()
619 fsnotify_mkdir(d_inode(dentry->d_parent), dentry); in debugfs_create_dir()
620 return end_creating(dentry); in debugfs_create_dir()
635 struct dentry *debugfs_create_automount(const char *name, in debugfs_create_automount()
636 struct dentry *parent, in debugfs_create_automount()
640 struct dentry *dentry = start_creating(name, parent); in debugfs_create_automount() local
644 if (IS_ERR(dentry)) in debugfs_create_automount()
645 return dentry; in debugfs_create_automount()
649 failed_creating(dentry); in debugfs_create_automount()
656 failed_creating(dentry); in debugfs_create_automount()
661 inode = debugfs_get_inode(dentry->d_sb); in debugfs_create_automount()
666 return failed_creating(dentry); in debugfs_create_automount()
672 dentry->d_fsdata = fsd; in debugfs_create_automount()
675 d_instantiate(dentry, inode); in debugfs_create_automount()
676 inc_nlink(d_inode(dentry->d_parent)); in debugfs_create_automount()
677 fsnotify_mkdir(d_inode(dentry->d_parent), dentry); in debugfs_create_automount()
678 return end_creating(dentry); in debugfs_create_automount()
705 struct dentry *debugfs_create_symlink(const char *name, struct dentry *parent, in debugfs_create_symlink()
708 struct dentry *dentry; in debugfs_create_symlink() local
714 dentry = start_creating(name, parent); in debugfs_create_symlink()
715 if (IS_ERR(dentry)) { in debugfs_create_symlink()
717 return dentry; in debugfs_create_symlink()
720 inode = debugfs_get_inode(dentry->d_sb); in debugfs_create_symlink()
725 return failed_creating(dentry); in debugfs_create_symlink()
730 d_instantiate(dentry, inode); in debugfs_create_symlink()
731 return end_creating(dentry); in debugfs_create_symlink()
735 static void __debugfs_file_removed(struct dentry *dentry) in __debugfs_file_removed() argument
746 fsd = READ_ONCE(dentry->d_fsdata); in __debugfs_file_removed()
789 c->cancel(dentry, c->cancel_data); in __debugfs_file_removed()
797 static void remove_one(struct dentry *victim) in remove_one()
817 void debugfs_remove(struct dentry *dentry) in debugfs_remove() argument
819 if (IS_ERR_OR_NULL(dentry)) in debugfs_remove()
823 simple_recursive_removal(dentry, remove_one); in debugfs_remove()
837 void debugfs_lookup_and_remove(const char *name, struct dentry *parent) in debugfs_lookup_and_remove()
839 struct dentry *dentry; in debugfs_lookup_and_remove() local
841 dentry = debugfs_lookup(name, parent); in debugfs_lookup_and_remove()
842 if (!dentry) in debugfs_lookup_and_remove()
845 debugfs_remove(dentry); in debugfs_lookup_and_remove()
846 dput(dentry); in debugfs_lookup_and_remove()
869 struct dentry *debugfs_rename(struct dentry *old_dir, struct dentry *old_dentry, in debugfs_rename()
870 struct dentry *new_dir, const char *new_name) in debugfs_rename()
873 struct dentry *dentry = NULL, *trap; in debugfs_rename() local
891 dentry = lookup_one_len(new_name, new_dir, strlen(new_name)); in debugfs_rename()
893 if (IS_ERR(dentry) || dentry == trap || d_really_is_positive(dentry)) in debugfs_rename()
899 d_inode(new_dir), dentry, 0); in debugfs_rename()
904 d_move(old_dentry, dentry); in debugfs_rename()
910 dput(dentry); in debugfs_rename()
913 if (dentry && !IS_ERR(dentry)) in debugfs_rename()
914 dput(dentry); in debugfs_rename()
916 if (IS_ERR(dentry)) in debugfs_rename()
917 return dentry; in debugfs_rename()