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 --- |