Lines Matching defs:nfsi

157 	struct nfs_inode *nfsi = NFS_I(inode);
159 return !time_in_range_open(jiffies, nfsi->read_cache_jiffies, nfsi->read_cache_jiffies + nfsi->attrtimeo);
179 static bool nfs_has_xattr_cache(const struct nfs_inode *nfsi)
181 return nfsi->xattr_cache != NULL;
184 static bool nfs_has_xattr_cache(const struct nfs_inode *nfsi)
192 struct nfs_inode *nfsi = NFS_I(inode);
203 if (!nfs_has_xattr_cache(nfsi))
209 nfsi->cache_validity |= flags;
212 nfsi->cache_validity &= ~NFS_INO_INVALID_DATA;
213 nfs_ooo_clear(nfsi);
214 } else if (nfsi->cache_validity & NFS_INO_INVALID_DATA) {
215 nfs_ooo_clear(nfsi);
226 struct nfs_inode *nfsi = NFS_I(inode);
231 nfsi->attrtimeo = NFS_MINATTRTIMEO(inode);
232 nfsi->attrtimeo_timestamp = jiffies;
245 nfs_zap_label_cache_locked(nfsi);
422 static void nfs_inode_init_regular(struct nfs_inode *nfsi)
424 atomic_long_set(&nfsi->nrequests, 0);
425 atomic_long_set(&nfsi->redirtied_pages, 0);
426 INIT_LIST_HEAD(&nfsi->commit_info.list);
427 atomic_long_set(&nfsi->commit_info.ncommit, 0);
428 atomic_set(&nfsi->commit_info.rpcs_out, 0);
429 mutex_init(&nfsi->commit_mutex);
432 static void nfs_inode_init_dir(struct nfs_inode *nfsi)
434 nfsi->cache_change_attribute = 0;
435 memset(nfsi->cookieverf, 0, sizeof(nfsi->cookieverf));
436 init_rwsem(&nfsi->rmdir_sem);
472 struct nfs_inode *nfsi = NFS_I(inode);
482 nfsi->cache_validity = 0;
493 nfs_inode_init_regular(nfsi);
498 nfs_inode_init_dir(nfsi);
524 nfsi->write_io = 0;
525 nfsi->read_io = 0;
527 nfsi->read_cache_jiffies = fattr->time_start;
528 nfsi->attr_gencount = fattr->gencount;
577 nfsi->attrtimeo = NFS_MINATTRTIMEO(inode);
578 nfsi->attrtimeo_timestamp = now;
579 nfsi->access_cache = RB_ROOT;
1007 struct nfs_inode *nfsi;
1017 nfsi = NFS_I(inode);
1020 if (nfsi->cache_validity & NFS_INO_INVALID_DATA)
1022 if (!list_empty(&nfsi->open_files))
1108 struct nfs_inode *nfsi = NFS_I(inode);
1111 if (list_empty(&nfsi->open_files) &&
1112 nfs_ooo_test(nfsi))
1115 list_add_tail_rcu(&ctx->list, &nfsi->open_files);
1134 struct nfs_inode *nfsi = NFS_I(inode);
1138 list_for_each_entry_rcu(pos, &nfsi->open_files, list) {
1198 struct nfs_inode *nfsi = NFS_I(inode);
1252 if (nfsi->cache_validity & NFS_INO_INVALID_ACL)
1321 struct nfs_inode *nfsi = NFS_I(inode);
1322 unsigned long *bitlock = &nfsi->flags;
1348 if (nfsi->cache_validity & NFS_INO_INVALID_DATA)
1356 nfsi->cache_validity &= ~NFS_INO_INVALID_DATA;
1357 nfs_ooo_clear(nfsi);
1378 struct nfs_inode *nfsi = NFS_I(inode);
1379 unsigned long *bitlock = &nfsi->flags;
1390 (nfsi->cache_validity & NFS_INO_INVALID_DATA))
1417 static bool nfs_file_has_writers(struct nfs_inode *nfsi)
1419 struct inode *inode = &nfsi->vfs_inode;
1423 if (list_empty(&nfsi->open_files))
1428 static bool nfs_file_has_buffered_writers(struct nfs_inode *nfsi)
1430 return nfs_file_has_writers(nfsi) && nfs_file_io_is_buffered(nfsi);
1480 struct nfs_inode *nfsi = NFS_I(inode);
1493 } else if (nfsi->fileid != fattr->fileid) {
1496 nfsi->fileid == fattr->mounted_on_fileid)
1504 if (!nfs_file_has_buffered_writers(nfsi)) {
1544 nfsi->read_cache_jiffies = fattr->time_start;
1819 static void nfs_ooo_merge(struct nfs_inode *nfsi,
1824 if (nfsi->cache_validity & NFS_INO_DATA_INVAL_DEFER)
1828 if (!nfsi->ooo) {
1829 nfsi->ooo = kmalloc(sizeof(*nfsi->ooo), GFP_ATOMIC);
1830 if (!nfsi->ooo) {
1831 nfsi->cache_validity |= NFS_INO_DATA_INVAL_DEFER;
1834 nfsi->ooo->cnt = 0;
1838 cnt = nfsi->ooo->cnt;
1840 if (end == nfsi->ooo->gap[i].start)
1841 end = nfsi->ooo->gap[i].end;
1842 else if (start == nfsi->ooo->gap[i].end)
1843 start = nfsi->ooo->gap[i].start;
1848 nfsi->ooo->gap[i] = nfsi->ooo->gap[cnt];
1852 if (cnt >= ARRAY_SIZE(nfsi->ooo->gap)) {
1853 nfsi->cache_validity |= NFS_INO_DATA_INVAL_DEFER;
1854 kfree(nfsi->ooo);
1855 nfsi->ooo = NULL;
1858 nfsi->ooo->gap[cnt].start = start;
1859 nfsi->ooo->gap[cnt].end = end;
1862 nfsi->ooo->cnt = cnt;
1865 static void nfs_ooo_record(struct nfs_inode *nfsi,
1874 nfs_ooo_merge(nfsi,
2061 struct nfs_inode *nfsi = NFS_I(inode);
2067 bool have_writers = nfs_file_has_buffered_writers(nfsi);
2082 } else if (nfsi->fileid != fattr->fileid) {
2085 nfsi->fileid == fattr->mounted_on_fileid)
2090 inode->i_sb->s_id, (long long)nfsi->fileid,
2119 nfsi->read_cache_jiffies = fattr->time_start;
2121 save_cache_validity = nfsi->cache_validity;
2122 nfsi->cache_validity &= ~(NFS_INO_INVALID_ATTR
2131 nfsi->cache_validity |=
2141 if (!have_writers && nfsi->ooo && nfsi->ooo->cnt == 1 &&
2142 nfsi->ooo->gap[0].end == inode_peek_iversion_raw(inode)) {
2146 inode_set_iversion_raw(inode, nfsi->ooo->gap[0].start);
2147 kfree(nfsi->ooo);
2148 nfsi->ooo = NULL;
2172 nfs_ooo_record(nfsi, fattr);
2173 nfs_ooo_merge(nfsi, inode_peek_iversion_raw(inode),
2179 nfsi->cache_validity |=
2182 (nfsi->cache_validity & NFS_INO_INVALID_CHANGE) != 0)
2189 nfsi->cache_validity |=
2195 nfsi->cache_validity |=
2219 nfsi->cache_validity |=
2225 nfsi->cache_validity |=
2237 nfsi->cache_validity |=
2247 nfsi->cache_validity |=
2257 nfsi->cache_validity |=
2264 nfsi->cache_validity |=
2273 nfsi->cache_validity |=
2279 nfsi->cache_validity |=
2285 nfsi->attrtimeo = NFS_MINATTRTIMEO(inode);
2286 nfsi->attrtimeo_timestamp = now;
2288 nfsi->attr_gencount = nfs_inc_attr_generation_counter();
2291 if (!time_in_range_open(now, nfsi->attrtimeo_timestamp,
2292 nfsi->attrtimeo_timestamp + nfsi->attrtimeo)) {
2293 nfsi->attrtimeo <<= 1;
2294 if (nfsi->attrtimeo > NFS_MAXATTRTIMEO(inode))
2295 nfsi->attrtimeo = NFS_MAXATTRTIMEO(inode);
2297 nfsi->attrtimeo_timestamp = now;
2300 if ((long)(fattr->gencount - nfsi->attr_gencount) > 0)
2301 nfsi->attr_gencount = fattr->gencount;
2323 struct nfs_inode *nfsi;
2324 nfsi = alloc_inode_sb(sb, nfs_inode_cachep, GFP_KERNEL);
2325 if (!nfsi)
2327 nfsi->flags = 0UL;
2328 nfsi->cache_validity = 0UL;
2329 nfsi->ooo = NULL;
2331 nfsi->nfs4_acl = NULL;
2334 nfsi->xattr_cache = NULL;
2336 nfs_netfs_inode_init(nfsi);
2338 return &nfsi->vfs_inode;
2349 static inline void nfs4_init_once(struct nfs_inode *nfsi)
2352 INIT_LIST_HEAD(&nfsi->open_states);
2353 nfsi->delegation = NULL;
2354 init_rwsem(&nfsi->rwsem);
2355 nfsi->layout = NULL;
2361 struct nfs_inode *nfsi = foo;
2363 inode_init_once(&nfsi->vfs_inode);
2364 INIT_LIST_HEAD(&nfsi->open_files);
2365 INIT_LIST_HEAD(&nfsi->access_cache_entry_lru);
2366 INIT_LIST_HEAD(&nfsi->access_cache_inode_lru);
2367 nfs4_init_once(nfsi);