Lines Matching refs:dentry
15 struct dentry *, const char *);
16 static int autofs_dir_unlink(struct inode *, struct dentry *);
17 static int autofs_dir_rmdir(struct inode *, struct dentry *);
18 static struct dentry *autofs_dir_mkdir(struct mnt_idmap *, struct inode *,
19 struct dentry *, umode_t);
26 static struct dentry *autofs_lookup(struct inode *,
27 struct dentry *, unsigned int);
30 static void autofs_dentry_release(struct dentry *);
67 static void autofs_del_active(struct dentry *dentry) in autofs_del_active() argument
69 struct autofs_sb_info *sbi = autofs_sbi(dentry->d_sb); in autofs_del_active()
72 ino = autofs_dentry_ino(dentry); in autofs_del_active()
80 struct dentry *dentry = file->f_path.dentry; in autofs_dir_open() local
81 struct autofs_sb_info *sbi = autofs_sbi(dentry->d_sb); in autofs_dir_open()
82 struct autofs_info *ino = autofs_dentry_ino(dentry); in autofs_dir_open()
84 pr_debug("file=%p dentry=%p %pd\n", file, dentry, dentry); in autofs_dir_open()
109 static void autofs_dentry_release(struct dentry *de) in autofs_dentry_release()
131 static struct dentry *autofs_lookup_active(struct dentry *dentry) in autofs_lookup_active() argument
133 struct autofs_sb_info *sbi = autofs_sbi(dentry->d_sb); in autofs_lookup_active()
134 struct dentry *parent = dentry->d_parent; in autofs_lookup_active()
135 const struct qstr *name = &dentry->d_name; in autofs_lookup_active()
147 struct dentry *active; in autofs_lookup_active()
151 active = ino->dentry; in autofs_lookup_active()
185 static struct dentry *autofs_lookup_expiring(struct dentry *dentry, in autofs_lookup_expiring() argument
188 struct autofs_sb_info *sbi = autofs_sbi(dentry->d_sb); in autofs_lookup_expiring()
189 struct dentry *parent = dentry->d_parent; in autofs_lookup_expiring()
190 const struct qstr *name = &dentry->d_name; in autofs_lookup_expiring()
202 struct dentry *expiring; in autofs_lookup_expiring()
211 expiring = ino->dentry; in autofs_lookup_expiring()
247 struct autofs_sb_info *sbi = autofs_sbi(path->dentry->d_sb); in autofs_mount_wait()
248 struct autofs_info *ino = autofs_dentry_ino(path->dentry); in autofs_mount_wait()
254 pr_debug("waiting for mount name=%pd\n", path->dentry); in autofs_mount_wait()
267 struct dentry *dentry = path->dentry; in do_expire_wait() local
268 struct dentry *expiring; in do_expire_wait()
270 expiring = autofs_lookup_expiring(dentry, rcu_walk); in do_expire_wait()
276 const struct path this = { .mnt = path->mnt, .dentry = expiring }; in do_expire_wait()
289 static struct dentry *autofs_mountpoint_changed(struct path *path) in autofs_mountpoint_changed()
291 struct dentry *dentry = path->dentry; in autofs_mountpoint_changed() local
292 struct autofs_sb_info *sbi = autofs_sbi(dentry->d_sb); in autofs_mountpoint_changed()
315 if (autofs_type_indirect(sbi->type) && d_unhashed(dentry)) { in autofs_mountpoint_changed()
316 struct dentry *parent = dentry->d_parent; in autofs_mountpoint_changed()
318 struct dentry *new; in autofs_mountpoint_changed()
320 new = d_lookup(parent, &dentry->d_name); in autofs_mountpoint_changed()
325 dput(path->dentry); in autofs_mountpoint_changed()
326 path->dentry = new; in autofs_mountpoint_changed()
328 return path->dentry; in autofs_mountpoint_changed()
333 struct dentry *dentry = path->dentry; in autofs_d_automount() local
334 struct autofs_sb_info *sbi = autofs_sbi(dentry->d_sb); in autofs_d_automount()
335 struct autofs_info *ino = autofs_dentry_ino(dentry); in autofs_d_automount()
338 pr_debug("dentry=%p %pd\n", dentry, dentry); in autofs_d_automount()
379 if (d_really_is_positive(dentry) && d_is_symlink(dentry)) { in autofs_d_automount()
420 dentry = autofs_mountpoint_changed(path); in autofs_d_automount()
421 if (!dentry) in autofs_d_automount()
429 struct dentry *dentry = path->dentry; in autofs_d_manage() local
430 struct autofs_sb_info *sbi = autofs_sbi(dentry->d_sb); in autofs_d_manage()
431 struct autofs_info *ino = autofs_dentry_ino(dentry); in autofs_d_manage()
434 pr_debug("dentry=%p %pd\n", dentry, dentry); in autofs_d_manage()
468 inode = d_inode_rcu(dentry); in autofs_d_manage()
492 (d_really_is_positive(dentry) && d_is_symlink(dentry))) in autofs_d_manage()
501 static struct dentry *autofs_lookup(struct inode *dir, in autofs_lookup()
502 struct dentry *dentry, unsigned int flags) in autofs_lookup() argument
506 struct dentry *active; in autofs_lookup()
508 pr_debug("name = %pd\n", dentry); in autofs_lookup()
511 if (dentry->d_name.len > NAME_MAX) in autofs_lookup()
521 active = autofs_lookup_active(dentry); in autofs_lookup()
531 if (!autofs_oz_mode(sbi) && !IS_ROOT(dentry->d_parent)) in autofs_lookup()
539 spin_lock(&dentry->d_lock); in autofs_lookup()
541 if (IS_ROOT(dentry->d_parent) && in autofs_lookup()
543 __managed_dentry_set_managed(dentry); in autofs_lookup()
544 dentry->d_fsdata = ino; in autofs_lookup()
545 ino->dentry = dentry; in autofs_lookup()
549 spin_unlock(&dentry->d_lock); in autofs_lookup()
575 struct inode *dir, struct dentry *dentry, in autofs_dir_symlink() argument
578 struct autofs_info *ino = autofs_dentry_ino(dentry); in autofs_dir_symlink()
584 pr_debug("%s <- %pd\n", symname, dentry); in autofs_dir_symlink()
590 autofs_del_active(dentry); in autofs_dir_symlink()
606 d_make_persistent(dentry, inode); in autofs_dir_symlink()
607 p_ino = autofs_dentry_ino(dentry->d_parent); in autofs_dir_symlink()
630 static int autofs_dir_unlink(struct inode *dir, struct dentry *dentry) in autofs_dir_unlink() argument
635 p_ino = autofs_dentry_ino(dentry->d_parent); in autofs_dir_unlink()
637 d_make_discardable(dentry); in autofs_dir_unlink()
639 d_inode(dentry)->i_size = 0; in autofs_dir_unlink()
640 clear_nlink(d_inode(dentry)); in autofs_dir_unlink()
645 __autofs_add_expiring(dentry); in autofs_dir_unlink()
646 d_drop(dentry); in autofs_dir_unlink()
663 static void autofs_set_leaf_automount_flags(struct dentry *dentry) in autofs_set_leaf_automount_flags() argument
665 struct dentry *parent; in autofs_set_leaf_automount_flags()
668 if (IS_ROOT(dentry->d_parent)) in autofs_set_leaf_automount_flags()
671 managed_dentry_set_managed(dentry); in autofs_set_leaf_automount_flags()
673 parent = dentry->d_parent; in autofs_set_leaf_automount_flags()
680 static void autofs_clear_leaf_automount_flags(struct dentry *dentry) in autofs_clear_leaf_automount_flags() argument
682 struct dentry *parent; in autofs_clear_leaf_automount_flags()
685 if (IS_ROOT(dentry->d_parent)) in autofs_clear_leaf_automount_flags()
688 managed_dentry_clear_managed(dentry); in autofs_clear_leaf_automount_flags()
690 parent = dentry->d_parent; in autofs_clear_leaf_automount_flags()
698 static int autofs_dir_rmdir(struct inode *dir, struct dentry *dentry) in autofs_dir_rmdir() argument
701 struct autofs_info *ino = autofs_dentry_ino(dentry); in autofs_dir_rmdir()
704 pr_debug("dentry %p, removing %pd\n", dentry, dentry); in autofs_dir_rmdir()
710 __autofs_add_expiring(dentry); in autofs_dir_rmdir()
711 d_drop(dentry); in autofs_dir_rmdir()
715 autofs_clear_leaf_automount_flags(dentry); in autofs_dir_rmdir()
717 p_ino = autofs_dentry_ino(dentry->d_parent); in autofs_dir_rmdir()
719 d_make_discardable(dentry); in autofs_dir_rmdir()
720 d_inode(dentry)->i_size = 0; in autofs_dir_rmdir()
721 clear_nlink(d_inode(dentry)); in autofs_dir_rmdir()
729 static struct dentry *autofs_dir_mkdir(struct mnt_idmap *idmap, in autofs_dir_mkdir()
730 struct inode *dir, struct dentry *dentry, in autofs_dir_mkdir() argument
734 struct autofs_info *ino = autofs_dentry_ino(dentry); in autofs_dir_mkdir()
738 pr_debug("dentry %p, creating %pd\n", dentry, dentry); in autofs_dir_mkdir()
744 autofs_del_active(dentry); in autofs_dir_mkdir()
751 autofs_set_leaf_automount_flags(dentry); in autofs_dir_mkdir()
753 d_make_persistent(dentry, inode); in autofs_dir_mkdir()
754 p_ino = autofs_dentry_ino(dentry->d_parent); in autofs_dir_mkdir()
848 int is_autofs_dentry(struct dentry *dentry) in is_autofs_dentry() argument
850 return dentry && d_really_is_positive(dentry) && in is_autofs_dentry()
851 dentry->d_op == &autofs_dentry_operations && in is_autofs_dentry()
852 dentry->d_fsdata != NULL; in is_autofs_dentry()