• Home
  • Raw
  • Download

Lines Matching refs:dentry

517 		.dentry = file_dentry(desc->file),  in nfs_readdir_xdr_filler()
570 int nfs_same_file(struct dentry *dentry, struct nfs_entry *entry) in nfs_same_file() argument
575 if (d_really_is_negative(dentry)) in nfs_same_file()
578 inode = d_inode(dentry); in nfs_same_file()
636 void nfs_prime_dcache(struct dentry *parent, struct nfs_entry *entry, in nfs_prime_dcache()
641 struct dentry *dentry; in nfs_prime_dcache() local
642 struct dentry *alias; in nfs_prime_dcache()
666 dentry = d_lookup(parent, &filename); in nfs_prime_dcache()
668 if (!dentry) { in nfs_prime_dcache()
669 dentry = d_alloc_parallel(parent, &filename, &wq); in nfs_prime_dcache()
670 if (IS_ERR(dentry)) in nfs_prime_dcache()
673 if (!d_in_lookup(dentry)) { in nfs_prime_dcache()
675 if (!nfs_fsid_equal(&NFS_SB(dentry->d_sb)->fsid, in nfs_prime_dcache()
678 if (nfs_same_file(dentry, entry)) { in nfs_prime_dcache()
681 nfs_set_verifier(dentry, dir_verifier); in nfs_prime_dcache()
682 status = nfs_refresh_inode(d_inode(dentry), entry->fattr); in nfs_prime_dcache()
684 nfs_setsecurity(d_inode(dentry), entry->fattr, entry->label); in nfs_prime_dcache()
687 d_invalidate(dentry); in nfs_prime_dcache()
688 dput(dentry); in nfs_prime_dcache()
689 dentry = NULL; in nfs_prime_dcache()
694 d_lookup_done(dentry); in nfs_prime_dcache()
698 inode = nfs_fhget(dentry->d_sb, entry->fh, entry->fattr, entry->label); in nfs_prime_dcache()
699 alias = d_splice_alias(inode, dentry); in nfs_prime_dcache()
700 d_lookup_done(dentry); in nfs_prime_dcache()
704 dput(dentry); in nfs_prime_dcache()
705 dentry = alias; in nfs_prime_dcache()
707 nfs_set_verifier(dentry, dir_verifier); in nfs_prime_dcache()
709 dput(dentry); in nfs_prime_dcache()
1078 struct dentry *dentry = file_dentry(file); in nfs_readdir() local
1079 struct inode *inode = d_inode(dentry); in nfs_readdir()
1272 static bool nfs_verifier_is_delegated(struct dentry *dentry) in nfs_verifier_is_delegated() argument
1274 return nfs_test_verifier_delegated(dentry->d_time); in nfs_verifier_is_delegated()
1277 static void nfs_set_verifier_locked(struct dentry *dentry, unsigned long verf) in nfs_set_verifier_locked() argument
1279 struct inode *inode = d_inode(dentry); in nfs_set_verifier_locked()
1280 struct inode *dir = d_inode(dentry->d_parent); in nfs_set_verifier_locked()
1286 dentry->d_time = verf; in nfs_set_verifier_locked()
1299 void nfs_set_verifier(struct dentry *dentry, unsigned long verf) in nfs_set_verifier() argument
1302 spin_lock(&dentry->d_lock); in nfs_set_verifier()
1303 nfs_set_verifier_locked(dentry, verf); in nfs_set_verifier()
1304 spin_unlock(&dentry->d_lock); in nfs_set_verifier()
1321 struct dentry *alias; in nfs_clear_verifier_delegated()
1342 static int nfs_check_verifier(struct inode *dir, struct dentry *dentry, in nfs_check_verifier() argument
1345 if (IS_ROOT(dentry)) in nfs_check_verifier()
1349 if (!nfs_verify_change_attribute(dir, dentry->d_time)) in nfs_check_verifier()
1358 if (!nfs_verify_change_attribute(dir, dentry->d_time)) in nfs_check_verifier()
1441 int nfs_neg_need_reval(struct inode *dir, struct dentry *dentry, in nfs_neg_need_reval() argument
1448 return !nfs_check_verifier(dir, dentry, flags & LOOKUP_RCU); in nfs_neg_need_reval()
1452 nfs_lookup_revalidate_done(struct inode *dir, struct dentry *dentry, in nfs_lookup_revalidate_done() argument
1458 __func__, dentry); in nfs_lookup_revalidate_done()
1467 if (inode && IS_ROOT(dentry)) in nfs_lookup_revalidate_done()
1470 __func__, dentry); in nfs_lookup_revalidate_done()
1474 __func__, dentry, error); in nfs_lookup_revalidate_done()
1479 nfs_lookup_revalidate_negative(struct inode *dir, struct dentry *dentry, in nfs_lookup_revalidate_negative() argument
1483 if (nfs_neg_need_reval(dir, dentry, flags)) { in nfs_lookup_revalidate_negative()
1488 return nfs_lookup_revalidate_done(dir, dentry, NULL, ret); in nfs_lookup_revalidate_negative()
1492 nfs_lookup_revalidate_delegated(struct inode *dir, struct dentry *dentry, in nfs_lookup_revalidate_delegated() argument
1495 nfs_set_verifier(dentry, nfs_save_change_attribute(dir)); in nfs_lookup_revalidate_delegated()
1496 return nfs_lookup_revalidate_done(dir, dentry, inode, 1); in nfs_lookup_revalidate_delegated()
1500 nfs_lookup_revalidate_dentry(struct inode *dir, struct dentry *dentry, in nfs_lookup_revalidate_dentry() argument
1517 ret = NFS_PROTO(dir)->lookup(dir, dentry, fhandle, fattr, label); in nfs_lookup_revalidate_dentry()
1537 nfs_set_verifier(dentry, dir_verifier); in nfs_lookup_revalidate_dentry()
1551 if (!ret && nfs_verify_change_attribute(dir, dentry->d_time)) in nfs_lookup_revalidate_dentry()
1553 return nfs_lookup_revalidate_done(dir, dentry, inode, ret); in nfs_lookup_revalidate_dentry()
1568 nfs_do_lookup_revalidate(struct inode *dir, struct dentry *dentry, in nfs_do_lookup_revalidate() argument
1575 inode = d_inode(dentry); in nfs_do_lookup_revalidate()
1578 return nfs_lookup_revalidate_negative(dir, dentry, flags); in nfs_do_lookup_revalidate()
1582 __func__, dentry); in nfs_do_lookup_revalidate()
1586 if (nfs_verifier_is_delegated(dentry)) in nfs_do_lookup_revalidate()
1587 return nfs_lookup_revalidate_delegated(dir, dentry, inode); in nfs_do_lookup_revalidate()
1591 nfs_check_verifier(dir, dentry, flags & LOOKUP_RCU)) { in nfs_do_lookup_revalidate()
1608 trace_nfs_lookup_revalidate_enter(dir, dentry, flags); in nfs_do_lookup_revalidate()
1609 error = nfs_lookup_revalidate_dentry(dir, dentry, inode); in nfs_do_lookup_revalidate()
1610 trace_nfs_lookup_revalidate_exit(dir, dentry, flags, error); in nfs_do_lookup_revalidate()
1613 return nfs_lookup_revalidate_done(dir, dentry, inode, 1); in nfs_do_lookup_revalidate()
1617 return nfs_lookup_revalidate_done(dir, dentry, inode, 0); in nfs_do_lookup_revalidate()
1621 __nfs_lookup_revalidate(struct dentry *dentry, unsigned int flags, in __nfs_lookup_revalidate() argument
1622 int (*reval)(struct inode *, struct dentry *, unsigned int)) in __nfs_lookup_revalidate()
1624 struct dentry *parent; in __nfs_lookup_revalidate()
1629 parent = READ_ONCE(dentry->d_parent); in __nfs_lookup_revalidate()
1633 ret = reval(dir, dentry, flags); in __nfs_lookup_revalidate()
1634 if (parent != READ_ONCE(dentry->d_parent)) in __nfs_lookup_revalidate()
1637 parent = dget_parent(dentry); in __nfs_lookup_revalidate()
1638 ret = reval(d_inode(parent), dentry, flags); in __nfs_lookup_revalidate()
1644 static int nfs_lookup_revalidate(struct dentry *dentry, unsigned int flags) in nfs_lookup_revalidate() argument
1646 return __nfs_lookup_revalidate(dentry, flags, nfs_do_lookup_revalidate); in nfs_lookup_revalidate()
1658 static int nfs_weak_revalidate(struct dentry *dentry, unsigned int flags) in nfs_weak_revalidate() argument
1660 struct inode *inode = d_inode(dentry); in nfs_weak_revalidate()
1670 __func__, dentry); in nfs_weak_revalidate()
1676 __func__, dentry); in nfs_weak_revalidate()
1689 static int nfs_dentry_delete(const struct dentry *dentry) in nfs_dentry_delete() argument
1692 dentry, dentry->d_flags); in nfs_dentry_delete()
1695 if (d_really_is_positive(dentry) && NFS_STALE(d_inode(dentry))) in nfs_dentry_delete()
1698 if (dentry->d_flags & DCACHE_NFSFS_RENAMED) { in nfs_dentry_delete()
1702 if (!(dentry->d_sb->s_flags & SB_ACTIVE)) { in nfs_dentry_delete()
1729 static void nfs_dentry_iput(struct dentry *dentry, struct inode *inode) in nfs_dentry_iput() argument
1735 if (dentry->d_flags & DCACHE_NFSFS_RENAMED) { in nfs_dentry_iput()
1736 nfs_complete_unlink(dentry, inode); in nfs_dentry_iput()
1742 static void nfs_d_release(struct dentry *dentry) in nfs_d_release() argument
1745 if (unlikely(dentry->d_fsdata)) { in nfs_d_release()
1746 if (dentry->d_flags & DCACHE_NFSFS_RENAMED) in nfs_d_release()
1749 kfree(dentry->d_fsdata); in nfs_d_release()
1763 struct dentry *nfs_lookup(struct inode *dir, struct dentry * dentry, unsigned int flags) in nfs_lookup() argument
1765 struct dentry *res; in nfs_lookup()
1773 dfprintk(VFS, "NFS: lookup(%pd2)\n", dentry); in nfs_lookup()
1776 if (unlikely(dentry->d_name.len > NFS_SERVER(dir)->namelen)) in nfs_lookup()
1797 trace_nfs_lookup_enter(dir, dentry, flags); in nfs_lookup()
1798 error = NFS_PROTO(dir)->lookup(dir, dentry, fhandle, fattr, label); in nfs_lookup()
1805 inode = nfs_fhget(dentry->d_sb, fhandle, fattr, label); in nfs_lookup()
1814 res = d_splice_alias(inode, dentry); in nfs_lookup()
1818 dentry = res; in nfs_lookup()
1820 nfs_set_verifier(dentry, dir_verifier); in nfs_lookup()
1822 trace_nfs_lookup_exit(dir, dentry, flags, error); in nfs_lookup()
1832 static int nfs4_lookup_revalidate(struct dentry *, unsigned int);
1844 static struct nfs_open_context *create_nfs_open_context(struct dentry *dentry, int open_flags, stru… in create_nfs_open_context() argument
1846 return alloc_nfs_open_context(dentry, flags_to_mode(open_flags), filp); in create_nfs_open_context()
1856 struct dentry *dentry, in nfs_finish_open() argument
1861 err = finish_open(file, dentry, do_open); in nfs_finish_open()
1864 if (S_ISREG(file->f_path.dentry->d_inode->i_mode)) in nfs_finish_open()
1872 int nfs_atomic_open(struct inode *dir, struct dentry *dentry, in nfs_atomic_open() argument
1878 struct dentry *res; in nfs_atomic_open()
1887 BUG_ON(d_inode(dentry)); in nfs_atomic_open()
1890 dir->i_sb->s_id, dir->i_ino, dentry); in nfs_atomic_open()
1898 if (!d_in_lookup(dentry)) { in nfs_atomic_open()
1910 if (dentry->d_name.len > NFS_SERVER(dir)->namelen) in nfs_atomic_open()
1927 if (!(open_flags & O_CREAT) && !d_in_lookup(dentry)) { in nfs_atomic_open()
1928 d_drop(dentry); in nfs_atomic_open()
1930 dentry = d_alloc_parallel(dentry->d_parent, in nfs_atomic_open()
1931 &dentry->d_name, &wq); in nfs_atomic_open()
1932 if (IS_ERR(dentry)) in nfs_atomic_open()
1933 return PTR_ERR(dentry); in nfs_atomic_open()
1934 if (unlikely(!d_in_lookup(dentry))) in nfs_atomic_open()
1935 return finish_no_open(file, dentry); in nfs_atomic_open()
1938 ctx = create_nfs_open_context(dentry, open_flags, file); in nfs_atomic_open()
1951 d_drop(dentry); in nfs_atomic_open()
1954 d_splice_alias(NULL, dentry); in nfs_atomic_open()
1955 nfs_set_verifier(dentry, nfs_save_change_attribute(dir)); in nfs_atomic_open()
1971 err = nfs_finish_open(ctx, ctx->dentry, file, open_flags); in nfs_atomic_open()
1976 d_lookup_done(dentry); in nfs_atomic_open()
1977 dput(dentry); in nfs_atomic_open()
1982 res = nfs_lookup(dir, dentry, lookup_flags); in nfs_atomic_open()
1984 inode = d_inode(dentry); in nfs_atomic_open()
2002 d_lookup_done(dentry); in nfs_atomic_open()
2004 res = dentry; in nfs_atomic_open()
2006 dput(dentry); in nfs_atomic_open()
2015 nfs4_do_lookup_revalidate(struct inode *dir, struct dentry *dentry, in nfs4_do_lookup_revalidate() argument
2022 if (d_mountpoint(dentry)) in nfs4_do_lookup_revalidate()
2025 inode = d_inode(dentry); in nfs4_do_lookup_revalidate()
2033 if (nfs_verifier_is_delegated(dentry)) in nfs4_do_lookup_revalidate()
2034 return nfs_lookup_revalidate_delegated(dir, dentry, inode); in nfs4_do_lookup_revalidate()
2045 if (!nfs_check_verifier(dir, dentry, flags & LOOKUP_RCU)) in nfs4_do_lookup_revalidate()
2053 return nfs_lookup_revalidate_dentry(dir, dentry, inode); in nfs4_do_lookup_revalidate()
2056 return nfs_do_lookup_revalidate(dir, dentry, flags); in nfs4_do_lookup_revalidate()
2059 static int nfs4_lookup_revalidate(struct dentry *dentry, unsigned int flags) in nfs4_lookup_revalidate() argument
2061 return __nfs_lookup_revalidate(dentry, flags, in nfs4_lookup_revalidate()
2067 struct dentry *
2068 nfs_add_or_obtain(struct dentry *dentry, struct nfs_fh *fhandle, in nfs_add_or_obtain() argument
2072 struct dentry *parent = dget_parent(dentry); in nfs_add_or_obtain()
2075 struct dentry *d; in nfs_add_or_obtain()
2078 d_drop(dentry); in nfs_add_or_obtain()
2081 error = NFS_PROTO(dir)->lookup(dir, dentry, fhandle, fattr, NULL); in nfs_add_or_obtain()
2085 nfs_set_verifier(dentry, nfs_save_change_attribute(dir)); in nfs_add_or_obtain()
2087 struct nfs_server *server = NFS_SB(dentry->d_sb); in nfs_add_or_obtain()
2093 inode = nfs_fhget(dentry->d_sb, fhandle, fattr, label); in nfs_add_or_obtain()
2094 d = d_splice_alias(inode, dentry); in nfs_add_or_obtain()
2107 int nfs_instantiate(struct dentry *dentry, struct nfs_fh *fhandle, in nfs_instantiate() argument
2111 struct dentry *d; in nfs_instantiate()
2113 d = nfs_add_or_obtain(dentry, fhandle, fattr, label); in nfs_instantiate()
2130 struct dentry *dentry, umode_t mode, bool excl) in nfs_create() argument
2137 dir->i_sb->s_id, dir->i_ino, dentry); in nfs_create()
2142 trace_nfs_create_enter(dir, dentry, open_flags); in nfs_create()
2143 error = NFS_PROTO(dir)->create(dir, dentry, &attr, open_flags); in nfs_create()
2144 trace_nfs_create_exit(dir, dentry, open_flags, error); in nfs_create()
2149 d_drop(dentry); in nfs_create()
2159 struct dentry *dentry, umode_t mode, dev_t rdev) in nfs_mknod() argument
2165 dir->i_sb->s_id, dir->i_ino, dentry); in nfs_mknod()
2170 trace_nfs_mknod_enter(dir, dentry); in nfs_mknod()
2171 status = NFS_PROTO(dir)->mknod(dir, dentry, &attr, rdev); in nfs_mknod()
2172 trace_nfs_mknod_exit(dir, dentry, status); in nfs_mknod()
2177 d_drop(dentry); in nfs_mknod()
2186 struct dentry *dentry, umode_t mode) in nfs_mkdir() argument
2192 dir->i_sb->s_id, dir->i_ino, dentry); in nfs_mkdir()
2197 trace_nfs_mkdir_enter(dir, dentry); in nfs_mkdir()
2198 error = NFS_PROTO(dir)->mkdir(dir, dentry, &attr); in nfs_mkdir()
2199 trace_nfs_mkdir_exit(dir, dentry, error); in nfs_mkdir()
2204 d_drop(dentry); in nfs_mkdir()
2209 static void nfs_dentry_handle_enoent(struct dentry *dentry) in nfs_dentry_handle_enoent() argument
2211 if (simple_positive(dentry)) in nfs_dentry_handle_enoent()
2212 d_delete(dentry); in nfs_dentry_handle_enoent()
2215 int nfs_rmdir(struct inode *dir, struct dentry *dentry) in nfs_rmdir() argument
2220 dir->i_sb->s_id, dir->i_ino, dentry); in nfs_rmdir()
2222 trace_nfs_rmdir_enter(dir, dentry); in nfs_rmdir()
2223 if (d_really_is_positive(dentry)) { in nfs_rmdir()
2224 down_write(&NFS_I(d_inode(dentry))->rmdir_sem); in nfs_rmdir()
2225 error = NFS_PROTO(dir)->rmdir(dir, &dentry->d_name); in nfs_rmdir()
2229 clear_nlink(d_inode(dentry)); in nfs_rmdir()
2232 nfs_dentry_handle_enoent(dentry); in nfs_rmdir()
2234 up_write(&NFS_I(d_inode(dentry))->rmdir_sem); in nfs_rmdir()
2236 error = NFS_PROTO(dir)->rmdir(dir, &dentry->d_name); in nfs_rmdir()
2237 trace_nfs_rmdir_exit(dir, dentry, error); in nfs_rmdir()
2250 static int nfs_safe_remove(struct dentry *dentry) in nfs_safe_remove() argument
2252 struct inode *dir = d_inode(dentry->d_parent); in nfs_safe_remove()
2253 struct inode *inode = d_inode(dentry); in nfs_safe_remove()
2256 dfprintk(VFS, "NFS: safe_remove(%pd2)\n", dentry); in nfs_safe_remove()
2259 if (dentry->d_flags & DCACHE_NFSFS_RENAMED) { in nfs_safe_remove()
2264 trace_nfs_remove_enter(dir, dentry); in nfs_safe_remove()
2266 error = NFS_PROTO(dir)->remove(dir, dentry); in nfs_safe_remove()
2270 error = NFS_PROTO(dir)->remove(dir, dentry); in nfs_safe_remove()
2272 nfs_dentry_handle_enoent(dentry); in nfs_safe_remove()
2273 trace_nfs_remove_exit(dir, dentry, error); in nfs_safe_remove()
2283 int nfs_unlink(struct inode *dir, struct dentry *dentry) in nfs_unlink() argument
2289 dir->i_ino, dentry); in nfs_unlink()
2291 trace_nfs_unlink_enter(dir, dentry); in nfs_unlink()
2292 spin_lock(&dentry->d_lock); in nfs_unlink()
2293 if (d_count(dentry) > 1) { in nfs_unlink()
2294 spin_unlock(&dentry->d_lock); in nfs_unlink()
2296 write_inode_now(d_inode(dentry), 0); in nfs_unlink()
2297 error = nfs_sillyrename(dir, dentry); in nfs_unlink()
2300 if (!d_unhashed(dentry)) { in nfs_unlink()
2301 __d_drop(dentry); in nfs_unlink()
2304 spin_unlock(&dentry->d_lock); in nfs_unlink()
2305 error = nfs_safe_remove(dentry); in nfs_unlink()
2307 nfs_set_verifier(dentry, nfs_save_change_attribute(dir)); in nfs_unlink()
2309 d_rehash(dentry); in nfs_unlink()
2311 trace_nfs_unlink_exit(dir, dentry, error); in nfs_unlink()
2332 struct dentry *dentry, const char *symname) in nfs_symlink() argument
2341 dir->i_ino, dentry, symname); in nfs_symlink()
2358 trace_nfs_symlink_enter(dir, dentry); in nfs_symlink()
2359 error = NFS_PROTO(dir)->symlink(dir, dentry, page, pathlen, &attr); in nfs_symlink()
2360 trace_nfs_symlink_exit(dir, dentry, error); in nfs_symlink()
2364 dentry, symname, error); in nfs_symlink()
2365 d_drop(dentry); in nfs_symlink()
2374 if (!add_to_page_cache_lru(page, d_inode(dentry)->i_mapping, 0, in nfs_symlink()
2391 nfs_link(struct dentry *old_dentry, struct inode *dir, struct dentry *dentry) in nfs_link() argument
2397 old_dentry, dentry); in nfs_link()
2399 trace_nfs_link_enter(inode, dir, dentry); in nfs_link()
2400 d_drop(dentry); in nfs_link()
2403 error = NFS_PROTO(dir)->link(inode, dir, &dentry->d_name); in nfs_link()
2406 d_add(dentry, inode); in nfs_link()
2408 trace_nfs_link_exit(inode, dir, dentry, error); in nfs_link()
2438 struct dentry *old_dentry, struct inode *new_dir, in nfs_rename()
2439 struct dentry *new_dentry, unsigned int flags) in nfs_rename()
2443 struct dentry *dentry = NULL, *rehash = NULL; in nfs_rename() local
2475 dentry = d_alloc(new_dentry->d_parent, in nfs_rename()
2477 if (!dentry) in nfs_rename()
2485 new_dentry = dentry; in nfs_rename()
2537 if (dentry) in nfs_rename()
2538 dput(dentry); in nfs_rename()