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
343 dentry = ERR_PTR(-ENOENT); in start_creating()
345 dentry = lookup_one_len(name, parent, strlen(name)); in start_creating()
346 if (!IS_ERR(dentry) && d_really_is_positive(dentry)) { in start_creating()
347 if (d_is_dir(dentry)) in start_creating()
353 dput(dentry); in start_creating()
354 dentry = ERR_PTR(-EEXIST); in start_creating()
357 if (IS_ERR(dentry)) { in start_creating()
362 return dentry; in start_creating()
365 static struct dentry *failed_creating(struct dentry *dentry) in failed_creating() argument
367 inode_unlock(d_inode(dentry->d_parent)); in failed_creating()
368 dput(dentry); in failed_creating()
373 static struct dentry *end_creating(struct dentry *dentry) in end_creating() argument
375 inode_unlock(d_inode(dentry->d_parent)); in end_creating()
376 return dentry; in end_creating()
379 static struct dentry *__debugfs_create_file(const char *name, umode_t mode, in __debugfs_create_file()
380 struct dentry *parent, void *data, in __debugfs_create_file()
384 struct dentry *dentry; in __debugfs_create_file() local
390 dentry = start_creating(name, parent); in __debugfs_create_file()
392 if (IS_ERR(dentry)) in __debugfs_create_file()
393 return dentry; in __debugfs_create_file()
396 failed_creating(dentry); in __debugfs_create_file()
400 inode = debugfs_get_inode(dentry->d_sb); in __debugfs_create_file()
404 return failed_creating(dentry); in __debugfs_create_file()
412 dentry->d_fsdata = (void *)((unsigned long)real_fops | in __debugfs_create_file()
415 d_instantiate(dentry, inode); in __debugfs_create_file()
416 fsnotify_create(d_inode(dentry->d_parent), dentry); in __debugfs_create_file()
417 return end_creating(dentry); in __debugfs_create_file()
447 struct dentry *debugfs_create_file(const char *name, umode_t mode, in debugfs_create_file()
448 struct dentry *parent, void *data, in debugfs_create_file()
486 struct dentry *debugfs_create_file_unsafe(const char *name, umode_t mode, in debugfs_create_file_unsafe()
487 struct dentry *parent, void *data, in debugfs_create_file_unsafe()
518 struct dentry *parent, void *data, in debugfs_create_file_size()
522 struct dentry *de = debugfs_create_file(name, mode, parent, data, fops); in debugfs_create_file_size()
548 struct dentry *debugfs_create_dir(const char *name, struct dentry *parent) in debugfs_create_dir()
550 struct dentry *dentry = start_creating(name, parent); in debugfs_create_dir() local
553 if (IS_ERR(dentry)) in debugfs_create_dir()
554 return dentry; in debugfs_create_dir()
557 failed_creating(dentry); in debugfs_create_dir()
561 inode = debugfs_get_inode(dentry->d_sb); in debugfs_create_dir()
565 return failed_creating(dentry); in debugfs_create_dir()
574 d_instantiate(dentry, inode); in debugfs_create_dir()
575 inc_nlink(d_inode(dentry->d_parent)); in debugfs_create_dir()
576 fsnotify_mkdir(d_inode(dentry->d_parent), dentry); in debugfs_create_dir()
577 return end_creating(dentry); in debugfs_create_dir()
592 struct dentry *debugfs_create_automount(const char *name, in debugfs_create_automount()
593 struct dentry *parent, in debugfs_create_automount()
597 struct dentry *dentry = start_creating(name, parent); in debugfs_create_automount() local
600 if (IS_ERR(dentry)) in debugfs_create_automount()
601 return dentry; in debugfs_create_automount()
604 failed_creating(dentry); in debugfs_create_automount()
608 inode = debugfs_get_inode(dentry->d_sb); in debugfs_create_automount()
612 return failed_creating(dentry); in debugfs_create_automount()
618 dentry->d_fsdata = (void *)f; in debugfs_create_automount()
621 d_instantiate(dentry, inode); in debugfs_create_automount()
622 inc_nlink(d_inode(dentry->d_parent)); in debugfs_create_automount()
623 fsnotify_mkdir(d_inode(dentry->d_parent), dentry); in debugfs_create_automount()
624 return end_creating(dentry); in debugfs_create_automount()
651 struct dentry *debugfs_create_symlink(const char *name, struct dentry *parent, in debugfs_create_symlink()
654 struct dentry *dentry; in debugfs_create_symlink() local
660 dentry = start_creating(name, parent); in debugfs_create_symlink()
661 if (IS_ERR(dentry)) { in debugfs_create_symlink()
663 return dentry; in debugfs_create_symlink()
666 inode = debugfs_get_inode(dentry->d_sb); in debugfs_create_symlink()
671 return failed_creating(dentry); in debugfs_create_symlink()
676 d_instantiate(dentry, inode); in debugfs_create_symlink()
677 return end_creating(dentry); in debugfs_create_symlink()
681 static void __debugfs_file_removed(struct dentry *dentry) in __debugfs_file_removed() argument
692 fsd = READ_ONCE(dentry->d_fsdata); in __debugfs_file_removed()
699 static void remove_one(struct dentry *victim) in remove_one()
719 void debugfs_remove(struct dentry *dentry) in debugfs_remove() argument
721 if (IS_ERR_OR_NULL(dentry)) in debugfs_remove()
725 simple_recursive_removal(dentry, remove_one); in debugfs_remove()
749 struct dentry *debugfs_rename(struct dentry *old_dir, struct dentry *old_dentry, in debugfs_rename()
750 struct dentry *new_dir, const char *new_name) in debugfs_rename()
753 struct dentry *dentry = NULL, *trap; in debugfs_rename() local
771 dentry = lookup_one_len(new_name, new_dir, strlen(new_name)); in debugfs_rename()
773 if (IS_ERR(dentry) || dentry == trap || d_really_is_positive(dentry)) in debugfs_rename()
779 dentry, 0); in debugfs_rename()
784 d_move(old_dentry, dentry); in debugfs_rename()
790 dput(dentry); in debugfs_rename()
793 if (dentry && !IS_ERR(dentry)) in debugfs_rename()
794 dput(dentry); in debugfs_rename()
796 if (IS_ERR(dentry)) in debugfs_rename()
797 return dentry; in debugfs_rename()