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()
242 static void debugfs_release_dentry(struct dentry *dentry) in debugfs_release_dentry() argument
244 struct debugfs_fsdata *fsd = dentry->d_fsdata; in debugfs_release_dentry()
255 struct inode *inode = path->dentry->d_inode; in debugfs_automount()
257 return DEBUGFS_I(inode)->automount(path->dentry, inode->i_private); in debugfs_automount()
339 struct dentry *debugfs_lookup(const char *name, struct dentry *parent) in debugfs_lookup()
341 struct dentry *dentry; in debugfs_lookup() local
349 dentry = lookup_positive_unlocked(name, parent, strlen(name)); in debugfs_lookup()
350 if (IS_ERR(dentry)) in debugfs_lookup()
352 return dentry; in debugfs_lookup()
356 static struct dentry *start_creating(const char *name, struct dentry *parent) in start_creating()
358 struct dentry *dentry; in start_creating() local
389 dentry = ERR_PTR(-ENOENT); in start_creating()
391 dentry = lookup_one_len(name, parent, strlen(name)); in start_creating()
392 if (!IS_ERR(dentry) && d_really_is_positive(dentry)) { in start_creating()
393 if (d_is_dir(dentry)) in start_creating()
399 dput(dentry); in start_creating()
400 dentry = ERR_PTR(-EEXIST); in start_creating()
403 if (IS_ERR(dentry)) { in start_creating()
408 return dentry; in start_creating()
411 static struct dentry *failed_creating(struct dentry *dentry) in failed_creating() argument
413 inode_unlock(d_inode(dentry->d_parent)); in failed_creating()
414 dput(dentry); in failed_creating()
419 static struct dentry *end_creating(struct dentry *dentry) in end_creating() argument
421 inode_unlock(d_inode(dentry->d_parent)); in end_creating()
422 return dentry; in end_creating()
425 static struct dentry *__debugfs_create_file(const char *name, umode_t mode, in __debugfs_create_file()
426 struct dentry *parent, void *data, in __debugfs_create_file()
431 struct dentry *dentry; in __debugfs_create_file() local
437 dentry = start_creating(name, parent); in __debugfs_create_file()
439 if (IS_ERR(dentry)) in __debugfs_create_file()
440 return dentry; in __debugfs_create_file()
443 failed_creating(dentry); in __debugfs_create_file()
447 inode = debugfs_get_inode(dentry->d_sb); in __debugfs_create_file()
451 return failed_creating(dentry); in __debugfs_create_file()
464 d_instantiate(dentry, inode); in __debugfs_create_file()
465 fsnotify_create(d_inode(dentry->d_parent), dentry); in __debugfs_create_file()
466 return end_creating(dentry); in __debugfs_create_file()
469 struct dentry *debugfs_create_file_full(const char *name, umode_t mode, in debugfs_create_file_full()
470 struct dentry *parent, void *data, in debugfs_create_file_full()
480 struct dentry *debugfs_create_file_short(const char *name, umode_t mode, in debugfs_create_file_short()
481 struct dentry *parent, void *data, in debugfs_create_file_short()
518 struct dentry *debugfs_create_file_unsafe(const char *name, umode_t mode, in debugfs_create_file_unsafe()
519 struct dentry *parent, void *data, in debugfs_create_file_unsafe()
549 struct dentry *parent, void *data, in debugfs_create_file_size()
553 struct dentry *de = debugfs_create_file(name, mode, parent, data, fops); in debugfs_create_file_size()
584 struct dentry *debugfs_create_dir(const char *name, struct dentry *parent) in debugfs_create_dir()
586 struct dentry *dentry = start_creating(name, parent); in debugfs_create_dir() local
589 if (IS_ERR(dentry)) in debugfs_create_dir()
590 return dentry; in debugfs_create_dir()
593 failed_creating(dentry); in debugfs_create_dir()
597 inode = debugfs_get_inode(dentry->d_sb); in debugfs_create_dir()
601 return failed_creating(dentry); in debugfs_create_dir()
610 d_instantiate(dentry, inode); in debugfs_create_dir()
611 inc_nlink(d_inode(dentry->d_parent)); in debugfs_create_dir()
612 fsnotify_mkdir(d_inode(dentry->d_parent), dentry); in debugfs_create_dir()
613 return end_creating(dentry); in debugfs_create_dir()
628 struct dentry *debugfs_create_automount(const char *name, in debugfs_create_automount()
629 struct dentry *parent, in debugfs_create_automount()
633 struct dentry *dentry = start_creating(name, parent); in debugfs_create_automount() local
636 if (IS_ERR(dentry)) in debugfs_create_automount()
637 return dentry; in debugfs_create_automount()
640 failed_creating(dentry); in debugfs_create_automount()
644 inode = debugfs_get_inode(dentry->d_sb); in debugfs_create_automount()
648 return failed_creating(dentry); in debugfs_create_automount()
657 d_instantiate(dentry, inode); in debugfs_create_automount()
658 inc_nlink(d_inode(dentry->d_parent)); in debugfs_create_automount()
659 fsnotify_mkdir(d_inode(dentry->d_parent), dentry); in debugfs_create_automount()
660 return end_creating(dentry); in debugfs_create_automount()
687 struct dentry *debugfs_create_symlink(const char *name, struct dentry *parent, in debugfs_create_symlink()
690 struct dentry *dentry; in debugfs_create_symlink() local
696 dentry = start_creating(name, parent); in debugfs_create_symlink()
697 if (IS_ERR(dentry)) { in debugfs_create_symlink()
699 return dentry; in debugfs_create_symlink()
702 inode = debugfs_get_inode(dentry->d_sb); in debugfs_create_symlink()
707 return failed_creating(dentry); in debugfs_create_symlink()
712 d_instantiate(dentry, inode); in debugfs_create_symlink()
713 return end_creating(dentry); in debugfs_create_symlink()
717 static void __debugfs_file_removed(struct dentry *dentry) in __debugfs_file_removed() argument
728 fsd = READ_ONCE(dentry->d_fsdata); in __debugfs_file_removed()
771 c->cancel(dentry, c->cancel_data); in __debugfs_file_removed()
779 static void remove_one(struct dentry *victim) in remove_one()
799 void debugfs_remove(struct dentry *dentry) in debugfs_remove() argument
801 if (IS_ERR_OR_NULL(dentry)) in debugfs_remove()
805 simple_recursive_removal(dentry, remove_one); in debugfs_remove()
819 void debugfs_lookup_and_remove(const char *name, struct dentry *parent) in debugfs_lookup_and_remove()
821 struct dentry *dentry; in debugfs_lookup_and_remove() local
823 dentry = debugfs_lookup(name, parent); in debugfs_lookup_and_remove()
824 if (!dentry) in debugfs_lookup_and_remove()
827 debugfs_remove(dentry); in debugfs_lookup_and_remove()
828 dput(dentry); in debugfs_lookup_and_remove()
845 int __printf(2, 3) debugfs_change_name(struct dentry *dentry, const char *fmt, ...) in debugfs_change_name() argument
850 struct dentry *parent, *target; in debugfs_change_name()
854 if (IS_ERR_OR_NULL(dentry)) in debugfs_change_name()
863 parent = dget_parent(dentry); in debugfs_change_name()
867 take_dentry_name_snapshot(&old_name, dentry); in debugfs_change_name()
869 if (WARN_ON_ONCE(dentry->d_parent != parent)) { in debugfs_change_name()
885 simple_rename_timestamp(dir, dentry, dir, target); in debugfs_change_name()
886 d_move(dentry, target); in debugfs_change_name()
888 fsnotify_move(dir, dir, &old_name.name, d_is_dir(dentry), NULL, dentry); in debugfs_change_name()