Lines Matching refs:dentry
46 struct dentry *dentry, struct iattr *ia) in debugfs_setattr() argument
55 return simple_setattr(&init_user_ns, dentry, ia); in debugfs_setattr()
207 static int debugfs_show_options(struct seq_file *m, struct dentry *root) in debugfs_show_options()
238 static void debugfs_release_dentry(struct dentry *dentry) in debugfs_release_dentry() argument
240 void *fsd = dentry->d_fsdata; in debugfs_release_dentry()
243 kfree(dentry->d_fsdata); in debugfs_release_dentry()
249 f = (debugfs_automount_t)path->dentry->d_fsdata; in debugfs_automount()
250 return f(path->dentry, d_inode(path->dentry)->i_private); in debugfs_automount()
293 static struct dentry *debug_mount(struct file_system_type *fs_type, in debug_mount()
323 struct dentry *debugfs_lookup(const char *name, struct dentry *parent) in debugfs_lookup()
325 struct dentry *dentry; in debugfs_lookup() local
333 dentry = lookup_positive_unlocked(name, parent, strlen(name)); in debugfs_lookup()
334 if (IS_ERR(dentry)) in debugfs_lookup()
336 return dentry; in debugfs_lookup()
340 static struct dentry *start_creating(const char *name, struct dentry *parent) in start_creating()
342 struct dentry *dentry; in start_creating() local
373 dentry = ERR_PTR(-ENOENT); in start_creating()
375 dentry = lookup_one_len(name, parent, strlen(name)); in start_creating()
376 if (!IS_ERR(dentry) && d_really_is_positive(dentry)) { in start_creating()
377 if (d_is_dir(dentry)) in start_creating()
383 dput(dentry); in start_creating()
384 dentry = ERR_PTR(-EEXIST); in start_creating()
387 if (IS_ERR(dentry)) { in start_creating()
392 return dentry; in start_creating()
395 static struct dentry *failed_creating(struct dentry *dentry) in failed_creating() argument
397 inode_unlock(d_inode(dentry->d_parent)); in failed_creating()
398 dput(dentry); in failed_creating()
403 static struct dentry *end_creating(struct dentry *dentry) in end_creating() argument
405 inode_unlock(d_inode(dentry->d_parent)); in end_creating()
406 return dentry; in end_creating()
409 static struct dentry *__debugfs_create_file(const char *name, umode_t mode, in __debugfs_create_file()
410 struct dentry *parent, void *data, in __debugfs_create_file()
414 struct dentry *dentry; in __debugfs_create_file() local
420 dentry = start_creating(name, parent); in __debugfs_create_file()
422 if (IS_ERR(dentry)) in __debugfs_create_file()
423 return dentry; in __debugfs_create_file()
426 failed_creating(dentry); in __debugfs_create_file()
430 inode = debugfs_get_inode(dentry->d_sb); in __debugfs_create_file()
434 return failed_creating(dentry); in __debugfs_create_file()
442 dentry->d_fsdata = (void *)((unsigned long)real_fops | in __debugfs_create_file()
445 d_instantiate(dentry, inode); in __debugfs_create_file()
446 fsnotify_create(d_inode(dentry->d_parent), dentry); in __debugfs_create_file()
447 return end_creating(dentry); in __debugfs_create_file()
482 struct dentry *debugfs_create_file(const char *name, umode_t mode, in debugfs_create_file()
483 struct dentry *parent, void *data, in debugfs_create_file()
521 struct dentry *debugfs_create_file_unsafe(const char *name, umode_t mode, in debugfs_create_file_unsafe()
522 struct dentry *parent, void *data, in debugfs_create_file_unsafe()
553 struct dentry *parent, void *data, in debugfs_create_file_size()
557 struct dentry *de = debugfs_create_file(name, mode, parent, data, fops); in debugfs_create_file_size()
588 struct dentry *debugfs_create_dir(const char *name, struct dentry *parent) in debugfs_create_dir()
590 struct dentry *dentry = start_creating(name, parent); in debugfs_create_dir() local
593 if (IS_ERR(dentry)) in debugfs_create_dir()
594 return dentry; in debugfs_create_dir()
597 failed_creating(dentry); in debugfs_create_dir()
601 inode = debugfs_get_inode(dentry->d_sb); in debugfs_create_dir()
605 return failed_creating(dentry); in debugfs_create_dir()
614 d_instantiate(dentry, inode); in debugfs_create_dir()
615 inc_nlink(d_inode(dentry->d_parent)); in debugfs_create_dir()
616 fsnotify_mkdir(d_inode(dentry->d_parent), dentry); in debugfs_create_dir()
617 return end_creating(dentry); in debugfs_create_dir()
632 struct dentry *debugfs_create_automount(const char *name, in debugfs_create_automount()
633 struct dentry *parent, in debugfs_create_automount()
637 struct dentry *dentry = start_creating(name, parent); in debugfs_create_automount() local
640 if (IS_ERR(dentry)) in debugfs_create_automount()
641 return dentry; in debugfs_create_automount()
644 failed_creating(dentry); in debugfs_create_automount()
648 inode = debugfs_get_inode(dentry->d_sb); in debugfs_create_automount()
652 return failed_creating(dentry); in debugfs_create_automount()
658 dentry->d_fsdata = (void *)f; in debugfs_create_automount()
661 d_instantiate(dentry, inode); in debugfs_create_automount()
662 inc_nlink(d_inode(dentry->d_parent)); in debugfs_create_automount()
663 fsnotify_mkdir(d_inode(dentry->d_parent), dentry); in debugfs_create_automount()
664 return end_creating(dentry); in debugfs_create_automount()
691 struct dentry *debugfs_create_symlink(const char *name, struct dentry *parent, in debugfs_create_symlink()
694 struct dentry *dentry; in debugfs_create_symlink() local
700 dentry = start_creating(name, parent); in debugfs_create_symlink()
701 if (IS_ERR(dentry)) { in debugfs_create_symlink()
703 return dentry; in debugfs_create_symlink()
706 inode = debugfs_get_inode(dentry->d_sb); in debugfs_create_symlink()
711 return failed_creating(dentry); in debugfs_create_symlink()
716 d_instantiate(dentry, inode); in debugfs_create_symlink()
717 return end_creating(dentry); in debugfs_create_symlink()
721 static void __debugfs_file_removed(struct dentry *dentry) in __debugfs_file_removed() argument
732 fsd = READ_ONCE(dentry->d_fsdata); in __debugfs_file_removed()
739 static void remove_one(struct dentry *victim) in remove_one()
759 void debugfs_remove(struct dentry *dentry) in debugfs_remove() argument
761 if (IS_ERR_OR_NULL(dentry)) in debugfs_remove()
765 simple_recursive_removal(dentry, remove_one); in debugfs_remove()
779 void debugfs_lookup_and_remove(const char *name, struct dentry *parent) in debugfs_lookup_and_remove()
781 struct dentry *dentry; in debugfs_lookup_and_remove() local
783 dentry = debugfs_lookup(name, parent); in debugfs_lookup_and_remove()
784 if (!dentry) in debugfs_lookup_and_remove()
787 debugfs_remove(dentry); in debugfs_lookup_and_remove()
788 dput(dentry); in debugfs_lookup_and_remove()
811 struct dentry *debugfs_rename(struct dentry *old_dir, struct dentry *old_dentry, in debugfs_rename()
812 struct dentry *new_dir, const char *new_name) in debugfs_rename()
815 struct dentry *dentry = NULL, *trap; in debugfs_rename() local
833 dentry = lookup_one_len(new_name, new_dir, strlen(new_name)); in debugfs_rename()
835 if (IS_ERR(dentry) || dentry == trap || d_really_is_positive(dentry)) in debugfs_rename()
841 d_inode(new_dir), dentry, 0); in debugfs_rename()
846 d_move(old_dentry, dentry); in debugfs_rename()
852 dput(dentry); in debugfs_rename()
855 if (dentry && !IS_ERR(dentry)) in debugfs_rename()
856 dput(dentry); in debugfs_rename()
858 if (IS_ERR(dentry)) in debugfs_rename()
859 return dentry; in debugfs_rename()