Lines Matching refs:dentry
22 static struct dentry *afs_lookup(struct inode *dir, struct dentry *dentry,
27 struct dentry *dentry, unsigned int flags);
28 static int afs_d_delete(const struct dentry *dentry);
29 static void afs_d_iput(struct dentry *dentry, struct inode *inode);
35 struct dentry *dentry, umode_t mode, bool excl);
36 static struct dentry *afs_mkdir(struct mnt_idmap *idmap, struct inode *dir,
37 struct dentry *dentry, umode_t mode);
38 static int afs_rmdir(struct inode *dir, struct dentry *dentry);
39 static int afs_unlink(struct inode *dir, struct dentry *dentry);
40 static int afs_link(struct dentry *from, struct inode *dir,
41 struct dentry *dentry);
43 struct dentry *dentry, const char *content);
45 struct dentry *old_dentry, struct inode *new_dir,
46 struct dentry *new_dentry, unsigned int flags);
761 static struct inode *afs_do_lookup(struct inode *dir, struct dentry *dentry) in afs_do_lookup() argument
773 _enter("{%llu},%p{%pd},", dir->i_ino, dentry, dentry); in afs_do_lookup()
782 cookie->name = dentry->d_name; in afs_do_lookup()
787 ret = afs_dir_search(dvnode, &dentry->d_name, &cookie->fids[1], &data_version); in afs_do_lookup()
798 dentry->d_fsdata = (void *)(unsigned long)data_version; in afs_do_lookup()
885 dentry->d_fsdata = (void *)(unsigned long)op->file[0].scb.status.data_version; in afs_do_lookup()
887 dentry->d_fsdata = (void *)(unsigned long)op->file[0].dv_before; in afs_do_lookup()
898 static struct dentry *afs_lookup_atsys(struct inode *dir, struct dentry *dentry) in afs_lookup_atsys() argument
902 struct dentry *ret; in afs_lookup_atsys()
912 if (dentry->d_name.len > 4) { in afs_lookup_atsys()
913 memcpy(p, dentry->d_name.name, dentry->d_name.len - 4); in afs_lookup_atsys()
914 p += dentry->d_name.len - 4; in afs_lookup_atsys()
925 len = dentry->d_name.len - 4 + strlen(name); in afs_lookup_atsys()
932 ret = lookup_noperm(&QSTR(buf), dentry->d_parent); in afs_lookup_atsys()
952 static struct dentry *afs_lookup(struct inode *dir, struct dentry *dentry, in afs_lookup() argument
958 struct dentry *d; in afs_lookup()
962 dvnode->fid.vid, dvnode->fid.vnode, dentry, dentry); in afs_lookup()
964 ASSERTCMP(d_inode(dentry), ==, NULL); in afs_lookup()
966 if (dentry->d_name.len >= AFSNAMEMAX) { in afs_lookup()
983 if (dentry->d_name.len >= 4 && in afs_lookup()
984 dentry->d_name.name[dentry->d_name.len - 4] == '@' && in afs_lookup()
985 dentry->d_name.name[dentry->d_name.len - 3] == 's' && in afs_lookup()
986 dentry->d_name.name[dentry->d_name.len - 2] == 'y' && in afs_lookup()
987 dentry->d_name.name[dentry->d_name.len - 1] == 's') in afs_lookup()
988 return afs_lookup_atsys(dir, dentry); in afs_lookup()
991 inode = afs_do_lookup(dir, dentry); in afs_lookup()
997 _debug("splice %p", dentry->d_inode); in afs_lookup()
998 d = d_splice_alias(inode, dentry); in afs_lookup()
1000 d->d_fsdata = dentry->d_fsdata; in afs_lookup()
1003 trace_afs_lookup(dvnode, &dentry->d_name, &fid); in afs_lookup()
1012 static int afs_d_revalidate_rcu(struct afs_vnode *dvnode, struct dentry *dentry) in afs_d_revalidate_rcu() argument
1016 _enter("%p", dentry); in afs_d_revalidate_rcu()
1030 de_version = (long)READ_ONCE(dentry->d_fsdata); in afs_d_revalidate_rcu()
1046 struct dentry *dentry, unsigned int flags) in afs_d_revalidate() argument
1057 return afs_d_revalidate_rcu(dir, dentry); in afs_d_revalidate()
1059 if (d_really_is_positive(dentry)) { in afs_d_revalidate()
1060 vnode = AFS_FS_I(d_inode(dentry)); in afs_d_revalidate()
1062 vnode->fid.vid, vnode->fid.vnode, dentry, in afs_d_revalidate()
1065 _enter("{neg n=%pd}", dentry); in afs_d_revalidate()
1068 key = afs_request_key(AFS_FS_S(dentry->d_sb)->volume->cell); in afs_d_revalidate()
1080 _debug("%pd: parent dir deleted", dentry); in afs_d_revalidate()
1090 de_version = (long)dentry->d_fsdata; in afs_d_revalidate()
1106 if (d_really_is_negative(dentry)) in afs_d_revalidate()
1108 inode = d_inode(dentry); in afs_d_revalidate()
1111 dentry); in afs_d_revalidate()
1121 dentry, fid.vnode, in afs_d_revalidate()
1131 dentry, fid.unique, in afs_d_revalidate()
1140 _debug("%pd: dirent not found", dentry); in afs_d_revalidate()
1141 if (d_really_is_positive(dentry)) in afs_d_revalidate()
1146 _debug("failed to iterate parent %pd2: %d", dentry, ret); in afs_d_revalidate()
1151 dentry->d_fsdata = (void *)(unsigned long)dir_version; in afs_d_revalidate()
1158 _debug("dropping dentry %pd2", dentry); in afs_d_revalidate()
1171 static int afs_d_delete(const struct dentry *dentry) in afs_d_delete() argument
1173 _enter("%pd", dentry); in afs_d_delete()
1175 if (dentry->d_flags & DCACHE_NFSFS_RENAMED) in afs_d_delete()
1178 if (d_really_is_positive(dentry) && in afs_d_delete()
1179 (test_bit(AFS_VNODE_DELETED, &AFS_FS_I(d_inode(dentry))->flags) || in afs_d_delete()
1180 test_bit(AFS_VNODE_PSEUDODIR, &AFS_FS_I(d_inode(dentry))->flags))) in afs_d_delete()
1194 static void afs_d_iput(struct dentry *dentry, struct inode *inode) in afs_d_iput() argument
1196 if (dentry->d_flags & DCACHE_NFSFS_RENAMED) in afs_d_iput()
1197 afs_silly_iput(dentry, inode); in afs_d_iput()
1204 void afs_d_release(struct dentry *dentry) in afs_d_release() argument
1206 _enter("%pd", dentry); in afs_d_release()
1252 d_instantiate(op->dentry, inode); in afs_vnode_new_inode()
1260 afs_update_dentry_version(op, &op->file[0], op->dentry); in afs_create_success()
1277 afs_edit_dir_add(dvnode, &op->dentry->d_name, &vp->fid, in afs_create_edit_dir()
1288 d_drop(op->dentry); in afs_create_put()
1303 static struct dentry *afs_mkdir(struct mnt_idmap *idmap, struct inode *dir, in afs_mkdir()
1304 struct dentry *dentry, umode_t mode) in afs_mkdir() argument
1311 dvnode->fid.vid, dvnode->fid.vnode, dentry, mode); in afs_mkdir()
1315 d_drop(dentry); in afs_mkdir()
1325 op->dentry = dentry; in afs_mkdir()
1338 static void afs_dir_remove_subdir(struct dentry *dentry) in afs_dir_remove_subdir() argument
1340 if (d_really_is_positive(dentry)) { in afs_dir_remove_subdir()
1341 struct afs_vnode *vnode = AFS_FS_I(d_inode(dentry)); in afs_dir_remove_subdir()
1355 afs_update_dentry_version(op, &op->file[0], op->dentry); in afs_rmdir_success()
1365 afs_dir_remove_subdir(op->dentry); in afs_rmdir_edit_dir()
1371 afs_edit_dir_remove(dvnode, &op->dentry->d_name, in afs_rmdir_edit_dir()
1396 static int afs_rmdir(struct inode *dir, struct dentry *dentry) in afs_rmdir() argument
1403 dvnode->fid.vid, dvnode->fid.vnode, dentry); in afs_rmdir()
1416 op->dentry = dentry; in afs_rmdir()
1420 if (d_really_is_positive(dentry)) { in afs_rmdir()
1421 vnode = AFS_FS_I(d_inode(dentry)); in afs_rmdir()
1462 struct dentry *dentry = op->dentry; in afs_dir_remove_link() local
1468 if (d_really_is_positive(dentry)) in afs_dir_remove_link()
1502 afs_update_dentry_version(op, &op->file[0], op->dentry); in afs_unlink_success()
1517 afs_edit_dir_remove(dvnode, &op->dentry->d_name, in afs_unlink_edit_dir()
1527 d_rehash(op->dentry); in afs_unlink_put()
1542 static int afs_unlink(struct inode *dir, struct dentry *dentry) in afs_unlink() argument
1546 struct afs_vnode *vnode = AFS_FS_I(d_inode(dentry)); in afs_unlink()
1550 dvnode->fid.vid, dvnode->fid.vnode, dentry); in afs_unlink()
1552 if (dentry->d_name.len >= AFSNAMEMAX) in afs_unlink()
1573 spin_lock(&dentry->d_lock); in afs_unlink()
1574 if (d_count(dentry) > 1) { in afs_unlink()
1575 spin_unlock(&dentry->d_lock); in afs_unlink()
1577 write_inode_now(d_inode(dentry), 0); in afs_unlink()
1578 afs_op_set_error(op, afs_sillyrename(dvnode, vnode, dentry, op->key)); in afs_unlink()
1581 if (!d_unhashed(dentry)) { in afs_unlink()
1583 __d_drop(dentry); in afs_unlink()
1586 spin_unlock(&dentry->d_lock); in afs_unlink()
1591 op->dentry = dentry; in afs_unlink()
1626 struct dentry *dentry, umode_t mode, bool excl) in afs_create() argument
1633 dvnode->fid.vid, dvnode->fid.vnode, dentry, mode); in afs_create()
1635 if (dentry->d_name.len >= AFSNAMEMAX) in afs_create()
1651 op->dentry = dentry; in afs_create()
1661 d_drop(dentry); in afs_create()
1675 afs_update_dentry_version(op, dvp, op->dentry); in afs_link_success()
1676 if (op->dentry_2->d_parent == op->dentry->d_parent) in afs_link_success()
1679 d_instantiate(op->dentry, &vp->vnode->netfs.inode); in afs_link_success()
1686 d_drop(op->dentry); in afs_link_put()
1701 static int afs_link(struct dentry *from, struct inode *dir, in afs_link()
1702 struct dentry *dentry) in afs_link() argument
1712 dentry); in afs_link()
1714 if (dentry->d_name.len >= AFSNAMEMAX) in afs_link()
1736 op->dentry = dentry; in afs_link()
1748 d_drop(dentry); in afs_link()
1773 struct dentry *dentry, const char *content) in afs_symlink() argument
1782 dvnode->fid.vid, dvnode->fid.vnode, dentry, in afs_symlink()
1786 if (dentry->d_name.len >= AFSNAMEMAX) in afs_symlink()
1812 op->dentry = dentry; in afs_symlink()
1822 d_drop(dentry); in afs_symlink()
1885 struct afs_vnode *vnode = AFS_FS_I(d_inode(op->dentry)); in afs_rename_edit_dir()
1886 struct dentry *old_dentry = op->dentry; in afs_rename_edit_dir()
1887 struct dentry *new_dentry = op->dentry_2; in afs_rename_edit_dir()
1941 afs_update_dentry_version(op, new_dvp, op->dentry); in afs_rename_edit_dir()
1960 struct dentry *old_dentry = op->dentry; in afs_rename_exchange_edit_dir()
1961 struct dentry *new_dentry = op->dentry_2; in afs_rename_exchange_edit_dir()
2020 d_rehash(op->dentry); in afs_rename_put()
2061 struct dentry *old_dentry, struct inode *new_dir, in afs_rename()
2062 struct dentry *new_dentry, unsigned int flags) in afs_rename()
2119 op->dentry = old_dentry; in afs_rename()