inode.c (0f44da51aeef9c974ea744c0d9e24d54eec4e94c) inode.c (95ad37f90c338e3fd4abf61cecfe02b6f3e080f0)
1// SPDX-License-Identifier: GPL-2.0-only
2/*
3 * linux/fs/nfs/inode.c
4 *
5 * Copyright (C) 1992 Rick Sladkey
6 *
7 * nfs inode and superblock handling functions
8 *

--- 179 unchanged lines hidden (view full) ---

188
189bool nfs_check_cache_invalid(struct inode *inode, unsigned long flags)
190{
191 if (NFS_PROTO(inode)->have_delegation(inode, FMODE_READ))
192 return nfs_check_cache_invalid_delegated(inode, flags);
193
194 return nfs_check_cache_invalid_not_delegated(inode, flags);
195}
1// SPDX-License-Identifier: GPL-2.0-only
2/*
3 * linux/fs/nfs/inode.c
4 *
5 * Copyright (C) 1992 Rick Sladkey
6 *
7 * nfs inode and superblock handling functions
8 *

--- 179 unchanged lines hidden (view full) ---

188
189bool nfs_check_cache_invalid(struct inode *inode, unsigned long flags)
190{
191 if (NFS_PROTO(inode)->have_delegation(inode, FMODE_READ))
192 return nfs_check_cache_invalid_delegated(inode, flags);
193
194 return nfs_check_cache_invalid_not_delegated(inode, flags);
195}
196EXPORT_SYMBOL_GPL(nfs_check_cache_invalid);
196
197static void nfs_set_cache_invalid(struct inode *inode, unsigned long flags)
198{
199 struct nfs_inode *nfsi = NFS_I(inode);
200 bool have_delegation = NFS_PROTO(inode)->have_delegation(inode, FMODE_READ);
201
202 if (have_delegation) {
203 if (!(flags & NFS_INO_REVAL_FORCED))

--- 25 unchanged lines hidden (view full) ---

229 nfsi->attrtimeo_timestamp = jiffies;
230
231 memset(NFS_I(inode)->cookieverf, 0, sizeof(NFS_I(inode)->cookieverf));
232 if (S_ISREG(mode) || S_ISDIR(mode) || S_ISLNK(mode)) {
233 nfs_set_cache_invalid(inode, NFS_INO_INVALID_ATTR
234 | NFS_INO_INVALID_DATA
235 | NFS_INO_INVALID_ACCESS
236 | NFS_INO_INVALID_ACL
197
198static void nfs_set_cache_invalid(struct inode *inode, unsigned long flags)
199{
200 struct nfs_inode *nfsi = NFS_I(inode);
201 bool have_delegation = NFS_PROTO(inode)->have_delegation(inode, FMODE_READ);
202
203 if (have_delegation) {
204 if (!(flags & NFS_INO_REVAL_FORCED))

--- 25 unchanged lines hidden (view full) ---

230 nfsi->attrtimeo_timestamp = jiffies;
231
232 memset(NFS_I(inode)->cookieverf, 0, sizeof(NFS_I(inode)->cookieverf));
233 if (S_ISREG(mode) || S_ISDIR(mode) || S_ISLNK(mode)) {
234 nfs_set_cache_invalid(inode, NFS_INO_INVALID_ATTR
235 | NFS_INO_INVALID_DATA
236 | NFS_INO_INVALID_ACCESS
237 | NFS_INO_INVALID_ACL
238 | NFS_INO_INVALID_XATTR
237 | NFS_INO_REVAL_PAGECACHE);
238 } else
239 nfs_set_cache_invalid(inode, NFS_INO_INVALID_ATTR
240 | NFS_INO_INVALID_ACCESS
241 | NFS_INO_INVALID_ACL
239 | NFS_INO_REVAL_PAGECACHE);
240 } else
241 nfs_set_cache_invalid(inode, NFS_INO_INVALID_ATTR
242 | NFS_INO_INVALID_ACCESS
243 | NFS_INO_INVALID_ACL
244 | NFS_INO_INVALID_XATTR
242 | NFS_INO_REVAL_PAGECACHE);
243 nfs_zap_label_cache_locked(nfsi);
244}
245
246void nfs_zap_caches(struct inode *inode)
247{
248 spin_lock(&inode->i_lock);
249 nfs_zap_caches_locked(inode);

--- 1642 unchanged lines hidden (view full) ---

1892
1893 /* More cache consistency checks */
1894 if (fattr->valid & NFS_ATTR_FATTR_CHANGE) {
1895 if (!inode_eq_iversion_raw(inode, fattr->change_attr)) {
1896 /* Could it be a race with writeback? */
1897 if (!(have_writers || have_delegation)) {
1898 invalid |= NFS_INO_INVALID_DATA
1899 | NFS_INO_INVALID_ACCESS
245 | NFS_INO_REVAL_PAGECACHE);
246 nfs_zap_label_cache_locked(nfsi);
247}
248
249void nfs_zap_caches(struct inode *inode)
250{
251 spin_lock(&inode->i_lock);
252 nfs_zap_caches_locked(inode);

--- 1642 unchanged lines hidden (view full) ---

1895
1896 /* More cache consistency checks */
1897 if (fattr->valid & NFS_ATTR_FATTR_CHANGE) {
1898 if (!inode_eq_iversion_raw(inode, fattr->change_attr)) {
1899 /* Could it be a race with writeback? */
1900 if (!(have_writers || have_delegation)) {
1901 invalid |= NFS_INO_INVALID_DATA
1902 | NFS_INO_INVALID_ACCESS
1900 | NFS_INO_INVALID_ACL;
1903 | NFS_INO_INVALID_ACL
1904 | NFS_INO_INVALID_XATTR;
1901 /* Force revalidate of all attributes */
1902 save_cache_validity |= NFS_INO_INVALID_CTIME
1903 | NFS_INO_INVALID_MTIME
1904 | NFS_INO_INVALID_SIZE
1905 | NFS_INO_INVALID_OTHER;
1906 if (S_ISDIR(inode->i_mode))
1907 nfs_force_lookup_revalidate(inode);
1908 dprintk("NFS: change_attr change on server for file %s/%ld\n",

--- 186 unchanged lines hidden (view full) ---

2095 nfsi = kmem_cache_alloc(nfs_inode_cachep, GFP_KERNEL);
2096 if (!nfsi)
2097 return NULL;
2098 nfsi->flags = 0UL;
2099 nfsi->cache_validity = 0UL;
2100#if IS_ENABLED(CONFIG_NFS_V4)
2101 nfsi->nfs4_acl = NULL;
2102#endif /* CONFIG_NFS_V4 */
1905 /* Force revalidate of all attributes */
1906 save_cache_validity |= NFS_INO_INVALID_CTIME
1907 | NFS_INO_INVALID_MTIME
1908 | NFS_INO_INVALID_SIZE
1909 | NFS_INO_INVALID_OTHER;
1910 if (S_ISDIR(inode->i_mode))
1911 nfs_force_lookup_revalidate(inode);
1912 dprintk("NFS: change_attr change on server for file %s/%ld\n",

--- 186 unchanged lines hidden (view full) ---

2099 nfsi = kmem_cache_alloc(nfs_inode_cachep, GFP_KERNEL);
2100 if (!nfsi)
2101 return NULL;
2102 nfsi->flags = 0UL;
2103 nfsi->cache_validity = 0UL;
2104#if IS_ENABLED(CONFIG_NFS_V4)
2105 nfsi->nfs4_acl = NULL;
2106#endif /* CONFIG_NFS_V4 */
2107#ifdef CONFIG_NFS_V4_2
2108 nfsi->xattr_cache = NULL;
2109#endif
2103 return &nfsi->vfs_inode;
2104}
2105EXPORT_SYMBOL_GPL(nfs_alloc_inode);
2106
2107void nfs_free_inode(struct inode *inode)
2108{
2109 kmem_cache_free(nfs_inode_cachep, NFS_I(inode));
2110}

--- 208 unchanged lines hidden ---
2110 return &nfsi->vfs_inode;
2111}
2112EXPORT_SYMBOL_GPL(nfs_alloc_inode);
2113
2114void nfs_free_inode(struct inode *inode)
2115{
2116 kmem_cache_free(nfs_inode_cachep, NFS_I(inode));
2117}

--- 208 unchanged lines hidden ---