Lines Matching refs:dentry

22 static struct dentry *afs_lookup(struct inode *dir, struct dentry *dentry,
26 static int afs_d_revalidate(struct dentry *dentry, unsigned int flags);
27 static int afs_d_delete(const struct dentry *dentry);
28 static void afs_d_release(struct dentry *dentry);
31 static int afs_create(struct inode *dir, struct dentry *dentry, umode_t mode,
33 static int afs_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode);
34 static int afs_rmdir(struct inode *dir, struct dentry *dentry);
35 static int afs_unlink(struct inode *dir, struct dentry *dentry);
36 static int afs_link(struct dentry *from, struct inode *dir,
37 struct dentry *dentry);
38 static int afs_symlink(struct inode *dir, struct dentry *dentry,
40 static int afs_rename(struct inode *old_dir, struct dentry *old_dentry,
41 struct inode *new_dir, struct dentry *new_dentry);
426 static int afs_do_lookup(struct inode *dir, struct dentry *dentry, in afs_do_lookup() argument
432 .name = dentry->d_name, in afs_do_lookup()
437 _enter("{%lu},%p{%pd},", dir->i_ino, dentry, dentry); in afs_do_lookup()
462 int ret, struct dentry *dentry, struct inode *dir, struct key *key, in afs_try_auto_mntpt() argument
465 const char *devname = dentry->d_name.name; in afs_try_auto_mntpt()
470 ret, dentry, dentry, vnode->fid.vid, vnode->fid.vnode, key); in afs_try_auto_mntpt()
494 static struct dentry *afs_lookup(struct inode *dir, struct dentry *dentry, in afs_lookup() argument
506 vnode->fid.vid, vnode->fid.vnode, dentry, dentry); in afs_lookup()
508 ASSERTCMP(d_inode(dentry), ==, NULL); in afs_lookup()
510 if (dentry->d_name.len >= AFSNAMEMAX) { in afs_lookup()
533 ret = afs_do_lookup(dir, dentry, &fid, key); in afs_lookup()
535 inode = afs_try_auto_mntpt(ret, dentry, dir, key, &fid); in afs_lookup()
544 d_add(dentry, NULL); in afs_lookup()
551 dentry->d_fsdata = (void *)(unsigned long) vnode->status.data_version; in afs_lookup()
562 d_add(dentry, inode); in afs_lookup()
566 d_inode(dentry)->i_ino, in afs_lookup()
567 d_inode(dentry)->i_generation); in afs_lookup()
577 static int afs_d_revalidate(struct dentry *dentry, unsigned int flags) in afs_d_revalidate() argument
581 struct dentry *parent; in afs_d_revalidate()
589 vnode = AFS_FS_I(d_inode(dentry)); in afs_d_revalidate()
591 if (d_really_is_positive(dentry)) in afs_d_revalidate()
593 vnode->fid.vid, vnode->fid.vnode, dentry, in afs_d_revalidate()
596 _enter("{neg n=%pd}", dentry); in afs_d_revalidate()
598 key = afs_request_key(AFS_FS_S(dentry->d_sb)->volume->cell); in afs_d_revalidate()
603 parent = dget_parent(dentry); in afs_d_revalidate()
611 _debug("%pd: parent dir deleted", dentry); in afs_d_revalidate()
616 if (dentry->d_fsdata == dir_version) in afs_d_revalidate()
622 ret = afs_do_lookup(&dir->vfs_inode, dentry, &fid, key); in afs_d_revalidate()
626 if (d_really_is_negative(dentry)) in afs_d_revalidate()
628 if (is_bad_inode(d_inode(dentry))) { in afs_d_revalidate()
630 dentry); in afs_d_revalidate()
638 dentry, fid.vnode, in afs_d_revalidate()
648 dentry, fid.unique, in afs_d_revalidate()
650 d_inode(dentry)->i_generation); in afs_d_revalidate()
660 _debug("%pd: dirent not found", dentry); in afs_d_revalidate()
661 if (d_really_is_positive(dentry)) in afs_d_revalidate()
672 dentry->d_fsdata = dir_version; in afs_d_revalidate()
680 spin_lock(&dentry->d_lock); in afs_d_revalidate()
681 dentry->d_flags |= DCACHE_NFSFS_RENAMED; in afs_d_revalidate()
682 spin_unlock(&dentry->d_lock); in afs_d_revalidate()
685 _debug("dropping dentry %pd2", dentry); in afs_d_revalidate()
699 static int afs_d_delete(const struct dentry *dentry) in afs_d_delete() argument
701 _enter("%pd", dentry); in afs_d_delete()
703 if (dentry->d_flags & DCACHE_NFSFS_RENAMED) in afs_d_delete()
706 if (d_really_is_positive(dentry) && in afs_d_delete()
707 (test_bit(AFS_VNODE_DELETED, &AFS_FS_I(d_inode(dentry))->flags) || in afs_d_delete()
708 test_bit(AFS_VNODE_PSEUDODIR, &AFS_FS_I(d_inode(dentry))->flags))) in afs_d_delete()
722 static void afs_d_release(struct dentry *dentry) in afs_d_release() argument
724 _enter("%pd", dentry); in afs_d_release()
730 static int afs_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode) in afs_mkdir() argument
744 dvnode->fid.vid, dvnode->fid.vnode, dentry, mode); in afs_mkdir()
753 ret = afs_vnode_create(dvnode, key, dentry->d_name.name, in afs_mkdir()
774 d_instantiate(dentry, inode); in afs_mkdir()
775 if (d_unhashed(dentry)) { in afs_mkdir()
777 d_rehash(dentry); in afs_mkdir()
788 d_drop(dentry); in afs_mkdir()
796 static int afs_rmdir(struct inode *dir, struct dentry *dentry) in afs_rmdir() argument
805 dvnode->fid.vid, dvnode->fid.vnode, dentry); in afs_rmdir()
813 ret = afs_vnode_remove(dvnode, key, dentry->d_name.name, true); in afs_rmdir()
817 if (d_really_is_positive(dentry)) { in afs_rmdir()
818 vnode = AFS_FS_I(d_inode(dentry)); in afs_rmdir()
838 static int afs_unlink(struct inode *dir, struct dentry *dentry) in afs_unlink() argument
847 dvnode->fid.vid, dvnode->fid.vnode, dentry); in afs_unlink()
850 if (dentry->d_name.len >= AFSNAMEMAX) in afs_unlink()
859 if (d_really_is_positive(dentry)) { in afs_unlink()
860 vnode = AFS_FS_I(d_inode(dentry)); in afs_unlink()
868 ret = afs_vnode_remove(dvnode, key, dentry->d_name.name, false); in afs_unlink()
872 if (d_really_is_positive(dentry)) { in afs_unlink()
882 vnode = AFS_FS_I(d_inode(dentry)); in afs_unlink()
906 static int afs_create(struct inode *dir, struct dentry *dentry, umode_t mode, in afs_create() argument
921 dvnode->fid.vid, dvnode->fid.vnode, dentry, mode); in afs_create()
930 ret = afs_vnode_create(dvnode, key, dentry->d_name.name, in afs_create()
951 d_instantiate(dentry, inode); in afs_create()
952 if (d_unhashed(dentry)) { in afs_create()
954 d_rehash(dentry); in afs_create()
965 d_drop(dentry); in afs_create()
973 static int afs_link(struct dentry *from, struct inode *dir, in afs_link()
974 struct dentry *dentry) in afs_link() argument
986 dentry); in afs_link()
994 ret = afs_vnode_link(dvnode, vnode, key, dentry->d_name.name); in afs_link()
999 d_instantiate(dentry, &vnode->vfs_inode); in afs_link()
1007 d_drop(dentry); in afs_link()
1015 static int afs_symlink(struct inode *dir, struct dentry *dentry, in afs_symlink() argument
1029 dvnode->fid.vid, dvnode->fid.vnode, dentry, in afs_symlink()
1042 ret = afs_vnode_symlink(dvnode, key, dentry->d_name.name, content, in afs_symlink()
1063 d_instantiate(dentry, inode); in afs_symlink()
1064 if (d_unhashed(dentry)) { in afs_symlink()
1066 d_rehash(dentry); in afs_symlink()
1077 d_drop(dentry); in afs_symlink()
1085 static int afs_rename(struct inode *old_dir, struct dentry *old_dentry, in afs_rename()
1086 struct inode *new_dir, struct dentry *new_dentry) in afs_rename()