Lines Matching refs:dentry

14 			      struct dentry *, const char *);
15 static int autofs_dir_unlink(struct inode *, struct dentry *);
16 static int autofs_dir_rmdir(struct inode *, struct dentry *);
18 struct dentry *, umode_t);
25 static struct dentry *autofs_lookup(struct inode *,
26 struct dentry *, unsigned int);
29 static void autofs_dentry_release(struct dentry *);
65 static void autofs_del_active(struct dentry *dentry) in autofs_del_active() argument
67 struct autofs_sb_info *sbi = autofs_sbi(dentry->d_sb); in autofs_del_active()
70 ino = autofs_dentry_ino(dentry); in autofs_del_active()
78 struct dentry *dentry = file->f_path.dentry; in autofs_dir_open() local
79 struct autofs_sb_info *sbi = autofs_sbi(dentry->d_sb); in autofs_dir_open()
81 pr_debug("file=%p dentry=%p %pd\n", file, dentry, dentry); in autofs_dir_open()
96 if (!path_is_mountpoint(&file->f_path) && simple_empty(dentry)) { in autofs_dir_open()
106 static void autofs_dentry_release(struct dentry *de) in autofs_dentry_release()
128 static struct dentry *autofs_lookup_active(struct dentry *dentry) in autofs_lookup_active() argument
130 struct autofs_sb_info *sbi = autofs_sbi(dentry->d_sb); in autofs_lookup_active()
131 struct dentry *parent = dentry->d_parent; in autofs_lookup_active()
132 const struct qstr *name = &dentry->d_name; in autofs_lookup_active()
144 struct dentry *active; in autofs_lookup_active()
148 active = ino->dentry; in autofs_lookup_active()
182 static struct dentry *autofs_lookup_expiring(struct dentry *dentry, in autofs_lookup_expiring() argument
185 struct autofs_sb_info *sbi = autofs_sbi(dentry->d_sb); in autofs_lookup_expiring()
186 struct dentry *parent = dentry->d_parent; in autofs_lookup_expiring()
187 const struct qstr *name = &dentry->d_name; in autofs_lookup_expiring()
199 struct dentry *expiring; in autofs_lookup_expiring()
208 expiring = ino->dentry; in autofs_lookup_expiring()
244 struct autofs_sb_info *sbi = autofs_sbi(path->dentry->d_sb); in autofs_mount_wait()
245 struct autofs_info *ino = autofs_dentry_ino(path->dentry); in autofs_mount_wait()
251 pr_debug("waiting for mount name=%pd\n", path->dentry); in autofs_mount_wait()
264 struct dentry *dentry = path->dentry; in do_expire_wait() local
265 struct dentry *expiring; in do_expire_wait()
267 expiring = autofs_lookup_expiring(dentry, rcu_walk); in do_expire_wait()
273 const struct path this = { .mnt = path->mnt, .dentry = expiring }; in do_expire_wait()
286 static struct dentry *autofs_mountpoint_changed(struct path *path) in autofs_mountpoint_changed()
288 struct dentry *dentry = path->dentry; in autofs_mountpoint_changed() local
289 struct autofs_sb_info *sbi = autofs_sbi(dentry->d_sb); in autofs_mountpoint_changed()
295 if (autofs_type_indirect(sbi->type) && d_unhashed(dentry)) { in autofs_mountpoint_changed()
296 struct dentry *parent = dentry->d_parent; in autofs_mountpoint_changed()
298 struct dentry *new; in autofs_mountpoint_changed()
300 new = d_lookup(parent, &dentry->d_name); in autofs_mountpoint_changed()
305 dput(path->dentry); in autofs_mountpoint_changed()
306 path->dentry = new; in autofs_mountpoint_changed()
308 return path->dentry; in autofs_mountpoint_changed()
313 struct dentry *dentry = path->dentry; in autofs_d_automount() local
314 struct autofs_sb_info *sbi = autofs_sbi(dentry->d_sb); in autofs_d_automount()
315 struct autofs_info *ino = autofs_dentry_ino(dentry); in autofs_d_automount()
318 pr_debug("dentry=%p %pd\n", dentry, dentry); in autofs_d_automount()
351 if (d_really_is_positive(dentry) && d_is_symlink(dentry)) { in autofs_d_automount()
374 if (!simple_empty(dentry)) { in autofs_d_automount()
392 dentry = autofs_mountpoint_changed(path); in autofs_d_automount()
393 if (!dentry) in autofs_d_automount()
401 struct dentry *dentry = path->dentry; in autofs_d_manage() local
402 struct autofs_sb_info *sbi = autofs_sbi(dentry->d_sb); in autofs_d_manage()
403 struct autofs_info *ino = autofs_dentry_ino(dentry); in autofs_d_manage()
406 pr_debug("dentry=%p %pd\n", dentry, dentry); in autofs_d_manage()
441 inode = d_inode_rcu(dentry); in autofs_d_manage()
444 if (list_empty(&dentry->d_subdirs)) in autofs_d_manage()
446 if (!simple_empty(dentry)) in autofs_d_manage()
466 if ((!path_is_mountpoint(path) && !simple_empty(dentry)) || in autofs_d_manage()
467 (d_really_is_positive(dentry) && d_is_symlink(dentry))) in autofs_d_manage()
476 static struct dentry *autofs_lookup(struct inode *dir, in autofs_lookup()
477 struct dentry *dentry, unsigned int flags) in autofs_lookup() argument
481 struct dentry *active; in autofs_lookup()
483 pr_debug("name = %pd\n", dentry); in autofs_lookup()
486 if (dentry->d_name.len > NAME_MAX) in autofs_lookup()
496 active = autofs_lookup_active(dentry); in autofs_lookup()
506 if (!autofs_oz_mode(sbi) && !IS_ROOT(dentry->d_parent)) in autofs_lookup()
514 spin_lock(&dentry->d_lock); in autofs_lookup()
516 if (IS_ROOT(dentry->d_parent) && in autofs_lookup()
518 __managed_dentry_set_managed(dentry); in autofs_lookup()
519 dentry->d_fsdata = ino; in autofs_lookup()
520 ino->dentry = dentry; in autofs_lookup()
524 spin_unlock(&dentry->d_lock); in autofs_lookup()
530 struct inode *dir, struct dentry *dentry, in autofs_dir_symlink() argument
534 struct autofs_info *ino = autofs_dentry_ino(dentry); in autofs_dir_symlink()
540 pr_debug("%s <- %pd\n", symname, dentry); in autofs_dir_symlink()
556 autofs_del_active(dentry); in autofs_dir_symlink()
571 d_add(dentry, inode); in autofs_dir_symlink()
573 dget(dentry); in autofs_dir_symlink()
575 p_ino = autofs_dentry_ino(dentry->d_parent); in autofs_dir_symlink()
598 static int autofs_dir_unlink(struct inode *dir, struct dentry *dentry) in autofs_dir_unlink() argument
601 struct autofs_info *ino = autofs_dentry_ino(dentry); in autofs_dir_unlink()
615 p_ino = autofs_dentry_ino(dentry->d_parent); in autofs_dir_unlink()
617 dput(ino->dentry); in autofs_dir_unlink()
619 d_inode(dentry)->i_size = 0; in autofs_dir_unlink()
620 clear_nlink(d_inode(dentry)); in autofs_dir_unlink()
625 __autofs_add_expiring(dentry); in autofs_dir_unlink()
626 d_drop(dentry); in autofs_dir_unlink()
643 static void autofs_set_leaf_automount_flags(struct dentry *dentry) in autofs_set_leaf_automount_flags() argument
645 struct dentry *parent; in autofs_set_leaf_automount_flags()
648 if (IS_ROOT(dentry->d_parent)) in autofs_set_leaf_automount_flags()
651 managed_dentry_set_managed(dentry); in autofs_set_leaf_automount_flags()
653 parent = dentry->d_parent; in autofs_set_leaf_automount_flags()
660 static void autofs_clear_leaf_automount_flags(struct dentry *dentry) in autofs_clear_leaf_automount_flags() argument
662 struct dentry *parent; in autofs_clear_leaf_automount_flags()
665 if (IS_ROOT(dentry->d_parent)) in autofs_clear_leaf_automount_flags()
668 managed_dentry_clear_managed(dentry); in autofs_clear_leaf_automount_flags()
670 parent = dentry->d_parent; in autofs_clear_leaf_automount_flags()
678 static int autofs_dir_rmdir(struct inode *dir, struct dentry *dentry) in autofs_dir_rmdir() argument
681 struct autofs_info *ino = autofs_dentry_ino(dentry); in autofs_dir_rmdir()
684 pr_debug("dentry %p, removing %pd\n", dentry, dentry); in autofs_dir_rmdir()
700 __autofs_add_expiring(dentry); in autofs_dir_rmdir()
701 d_drop(dentry); in autofs_dir_rmdir()
705 autofs_clear_leaf_automount_flags(dentry); in autofs_dir_rmdir()
708 p_ino = autofs_dentry_ino(dentry->d_parent); in autofs_dir_rmdir()
710 dput(ino->dentry); in autofs_dir_rmdir()
711 d_inode(dentry)->i_size = 0; in autofs_dir_rmdir()
712 clear_nlink(d_inode(dentry)); in autofs_dir_rmdir()
721 struct inode *dir, struct dentry *dentry, in autofs_dir_mkdir() argument
725 struct autofs_info *ino = autofs_dentry_ino(dentry); in autofs_dir_mkdir()
739 pr_debug("dentry %p, creating %pd\n", dentry, dentry); in autofs_dir_mkdir()
745 autofs_del_active(dentry); in autofs_dir_mkdir()
750 d_add(dentry, inode); in autofs_dir_mkdir()
753 autofs_set_leaf_automount_flags(dentry); in autofs_dir_mkdir()
755 dget(dentry); in autofs_dir_mkdir()
757 p_ino = autofs_dentry_ino(dentry->d_parent); in autofs_dir_mkdir()
851 int is_autofs_dentry(struct dentry *dentry) in is_autofs_dentry() argument
853 return dentry && d_really_is_positive(dentry) && in is_autofs_dentry()
854 dentry->d_op == &autofs_dentry_operations && in is_autofs_dentry()
855 dentry->d_fsdata != NULL; in is_autofs_dentry()