Lines Matching refs:dentry

45 static int debugfs_setattr(struct dentry *dentry, struct iattr *ia)  in debugfs_setattr()  argument
51 return simple_setattr(dentry, ia); in debugfs_setattr()
180 static int debugfs_show_options(struct seq_file *m, struct dentry *root) in debugfs_show_options()
211 static void debugfs_release_dentry(struct dentry *dentry) in debugfs_release_dentry() argument
213 void *fsd = dentry->d_fsdata; in debugfs_release_dentry()
216 kfree(dentry->d_fsdata); in debugfs_release_dentry()
222 f = (debugfs_automount_t)path->dentry->d_fsdata; in debugfs_automount()
223 return f(path->dentry, d_inode(path->dentry)->i_private); in debugfs_automount()
266 static struct dentry *debug_mount(struct file_system_type *fs_type, in debug_mount()
296 struct dentry *debugfs_lookup(const char *name, struct dentry *parent) in debugfs_lookup()
298 struct dentry *dentry; in debugfs_lookup() local
306 dentry = lookup_positive_unlocked(name, parent, strlen(name)); in debugfs_lookup()
307 if (IS_ERR(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
346 dentry = ERR_PTR(-ENOENT); in start_creating()
348 dentry = lookup_one_len(name, parent, strlen(name)); in start_creating()
349 if (!IS_ERR(dentry) && d_really_is_positive(dentry)) { in start_creating()
350 if (d_is_dir(dentry)) in start_creating()
356 dput(dentry); in start_creating()
357 dentry = ERR_PTR(-EEXIST); in start_creating()
360 if (IS_ERR(dentry)) { in start_creating()
365 return dentry; in start_creating()
368 static struct dentry *failed_creating(struct dentry *dentry) in failed_creating() argument
370 inode_unlock(d_inode(dentry->d_parent)); in failed_creating()
371 dput(dentry); in failed_creating()
376 static struct dentry *end_creating(struct dentry *dentry) in end_creating() argument
378 inode_unlock(d_inode(dentry->d_parent)); in end_creating()
379 return dentry; in end_creating()
382 static struct dentry *__debugfs_create_file(const char *name, umode_t mode, in __debugfs_create_file()
383 struct dentry *parent, void *data, in __debugfs_create_file()
387 struct dentry *dentry; in __debugfs_create_file() local
393 dentry = start_creating(name, parent); in __debugfs_create_file()
395 if (IS_ERR(dentry)) in __debugfs_create_file()
396 return dentry; in __debugfs_create_file()
399 failed_creating(dentry); in __debugfs_create_file()
403 inode = debugfs_get_inode(dentry->d_sb); in __debugfs_create_file()
407 return failed_creating(dentry); in __debugfs_create_file()
415 dentry->d_fsdata = (void *)((unsigned long)real_fops | in __debugfs_create_file()
418 d_instantiate(dentry, inode); in __debugfs_create_file()
419 fsnotify_create(d_inode(dentry->d_parent), dentry); in __debugfs_create_file()
420 return end_creating(dentry); in __debugfs_create_file()
450 struct dentry *debugfs_create_file(const char *name, umode_t mode, in debugfs_create_file()
451 struct dentry *parent, void *data, in debugfs_create_file()
489 struct dentry *debugfs_create_file_unsafe(const char *name, umode_t mode, in debugfs_create_file_unsafe()
490 struct dentry *parent, void *data, in debugfs_create_file_unsafe()
521 struct dentry *parent, void *data, in debugfs_create_file_size()
525 struct dentry *de = debugfs_create_file(name, mode, parent, data, fops); in debugfs_create_file_size()
551 struct dentry *debugfs_create_dir(const char *name, struct dentry *parent) in debugfs_create_dir()
553 struct dentry *dentry = start_creating(name, parent); in debugfs_create_dir() local
556 if (IS_ERR(dentry)) in debugfs_create_dir()
557 return dentry; in debugfs_create_dir()
560 failed_creating(dentry); in debugfs_create_dir()
564 inode = debugfs_get_inode(dentry->d_sb); in debugfs_create_dir()
568 return failed_creating(dentry); in debugfs_create_dir()
577 d_instantiate(dentry, inode); in debugfs_create_dir()
578 inc_nlink(d_inode(dentry->d_parent)); in debugfs_create_dir()
579 fsnotify_mkdir(d_inode(dentry->d_parent), dentry); in debugfs_create_dir()
580 return end_creating(dentry); in debugfs_create_dir()
595 struct dentry *debugfs_create_automount(const char *name, in debugfs_create_automount()
596 struct dentry *parent, in debugfs_create_automount()
600 struct dentry *dentry = start_creating(name, parent); in debugfs_create_automount() local
603 if (IS_ERR(dentry)) in debugfs_create_automount()
604 return dentry; in debugfs_create_automount()
607 failed_creating(dentry); in debugfs_create_automount()
611 inode = debugfs_get_inode(dentry->d_sb); in debugfs_create_automount()
615 return failed_creating(dentry); in debugfs_create_automount()
621 dentry->d_fsdata = (void *)f; in debugfs_create_automount()
624 d_instantiate(dentry, inode); in debugfs_create_automount()
625 inc_nlink(d_inode(dentry->d_parent)); in debugfs_create_automount()
626 fsnotify_mkdir(d_inode(dentry->d_parent), dentry); in debugfs_create_automount()
627 return end_creating(dentry); in debugfs_create_automount()
654 struct dentry *debugfs_create_symlink(const char *name, struct dentry *parent, in debugfs_create_symlink()
657 struct dentry *dentry; in debugfs_create_symlink() local
663 dentry = start_creating(name, parent); in debugfs_create_symlink()
664 if (IS_ERR(dentry)) { in debugfs_create_symlink()
666 return dentry; in debugfs_create_symlink()
669 inode = debugfs_get_inode(dentry->d_sb); in debugfs_create_symlink()
674 return failed_creating(dentry); in debugfs_create_symlink()
679 d_instantiate(dentry, inode); in debugfs_create_symlink()
680 return end_creating(dentry); in debugfs_create_symlink()
684 static void __debugfs_file_removed(struct dentry *dentry) in __debugfs_file_removed() argument
695 fsd = READ_ONCE(dentry->d_fsdata); in __debugfs_file_removed()
702 static void remove_one(struct dentry *victim) in remove_one()
722 void debugfs_remove(struct dentry *dentry) in debugfs_remove() argument
724 if (IS_ERR_OR_NULL(dentry)) in debugfs_remove()
728 simple_recursive_removal(dentry, remove_one); in debugfs_remove()
742 void debugfs_lookup_and_remove(const char *name, struct dentry *parent) in debugfs_lookup_and_remove()
744 struct dentry *dentry; in debugfs_lookup_and_remove() local
746 dentry = debugfs_lookup(name, parent); in debugfs_lookup_and_remove()
747 if (!dentry) in debugfs_lookup_and_remove()
750 debugfs_remove(dentry); in debugfs_lookup_and_remove()
751 dput(dentry); in debugfs_lookup_and_remove()
774 struct dentry *debugfs_rename(struct dentry *old_dir, struct dentry *old_dentry, in debugfs_rename()
775 struct dentry *new_dir, const char *new_name) in debugfs_rename()
778 struct dentry *dentry = NULL, *trap; in debugfs_rename() local
796 dentry = lookup_one_len(new_name, new_dir, strlen(new_name)); in debugfs_rename()
798 if (IS_ERR(dentry) || dentry == trap || d_really_is_positive(dentry)) in debugfs_rename()
804 dentry, 0); in debugfs_rename()
809 d_move(old_dentry, dentry); in debugfs_rename()
815 dput(dentry); in debugfs_rename()
818 if (dentry && !IS_ERR(dentry)) in debugfs_rename()
819 dput(dentry); in debugfs_rename()
821 if (IS_ERR(dentry)) in debugfs_rename()
822 return dentry; in debugfs_rename()