Lines Matching refs:dentry

121 	if (filp->f_path.dentry == filp->f_path.mnt->mnt_root) {  in nfs_opendir()
380 error = NFS_PROTO(inode)->readdir(file->f_path.dentry, cred, entry->cookie, pages, in nfs_readdir_xdr_filler()
415 int nfs_same_file(struct dentry *dentry, struct nfs_entry *entry) in nfs_same_file() argument
419 if (d_really_is_negative(dentry)) in nfs_same_file()
422 nfsi = NFS_I(d_inode(dentry)); in nfs_same_file()
470 void nfs_prime_dcache(struct dentry *parent, struct nfs_entry *entry) in nfs_prime_dcache()
473 struct dentry *dentry; in nfs_prime_dcache() local
474 struct dentry *alias; in nfs_prime_dcache()
491 dentry = d_lookup(parent, &filename); in nfs_prime_dcache()
492 if (dentry != NULL) { in nfs_prime_dcache()
494 if (!nfs_fsid_equal(&NFS_SB(dentry->d_sb)->fsid, in nfs_prime_dcache()
497 if (nfs_same_file(dentry, entry)) { in nfs_prime_dcache()
498 nfs_set_verifier(dentry, nfs_save_change_attribute(dir)); in nfs_prime_dcache()
499 status = nfs_refresh_inode(d_inode(dentry), entry->fattr); in nfs_prime_dcache()
501 nfs_setsecurity(d_inode(dentry), entry->fattr, entry->label); in nfs_prime_dcache()
504 d_invalidate(dentry); in nfs_prime_dcache()
505 dput(dentry); in nfs_prime_dcache()
509 dentry = d_alloc(parent, &filename); in nfs_prime_dcache()
510 if (dentry == NULL) in nfs_prime_dcache()
513 inode = nfs_fhget(dentry->d_sb, entry->fh, entry->fattr, entry->label); in nfs_prime_dcache()
517 alias = d_splice_alias(inode, dentry); in nfs_prime_dcache()
524 nfs_set_verifier(dentry, nfs_save_change_attribute(dir)); in nfs_prime_dcache()
527 dput(dentry); in nfs_prime_dcache()
563 nfs_prime_dcache(desc->file->f_path.dentry, entry); in nfs_readdir_page_filler()
875 struct dentry *dentry = file->f_path.dentry; in nfs_readdir() local
876 struct inode *inode = d_inode(dentry); in nfs_readdir()
900 nfs_block_sillyrename(dentry); in nfs_readdir()
936 nfs_unblock_sillyrename(dentry); in nfs_readdir()
1011 static int nfs_check_verifier(struct inode *dir, struct dentry *dentry, in nfs_check_verifier() argument
1016 if (IS_ROOT(dentry)) in nfs_check_verifier()
1020 if (!nfs_verify_change_attribute(dir, dentry->d_time)) in nfs_check_verifier()
1029 if (!nfs_verify_change_attribute(dir, dentry->d_time)) in nfs_check_verifier()
1090 int nfs_neg_need_reval(struct inode *dir, struct dentry *dentry, in nfs_neg_need_reval() argument
1098 return !nfs_check_verifier(dir, dentry, flags & LOOKUP_RCU); in nfs_neg_need_reval()
1112 static int nfs_lookup_revalidate(struct dentry *dentry, unsigned int flags) in nfs_lookup_revalidate() argument
1116 struct dentry *parent; in nfs_lookup_revalidate()
1123 parent = ACCESS_ONCE(dentry->d_parent); in nfs_lookup_revalidate()
1128 parent = dget_parent(dentry); in nfs_lookup_revalidate()
1132 inode = d_inode(dentry); in nfs_lookup_revalidate()
1135 if (nfs_neg_need_reval(dir, dentry, flags)) { in nfs_lookup_revalidate()
1147 __func__, dentry); in nfs_lookup_revalidate()
1156 nfs_check_verifier(dir, dentry, flags & LOOKUP_RCU)) { in nfs_lookup_revalidate()
1182 trace_nfs_lookup_revalidate_enter(dir, dentry, flags); in nfs_lookup_revalidate()
1183 error = NFS_PROTO(dir)->lookup(dir, &dentry->d_name, fhandle, fattr, label); in nfs_lookup_revalidate()
1184 trace_nfs_lookup_revalidate_exit(dir, dentry, flags, error); in nfs_lookup_revalidate()
1199 nfs_set_verifier(dentry, nfs_save_change_attribute(dir)); in nfs_lookup_revalidate()
1205 if (parent != ACCESS_ONCE(dentry->d_parent)) in nfs_lookup_revalidate()
1210 __func__, dentry); in nfs_lookup_revalidate()
1229 if (IS_ROOT(dentry)) in nfs_lookup_revalidate()
1234 __func__, dentry); in nfs_lookup_revalidate()
1243 __func__, dentry, error); in nfs_lookup_revalidate()
1256 static int nfs_weak_revalidate(struct dentry *dentry, unsigned int flags) in nfs_weak_revalidate() argument
1259 struct inode *inode = d_inode(dentry); in nfs_weak_revalidate()
1268 __func__, dentry); in nfs_weak_revalidate()
1274 __func__, dentry); in nfs_weak_revalidate()
1287 static int nfs_dentry_delete(const struct dentry *dentry) in nfs_dentry_delete() argument
1290 dentry, dentry->d_flags); in nfs_dentry_delete()
1293 if (d_really_is_positive(dentry) && NFS_STALE(d_inode(dentry))) in nfs_dentry_delete()
1296 if (dentry->d_flags & DCACHE_NFSFS_RENAMED) { in nfs_dentry_delete()
1300 if (!(dentry->d_sb->s_flags & MS_ACTIVE)) { in nfs_dentry_delete()
1324 static void nfs_dentry_iput(struct dentry *dentry, struct inode *inode) in nfs_dentry_iput() argument
1330 if (dentry->d_flags & DCACHE_NFSFS_RENAMED) { in nfs_dentry_iput()
1331 nfs_complete_unlink(dentry, inode); in nfs_dentry_iput()
1337 static void nfs_d_release(struct dentry *dentry) in nfs_d_release() argument
1340 if (unlikely(dentry->d_fsdata)) { in nfs_d_release()
1341 if (dentry->d_flags & DCACHE_NFSFS_RENAMED) in nfs_d_release()
1344 kfree(dentry->d_fsdata); in nfs_d_release()
1358 struct dentry *nfs_lookup(struct inode *dir, struct dentry * dentry, unsigned int flags) in nfs_lookup() argument
1360 struct dentry *res; in nfs_lookup()
1361 struct dentry *parent; in nfs_lookup()
1368 dfprintk(VFS, "NFS: lookup(%pd2)\n", dentry); in nfs_lookup()
1372 if (dentry->d_name.len > NFS_SERVER(dir)->namelen) in nfs_lookup()
1380 d_instantiate(dentry, NULL); in nfs_lookup()
1395 parent = dentry->d_parent; in nfs_lookup()
1397 trace_nfs_lookup_enter(dir, dentry, flags); in nfs_lookup()
1399 error = NFS_PROTO(dir)->lookup(dir, &dentry->d_name, fhandle, fattr, label); in nfs_lookup()
1406 inode = nfs_fhget(dentry->d_sb, fhandle, fattr, label); in nfs_lookup()
1415 res = d_splice_alias(inode, dentry); in nfs_lookup()
1419 dentry = res; in nfs_lookup()
1421 nfs_set_verifier(dentry, nfs_save_change_attribute(dir)); in nfs_lookup()
1424 trace_nfs_lookup_exit(dir, dentry, flags, error); in nfs_lookup()
1434 static int nfs4_lookup_revalidate(struct dentry *, unsigned int);
1455 static struct nfs_open_context *create_nfs_open_context(struct dentry *dentry, int open_flags) in create_nfs_open_context() argument
1457 return alloc_nfs_open_context(dentry, flags_to_mode(open_flags)); in create_nfs_open_context()
1467 struct dentry *dentry, in nfs_finish_open() argument
1476 err = finish_open(file, dentry, do_open, opened); in nfs_finish_open()
1485 int nfs_atomic_open(struct inode *dir, struct dentry *dentry, in nfs_atomic_open() argument
1490 struct dentry *res; in nfs_atomic_open()
1497 BUG_ON(d_inode(dentry)); in nfs_atomic_open()
1500 dir->i_sb->s_id, dir->i_ino, dentry); in nfs_atomic_open()
1508 if (!d_unhashed(dentry)) { in nfs_atomic_open()
1520 if (dentry->d_name.len > NFS_SERVER(dir)->namelen) in nfs_atomic_open()
1532 ctx = create_nfs_open_context(dentry, open_flags); in nfs_atomic_open()
1538 nfs_block_sillyrename(dentry->d_parent); in nfs_atomic_open()
1540 nfs_unblock_sillyrename(dentry->d_parent); in nfs_atomic_open()
1547 d_drop(dentry); in nfs_atomic_open()
1548 d_add(dentry, NULL); in nfs_atomic_open()
1549 nfs_set_verifier(dentry, nfs_save_change_attribute(dir)); in nfs_atomic_open()
1565 err = nfs_finish_open(ctx, ctx->dentry, file, open_flags, opened); in nfs_atomic_open()
1572 res = nfs_lookup(dir, dentry, lookup_flags); in nfs_atomic_open()
1581 static int nfs4_lookup_revalidate(struct dentry *dentry, unsigned int flags) in nfs4_lookup_revalidate() argument
1588 if (d_mountpoint(dentry)) in nfs4_lookup_revalidate()
1590 if (NFS_SB(dentry->d_sb)->caps & NFS_CAP_ATOMIC_OPEN_V1) in nfs4_lookup_revalidate()
1593 inode = d_inode(dentry); in nfs4_lookup_revalidate()
1599 struct dentry *parent; in nfs4_lookup_revalidate()
1603 parent = ACCESS_ONCE(dentry->d_parent); in nfs4_lookup_revalidate()
1608 parent = dget_parent(dentry); in nfs4_lookup_revalidate()
1611 if (!nfs_neg_need_reval(dir, dentry, flags)) in nfs4_lookup_revalidate()
1617 else if (parent != ACCESS_ONCE(dentry->d_parent)) in nfs4_lookup_revalidate()
1636 return nfs_lookup_revalidate(dentry, flags); in nfs4_lookup_revalidate()
1644 int nfs_instantiate(struct dentry *dentry, struct nfs_fh *fhandle, in nfs_instantiate() argument
1648 struct dentry *parent = dget_parent(dentry); in nfs_instantiate()
1653 d_drop(dentry); in nfs_instantiate()
1656 if (d_really_is_positive(dentry)) in nfs_instantiate()
1659 error = NFS_PROTO(dir)->lookup(dir, &dentry->d_name, fhandle, fattr, NULL); in nfs_instantiate()
1663 nfs_set_verifier(dentry, nfs_save_change_attribute(dir)); in nfs_instantiate()
1665 struct nfs_server *server = NFS_SB(dentry->d_sb); in nfs_instantiate()
1670 inode = nfs_fhget(dentry->d_sb, fhandle, fattr, label); in nfs_instantiate()
1674 d_add(dentry, inode); in nfs_instantiate()
1691 int nfs_create(struct inode *dir, struct dentry *dentry, in nfs_create() argument
1699 dir->i_sb->s_id, dir->i_ino, dentry); in nfs_create()
1704 trace_nfs_create_enter(dir, dentry, open_flags); in nfs_create()
1705 error = NFS_PROTO(dir)->create(dir, dentry, &attr, open_flags); in nfs_create()
1706 trace_nfs_create_exit(dir, dentry, open_flags, error); in nfs_create()
1711 d_drop(dentry); in nfs_create()
1720 nfs_mknod(struct inode *dir, struct dentry *dentry, umode_t mode, dev_t rdev) in nfs_mknod() argument
1726 dir->i_sb->s_id, dir->i_ino, dentry); in nfs_mknod()
1734 trace_nfs_mknod_enter(dir, dentry); in nfs_mknod()
1735 status = NFS_PROTO(dir)->mknod(dir, dentry, &attr, rdev); in nfs_mknod()
1736 trace_nfs_mknod_exit(dir, dentry, status); in nfs_mknod()
1741 d_drop(dentry); in nfs_mknod()
1749 int nfs_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode) in nfs_mkdir() argument
1755 dir->i_sb->s_id, dir->i_ino, dentry); in nfs_mkdir()
1760 trace_nfs_mkdir_enter(dir, dentry); in nfs_mkdir()
1761 error = NFS_PROTO(dir)->mkdir(dir, dentry, &attr); in nfs_mkdir()
1762 trace_nfs_mkdir_exit(dir, dentry, error); in nfs_mkdir()
1767 d_drop(dentry); in nfs_mkdir()
1772 static void nfs_dentry_handle_enoent(struct dentry *dentry) in nfs_dentry_handle_enoent() argument
1774 if (d_really_is_positive(dentry) && !d_unhashed(dentry)) in nfs_dentry_handle_enoent()
1775 d_delete(dentry); in nfs_dentry_handle_enoent()
1778 int nfs_rmdir(struct inode *dir, struct dentry *dentry) in nfs_rmdir() argument
1783 dir->i_sb->s_id, dir->i_ino, dentry); in nfs_rmdir()
1785 trace_nfs_rmdir_enter(dir, dentry); in nfs_rmdir()
1786 if (d_really_is_positive(dentry)) { in nfs_rmdir()
1787 nfs_wait_on_sillyrename(dentry); in nfs_rmdir()
1788 error = NFS_PROTO(dir)->rmdir(dir, &dentry->d_name); in nfs_rmdir()
1792 clear_nlink(d_inode(dentry)); in nfs_rmdir()
1795 nfs_dentry_handle_enoent(dentry); in nfs_rmdir()
1798 error = NFS_PROTO(dir)->rmdir(dir, &dentry->d_name); in nfs_rmdir()
1799 trace_nfs_rmdir_exit(dir, dentry, error); in nfs_rmdir()
1812 static int nfs_safe_remove(struct dentry *dentry) in nfs_safe_remove() argument
1814 struct inode *dir = d_inode(dentry->d_parent); in nfs_safe_remove()
1815 struct inode *inode = d_inode(dentry); in nfs_safe_remove()
1818 dfprintk(VFS, "NFS: safe_remove(%pd2)\n", dentry); in nfs_safe_remove()
1821 if (dentry->d_flags & DCACHE_NFSFS_RENAMED) { in nfs_safe_remove()
1826 trace_nfs_remove_enter(dir, dentry); in nfs_safe_remove()
1829 error = NFS_PROTO(dir)->remove(dir, &dentry->d_name); in nfs_safe_remove()
1833 error = NFS_PROTO(dir)->remove(dir, &dentry->d_name); in nfs_safe_remove()
1835 nfs_dentry_handle_enoent(dentry); in nfs_safe_remove()
1836 trace_nfs_remove_exit(dir, dentry, error); in nfs_safe_remove()
1846 int nfs_unlink(struct inode *dir, struct dentry *dentry) in nfs_unlink() argument
1852 dir->i_ino, dentry); in nfs_unlink()
1854 trace_nfs_unlink_enter(dir, dentry); in nfs_unlink()
1855 spin_lock(&dentry->d_lock); in nfs_unlink()
1856 if (d_count(dentry) > 1) { in nfs_unlink()
1857 spin_unlock(&dentry->d_lock); in nfs_unlink()
1859 write_inode_now(d_inode(dentry), 0); in nfs_unlink()
1860 error = nfs_sillyrename(dir, dentry); in nfs_unlink()
1863 if (!d_unhashed(dentry)) { in nfs_unlink()
1864 __d_drop(dentry); in nfs_unlink()
1867 spin_unlock(&dentry->d_lock); in nfs_unlink()
1868 error = nfs_safe_remove(dentry); in nfs_unlink()
1870 nfs_set_verifier(dentry, nfs_save_change_attribute(dir)); in nfs_unlink()
1872 d_rehash(dentry); in nfs_unlink()
1874 trace_nfs_unlink_exit(dir, dentry, error); in nfs_unlink()
1894 int nfs_symlink(struct inode *dir, struct dentry *dentry, const char *symname) in nfs_symlink() argument
1903 dir->i_ino, dentry, symname); in nfs_symlink()
1921 trace_nfs_symlink_enter(dir, dentry); in nfs_symlink()
1922 error = NFS_PROTO(dir)->symlink(dir, dentry, page, pathlen, &attr); in nfs_symlink()
1923 trace_nfs_symlink_exit(dir, dentry, error); in nfs_symlink()
1927 dentry, symname, error); in nfs_symlink()
1928 d_drop(dentry); in nfs_symlink()
1937 if (!add_to_page_cache_lru(page, d_inode(dentry)->i_mapping, 0, in nfs_symlink()
1954 nfs_link(struct dentry *old_dentry, struct inode *dir, struct dentry *dentry) in nfs_link() argument
1960 old_dentry, dentry); in nfs_link()
1962 trace_nfs_link_enter(inode, dir, dentry); in nfs_link()
1965 d_drop(dentry); in nfs_link()
1966 error = NFS_PROTO(dir)->link(inode, dir, &dentry->d_name); in nfs_link()
1969 d_add(dentry, inode); in nfs_link()
1971 trace_nfs_link_exit(inode, dir, dentry, error); in nfs_link()
2000 int nfs_rename(struct inode *old_dir, struct dentry *old_dentry, in nfs_rename()
2001 struct inode *new_dir, struct dentry *new_dentry) in nfs_rename()
2005 struct dentry *dentry = NULL, *rehash = NULL; in nfs_rename() local
2034 dentry = d_alloc(new_dentry->d_parent, in nfs_rename()
2036 if (!dentry) in nfs_rename()
2044 new_dentry = dentry; in nfs_rename()
2080 if (dentry) in nfs_rename()
2081 dput(dentry); in nfs_rename()