Lines Matching refs:dir

3  *  linux/fs/nfs/dir.c
76 alloc_nfs_open_dir_context(struct inode *dir)
78 struct nfs_inode *nfsi = NFS_I(dir);
85 spin_lock(&dir->i_lock);
88 nfs_set_cache_invalid(dir,
93 spin_unlock(&dir->i_lock);
99 static void put_nfs_open_dir_context(struct inode *dir, struct nfs_open_dir_context *ctx)
101 spin_lock(&dir->i_lock);
103 spin_unlock(&dir->i_lock);
116 dfprintk(FILE, "NFS: open dir(%pD2)\n", filp);
661 static bool nfs_use_readdirplus(struct inode *dir, struct dir_context *ctx,
665 if (!nfs_server_capable(dir, NFS_CAP_READDIRPLUS))
678 void nfs_readdir_record_entry_cache_hit(struct inode *dir)
680 struct nfs_inode *nfsi = NFS_I(dir);
683 if (nfs_server_capable(dir, NFS_CAP_READDIRPLUS) &&
684 S_ISDIR(dir->i_mode)) {
697 void nfs_readdir_record_entry_cache_miss(struct inode *dir)
699 struct nfs_inode *nfsi = NFS_I(dir);
702 if (nfs_server_capable(dir, NFS_CAP_READDIRPLUS) &&
703 S_ISDIR(dir->i_mode)) {
711 static void nfs_lookup_advise_force_readdirplus(struct inode *dir,
714 if (nfs_server_capable(dir, NFS_CAP_CASE_INSENSITIVE))
718 nfs_readdir_record_entry_cache_miss(dir);
1326 dfprintk(FILE, "NFS: llseek dir(%pD2, %lld, %d)\n",
1370 dfprintk(FILE, "NFS: fsync dir(%pD2) datasync %d\n", filp, datasync);
1378 * @dir: pointer to directory inode
1381 * full lookup on all child dentries of 'dir' whenever a change occurs
1387 * The caller should be holding dir->i_lock
1389 void nfs_force_lookup_revalidate(struct inode *dir)
1391 NFS_I(dir)->cache_change_attribute += 2;
1397 * @dir: pointer to parent directory inode
1404 static bool nfs_verify_change_attribute(struct inode *dir, unsigned long verf)
1406 return (verf & ~1UL) == nfs_save_change_attribute(dir);
1434 struct inode *dir = d_inode_rcu(dentry->d_parent);
1436 if (!dir || !nfs_verify_change_attribute(dir, verf))
1464 * nfs_clear_verifier_delegated - clear the dir verifier delegation tag
1490 static int nfs_dentry_verify_change(struct inode *dir, struct dentry *dentry)
1492 if (nfs_server_capable(dir, NFS_CAP_CASE_INSENSITIVE) &&
1494 return dentry->d_time == inode_peek_iversion_raw(dir);
1495 return nfs_verify_change_attribute(dir, dentry->d_time);
1504 static int nfs_check_verifier(struct inode *dir, struct dentry *dentry,
1509 if (NFS_SERVER(dir)->flags & NFS_MOUNT_LOOKUP_CACHE_NONE)
1511 if (!nfs_dentry_verify_change(dir, dentry))
1514 if (nfs_mapping_need_revalidate_inode(dir)) {
1517 if (__nfs_revalidate_inode(NFS_SERVER(dir), dir) < 0)
1520 if (!nfs_dentry_verify_change(dir, dentry))
1529 static int nfs_is_exclusive_create(struct inode *dir, unsigned int flags)
1531 if (NFS_PROTO(dir)->version == 2)
1608 int nfs_neg_need_reval(struct inode *dir, struct dentry *dentry,
1613 if (NFS_SERVER(dir)->flags & NFS_MOUNT_LOOKUP_CACHE_NONEG)
1616 if (nfs_server_capable(dir, NFS_CAP_CASE_INSENSITIVE))
1618 return !nfs_check_verifier(dir, dentry, flags & LOOKUP_RCU);
1622 nfs_lookup_revalidate_done(struct inode *dir, struct dentry *dentry,
1639 trace_nfs_lookup_revalidate_exit(dir, dentry, 0, error);
1644 nfs_lookup_revalidate_negative(struct inode *dir, struct dentry *dentry,
1648 if (nfs_neg_need_reval(dir, dentry, flags)) {
1653 return nfs_lookup_revalidate_done(dir, dentry, NULL, ret);
1657 nfs_lookup_revalidate_delegated(struct inode *dir, struct dentry *dentry,
1660 nfs_set_verifier(dentry, nfs_save_change_attribute(dir));
1661 return nfs_lookup_revalidate_done(dir, dentry, inode, 1);
1664 static int nfs_lookup_revalidate_dentry(struct inode *dir,
1673 trace_nfs_lookup_revalidate_enter(dir, dentry, flags);
1681 dir_verifier = nfs_save_change_attribute(dir);
1682 ret = NFS_PROTO(dir)->lookup(dir, dentry, fhandle, fattr);
1697 nfs_lookup_advise_force_readdirplus(dir, flags);
1717 if (!ret && nfs_dentry_verify_change(dir, dentry))
1718 nfs_mark_dir_for_revalidate(dir);
1719 return nfs_lookup_revalidate_done(dir, dentry, inode, ret);
1734 nfs_do_lookup_revalidate(struct inode *dir, struct dentry *dentry,
1740 nfs_inc_stats(dir, NFSIOS_DENTRYREVALIDATE);
1744 return nfs_lookup_revalidate_negative(dir, dentry, flags);
1753 nfs_server_capable(dir, NFS_CAP_CASE_INSENSITIVE))
1757 return nfs_lookup_revalidate_delegated(dir, dentry, inode);
1761 nfs_check_verifier(dir, dentry, flags & LOOKUP_RCU)) {
1765 nfs_mark_dir_for_revalidate(dir);
1777 return nfs_lookup_revalidate_dentry(dir, dentry, inode, flags);
1779 return nfs_lookup_revalidate_done(dir, dentry, inode, 1);
1783 return nfs_lookup_revalidate_done(dir, dentry, inode, 0);
1791 struct inode *dir;
1798 dir = d_inode_rcu(parent);
1799 if (!dir)
1801 ret = reval(dir, dentry, flags);
1824 * parent dir (e.g.: ".", "..", procfs symlinks or mountpoint traversals).
1930 struct dentry *nfs_lookup(struct inode *dir, struct dentry * dentry, unsigned int flags)
1940 nfs_inc_stats(dir, NFSIOS_VFSLOOKUP);
1942 if (unlikely(dentry->d_name.len > NFS_SERVER(dir)->namelen))
1949 if (nfs_is_exclusive_create(dir, flags) || flags & LOOKUP_RENAME_TARGET)
1954 fattr = nfs_alloc_fattr_with_label(NFS_SERVER(dir));
1958 dir_verifier = nfs_save_change_attribute(dir);
1959 trace_nfs_lookup_enter(dir, dentry, flags);
1960 error = NFS_PROTO(dir)->lookup(dir, dentry, fhandle, fattr);
1962 if (nfs_server_capable(dir, NFS_CAP_CASE_INSENSITIVE))
1963 dir_verifier = inode_peek_iversion_raw(dir);
1976 nfs_lookup_advise_force_readdirplus(dir, flags);
1987 trace_nfs_lookup_exit(dir, dentry, flags, PTR_ERR_OR_ZERO(res));
2043 int nfs_atomic_open(struct inode *dir, struct dentry *dentry,
2062 dir->i_sb->s_id, dir->i_ino, dentry);
2082 if (dentry->d_name.len > NFS_SERVER(dir)->namelen)
2086 struct nfs_server *server = NFS_SERVER(dir);
2115 trace_nfs_atomic_open_enter(dir, ctx, open_flags);
2116 inode = NFS_PROTO(dir)->open_context(dir, ctx, open_flags, &attr, &created);
2121 trace_nfs_atomic_open_exit(dir, ctx, open_flags, err);
2127 if (nfs_server_capable(dir, NFS_CAP_CASE_INSENSITIVE))
2128 dir_verifier = inode_peek_iversion_raw(dir);
2130 dir_verifier = nfs_save_change_attribute(dir);
2149 trace_nfs_atomic_open_exit(dir, ctx, open_flags, err);
2159 res = nfs_lookup(dir, dentry, lookup_flags);
2192 nfs4_do_lookup_revalidate(struct inode *dir, struct dentry *dentry,
2197 trace_nfs_lookup_revalidate_enter(dir, dentry, flags);
2213 return nfs_lookup_revalidate_delegated(dir, dentry, inode);
2224 if (!nfs_check_verifier(dir, dentry, flags & LOOKUP_RCU))
2232 return nfs_lookup_revalidate_dentry(dir, dentry, inode, flags);
2235 return nfs_do_lookup_revalidate(dir, dentry, flags);
2251 struct inode *dir = d_inode(parent);
2259 error = NFS_PROTO(dir)->lookup(dir, dentry, fhandle, fattr);
2263 nfs_set_verifier(dentry, nfs_save_change_attribute(dir));
2306 int nfs_create(struct mnt_idmap *idmap, struct inode *dir,
2314 dir->i_sb->s_id, dir->i_ino, dentry);
2319 trace_nfs_create_enter(dir, dentry, open_flags);
2320 error = NFS_PROTO(dir)->create(dir, dentry, &attr, open_flags);
2321 trace_nfs_create_exit(dir, dentry, open_flags, error);
2335 nfs_mknod(struct mnt_idmap *idmap, struct inode *dir,
2342 dir->i_sb->s_id, dir->i_ino, dentry);
2347 trace_nfs_mknod_enter(dir, dentry);
2348 status = NFS_PROTO(dir)->mknod(dir, dentry, &attr, rdev);
2349 trace_nfs_mknod_exit(dir, dentry, status);
2362 int nfs_mkdir(struct mnt_idmap *idmap, struct inode *dir,
2369 dir->i_sb->s_id, dir->i_ino, dentry);
2374 trace_nfs_mkdir_enter(dir, dentry);
2375 error = NFS_PROTO(dir)->mkdir(dir, dentry, &attr);
2376 trace_nfs_mkdir_exit(dir, dentry, error);
2392 static void nfs_dentry_remove_handle_error(struct inode *dir,
2399 nfs_set_verifier(dentry, nfs_save_change_attribute(dir));
2403 nfs_set_verifier(dentry, nfs_save_change_attribute(dir));
2407 int nfs_rmdir(struct inode *dir, struct dentry *dentry)
2412 dir->i_sb->s_id, dir->i_ino, dentry);
2414 trace_nfs_rmdir_enter(dir, dentry);
2417 error = NFS_PROTO(dir)->rmdir(dir, &dentry->d_name);
2428 error = NFS_PROTO(dir)->rmdir(dir, &dentry->d_name);
2429 nfs_dentry_remove_handle_error(dir, dentry, error);
2430 trace_nfs_rmdir_exit(dir, dentry, error);
2445 struct inode *dir = d_inode(dentry->d_parent);
2457 trace_nfs_remove_enter(dir, dentry);
2459 error = NFS_PROTO(dir)->remove(dir, dentry);
2463 error = NFS_PROTO(dir)->remove(dir, dentry);
2466 trace_nfs_remove_exit(dir, dentry, error);
2476 int nfs_unlink(struct inode *dir, struct dentry *dentry)
2480 dfprintk(VFS, "NFS: unlink(%s/%lu, %pd)\n", dir->i_sb->s_id,
2481 dir->i_ino, dentry);
2483 trace_nfs_unlink_enter(dir, dentry);
2490 error = nfs_sillyrename(dir, dentry);
2510 nfs_dentry_remove_handle_error(dir, dentry, error);
2514 trace_nfs_unlink_exit(dir, dentry, error);
2534 int nfs_symlink(struct mnt_idmap *idmap, struct inode *dir,
2543 dfprintk(VFS, "NFS: symlink(%s/%lu, %pd, %s)\n", dir->i_sb->s_id,
2544 dir->i_ino, dentry, symname);
2561 trace_nfs_symlink_enter(dir, dentry);
2562 error = NFS_PROTO(dir)->symlink(dir, dentry, folio, pathlen, &attr);
2563 trace_nfs_symlink_exit(dir, dentry, error);
2566 dir->i_sb->s_id, dir->i_ino,
2573 nfs_set_verifier(dentry, nfs_save_change_attribute(dir));
2591 nfs_link(struct dentry *old_dentry, struct inode *dir, struct dentry *dentry)
2599 trace_nfs_link_enter(inode, dir, dentry);
2603 error = NFS_PROTO(dir)->link(inode, dir, &dentry->d_name);
2605 nfs_set_verifier(dentry, nfs_save_change_attribute(dir));
2609 trace_nfs_link_exit(inode, dir, dentry, error);