Lines Matching refs:dentry

150 static int debugfs_show_options(struct seq_file *m, struct dentry *root)  in debugfs_show_options()
185 f = (struct vfsmount *(*)(void *))path->dentry->d_fsdata; in debugfs_automount()
186 return f(d_inode(path->dentry)->i_private); in debugfs_automount()
230 static struct dentry *debug_mount(struct file_system_type *fs_type, in debug_mount()
245 static struct dentry *start_creating(const char *name, struct dentry *parent) in start_creating()
247 struct dentry *dentry; in start_creating() local
269 dentry = lookup_one_len(name, parent, strlen(name)); in start_creating()
270 if (!IS_ERR(dentry) && d_really_is_positive(dentry)) { in start_creating()
271 dput(dentry); in start_creating()
272 dentry = ERR_PTR(-EEXIST); in start_creating()
275 if (IS_ERR(dentry)) { in start_creating()
280 return dentry; in start_creating()
283 static struct dentry *failed_creating(struct dentry *dentry) in failed_creating() argument
285 mutex_unlock(&d_inode(dentry->d_parent)->i_mutex); in failed_creating()
286 dput(dentry); in failed_creating()
291 static struct dentry *end_creating(struct dentry *dentry) in end_creating() argument
293 mutex_unlock(&d_inode(dentry->d_parent)->i_mutex); in end_creating()
294 return dentry; in end_creating()
323 struct dentry *debugfs_create_file(const char *name, umode_t mode, in debugfs_create_file()
324 struct dentry *parent, void *data, in debugfs_create_file()
327 struct dentry *dentry; in debugfs_create_file() local
333 dentry = start_creating(name, parent); in debugfs_create_file()
335 if (IS_ERR(dentry)) in debugfs_create_file()
338 inode = debugfs_get_inode(dentry->d_sb); in debugfs_create_file()
340 return failed_creating(dentry); in debugfs_create_file()
345 d_instantiate(dentry, inode); in debugfs_create_file()
346 fsnotify_create(d_inode(dentry->d_parent), dentry); in debugfs_create_file()
347 return end_creating(dentry); in debugfs_create_file()
378 struct dentry *debugfs_create_file_size(const char *name, umode_t mode, in debugfs_create_file_size()
379 struct dentry *parent, void *data, in debugfs_create_file_size()
383 struct dentry *de = debugfs_create_file(name, mode, parent, data, fops); in debugfs_create_file_size()
409 struct dentry *debugfs_create_dir(const char *name, struct dentry *parent) in debugfs_create_dir()
411 struct dentry *dentry = start_creating(name, parent); in debugfs_create_dir() local
414 if (IS_ERR(dentry)) in debugfs_create_dir()
417 inode = debugfs_get_inode(dentry->d_sb); in debugfs_create_dir()
419 return failed_creating(dentry); in debugfs_create_dir()
427 d_instantiate(dentry, inode); in debugfs_create_dir()
428 inc_nlink(d_inode(dentry->d_parent)); in debugfs_create_dir()
429 fsnotify_mkdir(d_inode(dentry->d_parent), dentry); in debugfs_create_dir()
430 return end_creating(dentry); in debugfs_create_dir()
445 struct dentry *debugfs_create_automount(const char *name, in debugfs_create_automount()
446 struct dentry *parent, in debugfs_create_automount()
450 struct dentry *dentry = start_creating(name, parent); in debugfs_create_automount() local
453 if (IS_ERR(dentry)) in debugfs_create_automount()
456 inode = debugfs_get_inode(dentry->d_sb); in debugfs_create_automount()
458 return failed_creating(dentry); in debugfs_create_automount()
463 dentry->d_fsdata = (void *)f; in debugfs_create_automount()
464 d_instantiate(dentry, inode); in debugfs_create_automount()
465 return end_creating(dentry); in debugfs_create_automount()
492 struct dentry *debugfs_create_symlink(const char *name, struct dentry *parent, in debugfs_create_symlink()
495 struct dentry *dentry; in debugfs_create_symlink() local
501 dentry = start_creating(name, parent); in debugfs_create_symlink()
502 if (IS_ERR(dentry)) { in debugfs_create_symlink()
507 inode = debugfs_get_inode(dentry->d_sb); in debugfs_create_symlink()
510 return failed_creating(dentry); in debugfs_create_symlink()
515 d_instantiate(dentry, inode); in debugfs_create_symlink()
516 return end_creating(dentry); in debugfs_create_symlink()
520 static int __debugfs_remove(struct dentry *dentry, struct dentry *parent) in __debugfs_remove() argument
524 if (simple_positive(dentry)) { in __debugfs_remove()
525 dget(dentry); in __debugfs_remove()
526 if (d_is_dir(dentry)) in __debugfs_remove()
527 ret = simple_rmdir(d_inode(parent), dentry); in __debugfs_remove()
529 simple_unlink(d_inode(parent), dentry); in __debugfs_remove()
531 d_delete(dentry); in __debugfs_remove()
532 dput(dentry); in __debugfs_remove()
551 void debugfs_remove(struct dentry *dentry) in debugfs_remove() argument
553 struct dentry *parent; in debugfs_remove()
556 if (IS_ERR_OR_NULL(dentry)) in debugfs_remove()
559 parent = dentry->d_parent; in debugfs_remove()
564 ret = __debugfs_remove(dentry, parent); in debugfs_remove()
584 void debugfs_remove_recursive(struct dentry *dentry) in debugfs_remove_recursive() argument
586 struct dentry *child, *parent; in debugfs_remove_recursive()
588 if (IS_ERR_OR_NULL(dentry)) in debugfs_remove_recursive()
591 parent = dentry->d_parent; in debugfs_remove_recursive()
595 parent = dentry; in debugfs_remove_recursive()
638 if (child != dentry) in debugfs_remove_recursive()
667 struct dentry *debugfs_rename(struct dentry *old_dir, struct dentry *old_dentry, in debugfs_rename()
668 struct dentry *new_dir, const char *new_name) in debugfs_rename()
671 struct dentry *dentry = NULL, *trap; in debugfs_rename() local
682 dentry = lookup_one_len(new_name, new_dir, strlen(new_name)); in debugfs_rename()
684 if (IS_ERR(dentry) || dentry == trap || d_really_is_positive(dentry)) in debugfs_rename()
690 dentry); in debugfs_rename()
695 d_move(old_dentry, dentry); in debugfs_rename()
701 dput(dentry); in debugfs_rename()
704 if (dentry && !IS_ERR(dentry)) in debugfs_rename()
705 dput(dentry); in debugfs_rename()