Lines Matching refs:inode

63 static void nfs_invalidate_inode(struct inode *);
64 static int nfs_update_inode(struct inode *, struct nfs_fattr *);
111 int nfs_drop_inode(struct inode *inode) in nfs_drop_inode() argument
113 return NFS_STALE(inode) || generic_drop_inode(inode); in nfs_drop_inode()
117 void nfs_clear_inode(struct inode *inode) in nfs_clear_inode() argument
122 WARN_ON_ONCE(nfs_have_writebacks(inode)); in nfs_clear_inode()
123 WARN_ON_ONCE(!list_empty(&NFS_I(inode)->open_files)); in nfs_clear_inode()
124 nfs_zap_acl_cache(inode); in nfs_clear_inode()
125 nfs_access_zap_cache(inode); in nfs_clear_inode()
126 nfs_fscache_clear_inode(inode); in nfs_clear_inode()
130 void nfs_evict_inode(struct inode *inode) in nfs_evict_inode() argument
132 truncate_inode_pages_final(&inode->i_data); in nfs_evict_inode()
133 clear_inode(inode); in nfs_evict_inode()
134 nfs_clear_inode(inode); in nfs_evict_inode()
137 int nfs_sync_inode(struct inode *inode) in nfs_sync_inode() argument
139 inode_dio_wait(inode); in nfs_sync_inode()
140 return nfs_wb_all(inode); in nfs_sync_inode()
158 static int nfs_attribute_timeout(struct inode *inode) in nfs_attribute_timeout() argument
160 struct nfs_inode *nfsi = NFS_I(inode); in nfs_attribute_timeout()
165 static bool nfs_check_cache_invalid_delegated(struct inode *inode, unsigned long flags) in nfs_check_cache_invalid_delegated() argument
167 unsigned long cache_validity = READ_ONCE(NFS_I(inode)->cache_validity); in nfs_check_cache_invalid_delegated()
176 static bool nfs_check_cache_invalid_not_delegated(struct inode *inode, unsigned long flags) in nfs_check_cache_invalid_not_delegated() argument
178 unsigned long cache_validity = READ_ONCE(NFS_I(inode)->cache_validity); in nfs_check_cache_invalid_not_delegated()
182 if (nfs_attribute_timeout(inode)) in nfs_check_cache_invalid_not_delegated()
187 bool nfs_check_cache_invalid(struct inode *inode, unsigned long flags) in nfs_check_cache_invalid() argument
189 if (NFS_PROTO(inode)->have_delegation(inode, FMODE_READ)) in nfs_check_cache_invalid()
190 return nfs_check_cache_invalid_delegated(inode, flags); in nfs_check_cache_invalid()
192 return nfs_check_cache_invalid_not_delegated(inode, flags); in nfs_check_cache_invalid()
195 static void nfs_set_cache_invalid(struct inode *inode, unsigned long flags) in nfs_set_cache_invalid() argument
197 struct nfs_inode *nfsi = NFS_I(inode); in nfs_set_cache_invalid()
198 bool have_delegation = NFS_PROTO(inode)->have_delegation(inode, FMODE_READ); in nfs_set_cache_invalid()
208 if (inode->i_mapping->nrpages == 0) in nfs_set_cache_invalid()
212 nfs_fscache_invalidate(inode); in nfs_set_cache_invalid()
218 static void nfs_zap_caches_locked(struct inode *inode) in nfs_zap_caches_locked() argument
220 struct nfs_inode *nfsi = NFS_I(inode); in nfs_zap_caches_locked()
221 int mode = inode->i_mode; in nfs_zap_caches_locked()
223 nfs_inc_stats(inode, NFSIOS_ATTRINVALIDATE); in nfs_zap_caches_locked()
225 nfsi->attrtimeo = NFS_MINATTRTIMEO(inode); in nfs_zap_caches_locked()
228 memset(NFS_I(inode)->cookieverf, 0, sizeof(NFS_I(inode)->cookieverf)); in nfs_zap_caches_locked()
230 nfs_set_cache_invalid(inode, NFS_INO_INVALID_ATTR in nfs_zap_caches_locked()
236 nfs_set_cache_invalid(inode, NFS_INO_INVALID_ATTR in nfs_zap_caches_locked()
243 void nfs_zap_caches(struct inode *inode) in nfs_zap_caches() argument
245 spin_lock(&inode->i_lock); in nfs_zap_caches()
246 nfs_zap_caches_locked(inode); in nfs_zap_caches()
247 spin_unlock(&inode->i_lock); in nfs_zap_caches()
250 void nfs_zap_mapping(struct inode *inode, struct address_space *mapping) in nfs_zap_mapping() argument
253 spin_lock(&inode->i_lock); in nfs_zap_mapping()
254 nfs_set_cache_invalid(inode, NFS_INO_INVALID_DATA); in nfs_zap_mapping()
255 spin_unlock(&inode->i_lock); in nfs_zap_mapping()
259 void nfs_zap_acl_cache(struct inode *inode) in nfs_zap_acl_cache() argument
261 void (*clear_acl_cache)(struct inode *); in nfs_zap_acl_cache()
263 clear_acl_cache = NFS_PROTO(inode)->clear_acl_cache; in nfs_zap_acl_cache()
265 clear_acl_cache(inode); in nfs_zap_acl_cache()
266 spin_lock(&inode->i_lock); in nfs_zap_acl_cache()
267 NFS_I(inode)->cache_validity &= ~NFS_INO_INVALID_ACL; in nfs_zap_acl_cache()
268 spin_unlock(&inode->i_lock); in nfs_zap_acl_cache()
272 void nfs_invalidate_atime(struct inode *inode) in nfs_invalidate_atime() argument
274 spin_lock(&inode->i_lock); in nfs_invalidate_atime()
275 nfs_set_cache_invalid(inode, NFS_INO_INVALID_ATIME); in nfs_invalidate_atime()
276 spin_unlock(&inode->i_lock); in nfs_invalidate_atime()
284 static void nfs_invalidate_inode(struct inode *inode) in nfs_invalidate_inode() argument
286 set_bit(NFS_INO_STALE, &NFS_I(inode)->flags); in nfs_invalidate_inode()
287 nfs_zap_caches_locked(inode); in nfs_invalidate_inode()
302 nfs_find_actor(struct inode *inode, void *opaque) in nfs_find_actor() argument
308 if (NFS_FILEID(inode) != fattr->fileid) in nfs_find_actor()
310 if ((S_IFMT & inode->i_mode) != (S_IFMT & fattr->mode)) in nfs_find_actor()
312 if (nfs_compare_fh(NFS_FH(inode), fh)) in nfs_find_actor()
314 if (is_bad_inode(inode) || NFS_STALE(inode)) in nfs_find_actor()
320 nfs_init_locked(struct inode *inode, void *opaque) in nfs_init_locked() argument
325 set_nfs_fileid(inode, fattr->fileid); in nfs_init_locked()
326 inode->i_mode = fattr->mode; in nfs_init_locked()
327 nfs_copy_fh(NFS_FH(inode), desc->fh); in nfs_init_locked()
332 static void nfs_clear_label_invalid(struct inode *inode) in nfs_clear_label_invalid() argument
334 spin_lock(&inode->i_lock); in nfs_clear_label_invalid()
335 NFS_I(inode)->cache_validity &= ~NFS_INO_INVALID_LABEL; in nfs_clear_label_invalid()
336 spin_unlock(&inode->i_lock); in nfs_clear_label_invalid()
339 void nfs_setsecurity(struct inode *inode, struct nfs_fattr *fattr, in nfs_setsecurity() argument
347 if ((fattr->valid & NFS_ATTR_FATTR_V4_SECURITY_LABEL) && inode->i_security) { in nfs_setsecurity()
348 error = security_inode_notifysecctx(inode, label->label, in nfs_setsecurity()
356 nfs_clear_label_invalid(inode); in nfs_setsecurity()
386 void nfs_setsecurity(struct inode *inode, struct nfs_fattr *fattr, in nfs_setsecurity() argument
394 struct inode *
401 struct inode *inode; in nfs_ilookup() local
409 inode = ilookup5(sb, hash, nfs_find_actor, &desc); in nfs_ilookup()
411 dprintk("%s: returning %p\n", __func__, inode); in nfs_ilookup()
412 return inode; in nfs_ilookup()
419 struct inode *
426 struct inode *inode = ERR_PTR(-ENOENT); in nfs_fhget() local
440 inode = iget5_locked(sb, hash, nfs_find_actor, nfs_init_locked, &desc); in nfs_fhget()
441 if (inode == NULL) { in nfs_fhget()
442 inode = ERR_PTR(-ENOMEM); in nfs_fhget()
446 if (inode->i_state & I_NEW) { in nfs_fhget()
447 struct nfs_inode *nfsi = NFS_I(inode); in nfs_fhget()
452 inode->i_ino = hash; in nfs_fhget()
455 inode->i_flags |= S_NOATIME|S_NOCMTIME; in nfs_fhget()
456 inode->i_mode = fattr->mode; in nfs_fhget()
459 && nfs_server_capable(inode, NFS_CAP_MODE)) in nfs_fhget()
460 nfs_set_cache_invalid(inode, NFS_INO_INVALID_OTHER); in nfs_fhget()
464 inode->i_op = NFS_SB(sb)->nfs_client->rpc_ops->file_inode_ops; in nfs_fhget()
465 if (S_ISREG(inode->i_mode)) { in nfs_fhget()
466 inode->i_fop = NFS_SB(sb)->nfs_client->rpc_ops->file_ops; in nfs_fhget()
467 inode->i_data.a_ops = &nfs_file_aops; in nfs_fhget()
468 } else if (S_ISDIR(inode->i_mode)) { in nfs_fhget()
469 inode->i_op = NFS_SB(sb)->nfs_client->rpc_ops->dir_inode_ops; in nfs_fhget()
470 inode->i_fop = &nfs_dir_operations; in nfs_fhget()
471 inode->i_data.a_ops = &nfs_dir_aops; in nfs_fhget()
476 inode->i_op = &nfs_referral_inode_operations; in nfs_fhget()
478 inode->i_op = &nfs_mountpoint_inode_operations; in nfs_fhget()
479 inode->i_fop = NULL; in nfs_fhget()
480 inode->i_flags |= S_AUTOMOUNT; in nfs_fhget()
482 } else if (S_ISLNK(inode->i_mode)) { in nfs_fhget()
483 inode->i_op = &nfs_symlink_inode_operations; in nfs_fhget()
484 inode_nohighmem(inode); in nfs_fhget()
486 init_special_inode(inode, inode->i_mode, fattr->rdev); in nfs_fhget()
488 memset(&inode->i_atime, 0, sizeof(inode->i_atime)); in nfs_fhget()
489 memset(&inode->i_mtime, 0, sizeof(inode->i_mtime)); in nfs_fhget()
490 memset(&inode->i_ctime, 0, sizeof(inode->i_ctime)); in nfs_fhget()
491 inode_set_iversion_raw(inode, 0); in nfs_fhget()
492 inode->i_size = 0; in nfs_fhget()
493 clear_nlink(inode); in nfs_fhget()
494 inode->i_uid = make_kuid(&init_user_ns, -2); in nfs_fhget()
495 inode->i_gid = make_kgid(&init_user_ns, -2); in nfs_fhget()
496 inode->i_blocks = 0; in nfs_fhget()
504 inode->i_atime = timespec_to_timespec64(fattr->atime); in nfs_fhget()
505 else if (nfs_server_capable(inode, NFS_CAP_ATIME)) in nfs_fhget()
506 nfs_set_cache_invalid(inode, NFS_INO_INVALID_ATIME); in nfs_fhget()
508 inode->i_mtime = timespec_to_timespec64(fattr->mtime); in nfs_fhget()
509 else if (nfs_server_capable(inode, NFS_CAP_MTIME)) in nfs_fhget()
510 nfs_set_cache_invalid(inode, NFS_INO_INVALID_MTIME); in nfs_fhget()
512 inode->i_ctime = timespec_to_timespec64(fattr->ctime); in nfs_fhget()
513 else if (nfs_server_capable(inode, NFS_CAP_CTIME)) in nfs_fhget()
514 nfs_set_cache_invalid(inode, NFS_INO_INVALID_CTIME); in nfs_fhget()
516 inode_set_iversion_raw(inode, fattr->change_attr); in nfs_fhget()
518 nfs_set_cache_invalid(inode, NFS_INO_INVALID_CHANGE); in nfs_fhget()
520 inode->i_size = nfs_size_to_loff_t(fattr->size); in nfs_fhget()
522 nfs_set_cache_invalid(inode, NFS_INO_INVALID_SIZE); in nfs_fhget()
524 set_nlink(inode, fattr->nlink); in nfs_fhget()
525 else if (nfs_server_capable(inode, NFS_CAP_NLINK)) in nfs_fhget()
526 nfs_set_cache_invalid(inode, NFS_INO_INVALID_OTHER); in nfs_fhget()
528 inode->i_uid = fattr->uid; in nfs_fhget()
529 else if (nfs_server_capable(inode, NFS_CAP_OWNER)) in nfs_fhget()
530 nfs_set_cache_invalid(inode, NFS_INO_INVALID_OTHER); in nfs_fhget()
532 inode->i_gid = fattr->gid; in nfs_fhget()
533 else if (nfs_server_capable(inode, NFS_CAP_OWNER_GROUP)) in nfs_fhget()
534 nfs_set_cache_invalid(inode, NFS_INO_INVALID_OTHER); in nfs_fhget()
536 inode->i_blocks = fattr->du.nfs2.blocks; in nfs_fhget()
541 inode->i_blocks = nfs_calc_block_size(fattr->du.nfs3.used); in nfs_fhget()
547 nfs_setsecurity(inode, fattr, label); in nfs_fhget()
549 nfsi->attrtimeo = NFS_MINATTRTIMEO(inode); in nfs_fhget()
553 nfs_fscache_init_inode(inode); in nfs_fhget()
555 unlock_new_inode(inode); in nfs_fhget()
557 int err = nfs_refresh_inode(inode, fattr); in nfs_fhget()
559 iput(inode); in nfs_fhget()
560 inode = ERR_PTR(err); in nfs_fhget()
565 inode->i_sb->s_id, in nfs_fhget()
566 (unsigned long long)NFS_FILEID(inode), in nfs_fhget()
568 atomic_read(&inode->i_count)); in nfs_fhget()
571 return inode; in nfs_fhget()
574 dprintk("nfs_fhget: iget failed with error %ld\n", PTR_ERR(inode)); in nfs_fhget()
584 struct inode *inode = d_inode(dentry); in nfs_setattr() local
588 nfs_inc_stats(inode, NFSIOS_VFSSETATTR); in nfs_setattr()
595 BUG_ON(!S_ISREG(inode->i_mode)); in nfs_setattr()
597 error = inode_newsize_ok(inode, attr->ia_size); in nfs_setattr()
601 if (attr->ia_size == i_size_read(inode)) in nfs_setattr()
610 trace_nfs_setattr_enter(inode); in nfs_setattr()
613 if (S_ISREG(inode->i_mode)) in nfs_setattr()
614 nfs_sync_inode(inode); in nfs_setattr()
622 error = NFS_PROTO(inode)->setattr(dentry, fattr, attr); in nfs_setattr()
624 error = nfs_refresh_inode(inode, fattr); in nfs_setattr()
627 trace_nfs_setattr_exit(inode, error); in nfs_setattr()
642 static int nfs_vmtruncate(struct inode * inode, loff_t offset) in nfs_vmtruncate() argument
646 err = inode_newsize_ok(inode, offset); in nfs_vmtruncate()
650 i_size_write(inode, offset); in nfs_vmtruncate()
653 NFS_I(inode)->cache_validity &= ~NFS_INO_INVALID_DATA; in nfs_vmtruncate()
654 NFS_I(inode)->cache_validity &= ~NFS_INO_INVALID_SIZE; in nfs_vmtruncate()
656 spin_unlock(&inode->i_lock); in nfs_vmtruncate()
657 truncate_pagecache(inode, offset); in nfs_vmtruncate()
658 spin_lock(&inode->i_lock); in nfs_vmtruncate()
672 void nfs_setattr_update_inode(struct inode *inode, struct iattr *attr, in nfs_setattr_update_inode() argument
678 spin_lock(&inode->i_lock); in nfs_setattr_update_inode()
679 NFS_I(inode)->attr_gencount = fattr->gencount; in nfs_setattr_update_inode()
681 nfs_set_cache_invalid(inode, NFS_INO_INVALID_MTIME); in nfs_setattr_update_inode()
682 nfs_inc_stats(inode, NFSIOS_SETATTRTRUNC); in nfs_setattr_update_inode()
683 nfs_vmtruncate(inode, attr->ia_size); in nfs_setattr_update_inode()
686 NFS_I(inode)->cache_validity &= ~NFS_INO_INVALID_CTIME; in nfs_setattr_update_inode()
689 mode |= inode->i_mode & ~S_IALLUGO; in nfs_setattr_update_inode()
690 inode->i_mode = mode; in nfs_setattr_update_inode()
693 inode->i_uid = attr->ia_uid; in nfs_setattr_update_inode()
695 inode->i_gid = attr->ia_gid; in nfs_setattr_update_inode()
697 inode->i_ctime = timespec_to_timespec64(fattr->ctime); in nfs_setattr_update_inode()
699 nfs_set_cache_invalid(inode, NFS_INO_INVALID_CHANGE in nfs_setattr_update_inode()
701 nfs_set_cache_invalid(inode, NFS_INO_INVALID_ACCESS in nfs_setattr_update_inode()
705 NFS_I(inode)->cache_validity &= ~(NFS_INO_INVALID_ATIME in nfs_setattr_update_inode()
708 inode->i_atime = timespec_to_timespec64(fattr->atime); in nfs_setattr_update_inode()
710 inode->i_atime = attr->ia_atime; in nfs_setattr_update_inode()
712 nfs_set_cache_invalid(inode, NFS_INO_INVALID_ATIME); in nfs_setattr_update_inode()
715 inode->i_ctime = timespec_to_timespec64(fattr->ctime); in nfs_setattr_update_inode()
717 nfs_set_cache_invalid(inode, NFS_INO_INVALID_CHANGE in nfs_setattr_update_inode()
721 NFS_I(inode)->cache_validity &= ~(NFS_INO_INVALID_MTIME in nfs_setattr_update_inode()
724 inode->i_mtime = timespec_to_timespec64(fattr->mtime); in nfs_setattr_update_inode()
726 inode->i_mtime = attr->ia_mtime; in nfs_setattr_update_inode()
728 nfs_set_cache_invalid(inode, NFS_INO_INVALID_MTIME); in nfs_setattr_update_inode()
731 inode->i_ctime = timespec_to_timespec64(fattr->ctime); in nfs_setattr_update_inode()
733 nfs_set_cache_invalid(inode, NFS_INO_INVALID_CHANGE in nfs_setattr_update_inode()
737 nfs_update_inode(inode, fattr); in nfs_setattr_update_inode()
738 spin_unlock(&inode->i_lock); in nfs_setattr_update_inode()
764 static bool nfs_need_revalidate_inode(struct inode *inode) in nfs_need_revalidate_inode() argument
766 if (NFS_I(inode)->cache_validity & in nfs_need_revalidate_inode()
769 if (nfs_attribute_cache_expired(inode)) in nfs_need_revalidate_inode()
777 struct inode *inode = d_inode(path->dentry); in nfs_getattr() local
778 struct nfs_server *server = NFS_SERVER(inode); in nfs_getattr()
784 trace_nfs_getattr_enter(inode); in nfs_getattr()
791 S_ISREG(inode->i_mode)) { in nfs_getattr()
792 err = filemap_write_and_wait(inode->i_mapping); in nfs_getattr()
807 ((path->mnt->mnt_flags & MNT_NODIRATIME) && S_ISDIR(inode->i_mode))) in nfs_getattr()
817 do_update |= force_sync || nfs_attribute_cache_expired(inode); in nfs_getattr()
818 cache_validity = READ_ONCE(NFS_I(inode)->cache_validity); in nfs_getattr()
831 err = __nfs_revalidate_inode(server, inode); in nfs_getattr()
840 generic_fillattr(inode, stat); in nfs_getattr()
841 stat->ino = nfs_compat_user_ino64(NFS_FILEID(inode)); in nfs_getattr()
842 if (S_ISDIR(inode->i_mode)) in nfs_getattr()
843 stat->blksize = NFS_SERVER(inode)->dtsize; in nfs_getattr()
845 trace_nfs_getattr_exit(inode, err); in nfs_getattr()
875 struct inode *inode = d_inode(ctx->dentry); in nfs_get_lock_context() local
877 spin_lock(&inode->i_lock); in nfs_get_lock_context()
880 spin_unlock(&inode->i_lock); in nfs_get_lock_context()
885 spin_lock(&inode->i_lock); in nfs_get_lock_context()
894 spin_unlock(&inode->i_lock); in nfs_get_lock_context()
903 struct inode *inode = d_inode(ctx->dentry); in nfs_put_lock_context() local
905 if (!refcount_dec_and_lock(&l_ctx->count, &inode->i_lock)) in nfs_put_lock_context()
908 spin_unlock(&inode->i_lock); in nfs_put_lock_context()
925 struct inode *inode; in nfs_close_context() local
932 inode = d_inode(ctx->dentry); in nfs_close_context()
933 if (NFS_PROTO(inode)->have_delegation(inode, FMODE_READ)) in nfs_close_context()
935 nfsi = NFS_I(inode); in nfs_close_context()
936 if (inode->i_mapping->nrpages == 0) in nfs_close_context()
942 server = NFS_SERVER(inode); in nfs_close_context()
945 nfs_revalidate_inode(server, inode); in nfs_close_context()
989 struct inode *inode = d_inode(ctx->dentry); in __put_nfs_open_context() local
993 if (!refcount_dec_and_lock(&ctx->lock_context.count, &inode->i_lock)) in __put_nfs_open_context()
996 spin_unlock(&inode->i_lock); in __put_nfs_open_context()
999 if (inode != NULL) in __put_nfs_open_context()
1000 NFS_PROTO(inode)->close_context(ctx, is_sync); in __put_nfs_open_context()
1026 struct inode *inode = d_inode(ctx->dentry); in nfs_inode_attach_open_context() local
1027 struct nfs_inode *nfsi = NFS_I(inode); in nfs_inode_attach_open_context()
1029 spin_lock(&inode->i_lock); in nfs_inode_attach_open_context()
1034 spin_unlock(&inode->i_lock); in nfs_inode_attach_open_context()
1049 struct nfs_open_context *nfs_find_open_context(struct inode *inode, struct rpc_cred *cred, fmode_t … in nfs_find_open_context() argument
1051 struct nfs_inode *nfsi = NFS_I(inode); in nfs_find_open_context()
1054 spin_lock(&inode->i_lock); in nfs_find_open_context()
1063 spin_unlock(&inode->i_lock); in nfs_find_open_context()
1072 struct inode *inode = d_inode(ctx->dentry); in nfs_file_clear_open_context() local
1079 invalidate_inode_pages2(inode->i_mapping); in nfs_file_clear_open_context()
1081 spin_lock(&inode->i_lock); in nfs_file_clear_open_context()
1082 list_move_tail(&ctx->list, &NFS_I(inode)->open_files); in nfs_file_clear_open_context()
1083 spin_unlock(&inode->i_lock); in nfs_file_clear_open_context()
1091 int nfs_open(struct inode *inode, struct file *filp) in nfs_open() argument
1100 nfs_fscache_open_file(inode, filp); in nfs_open()
1109 __nfs_revalidate_inode(struct nfs_server *server, struct inode *inode) in __nfs_revalidate_inode() argument
1114 struct nfs_inode *nfsi = NFS_I(inode); in __nfs_revalidate_inode()
1117 inode->i_sb->s_id, (unsigned long long)NFS_FILEID(inode)); in __nfs_revalidate_inode()
1119 trace_nfs_revalidate_inode_enter(inode); in __nfs_revalidate_inode()
1121 if (is_bad_inode(inode)) in __nfs_revalidate_inode()
1123 if (NFS_STALE(inode)) in __nfs_revalidate_inode()
1127 if (S_ISREG(inode->i_mode)) { in __nfs_revalidate_inode()
1128 status = pnfs_sync_inode(inode, false); in __nfs_revalidate_inode()
1138 nfs_inc_stats(inode, NFSIOS_INODEREVALIDATE); in __nfs_revalidate_inode()
1140 label = nfs4_label_alloc(NFS_SERVER(inode), GFP_KERNEL); in __nfs_revalidate_inode()
1146 status = NFS_PROTO(inode)->getattr(server, NFS_FH(inode), fattr, in __nfs_revalidate_inode()
1147 label, inode); in __nfs_revalidate_inode()
1150 inode->i_sb->s_id, in __nfs_revalidate_inode()
1151 (unsigned long long)NFS_FILEID(inode), status); in __nfs_revalidate_inode()
1153 nfs_zap_caches(inode); in __nfs_revalidate_inode()
1154 if (!S_ISDIR(inode->i_mode)) in __nfs_revalidate_inode()
1155 set_bit(NFS_INO_STALE, &NFS_I(inode)->flags); in __nfs_revalidate_inode()
1160 status = nfs_refresh_inode(inode, fattr); in __nfs_revalidate_inode()
1163 inode->i_sb->s_id, in __nfs_revalidate_inode()
1164 (unsigned long long)NFS_FILEID(inode), status); in __nfs_revalidate_inode()
1169 nfs_zap_acl_cache(inode); in __nfs_revalidate_inode()
1171 nfs_setsecurity(inode, fattr, label); in __nfs_revalidate_inode()
1174 inode->i_sb->s_id, in __nfs_revalidate_inode()
1175 (unsigned long long)NFS_FILEID(inode)); in __nfs_revalidate_inode()
1181 trace_nfs_revalidate_inode_exit(inode, status); in __nfs_revalidate_inode()
1185 int nfs_attribute_cache_expired(struct inode *inode) in nfs_attribute_cache_expired() argument
1187 if (nfs_have_delegated_attributes(inode)) in nfs_attribute_cache_expired()
1189 return nfs_attribute_timeout(inode); in nfs_attribute_cache_expired()
1199 int nfs_revalidate_inode(struct nfs_server *server, struct inode *inode) in nfs_revalidate_inode() argument
1201 if (!nfs_need_revalidate_inode(inode)) in nfs_revalidate_inode()
1202 return NFS_STALE(inode) ? -ESTALE : 0; in nfs_revalidate_inode()
1203 return __nfs_revalidate_inode(server, inode); in nfs_revalidate_inode()
1207 static int nfs_invalidate_mapping(struct inode *inode, struct address_space *mapping) in nfs_invalidate_mapping() argument
1209 struct nfs_inode *nfsi = NFS_I(inode); in nfs_invalidate_mapping()
1213 if (S_ISREG(inode->i_mode)) { in nfs_invalidate_mapping()
1222 if (S_ISDIR(inode->i_mode)) { in nfs_invalidate_mapping()
1223 spin_lock(&inode->i_lock); in nfs_invalidate_mapping()
1225 spin_unlock(&inode->i_lock); in nfs_invalidate_mapping()
1227 nfs_inc_stats(inode, NFSIOS_DATAINVALIDATE); in nfs_invalidate_mapping()
1228 nfs_fscache_wait_on_invalidate(inode); in nfs_invalidate_mapping()
1231 inode->i_sb->s_id, in nfs_invalidate_mapping()
1232 (unsigned long long)NFS_FILEID(inode)); in nfs_invalidate_mapping()
1236 bool nfs_mapping_need_revalidate_inode(struct inode *inode) in nfs_mapping_need_revalidate_inode() argument
1238 return nfs_check_cache_invalid(inode, NFS_INO_REVAL_PAGECACHE) || in nfs_mapping_need_revalidate_inode()
1239 NFS_STALE(inode); in nfs_mapping_need_revalidate_inode()
1242 int nfs_revalidate_mapping_rcu(struct inode *inode) in nfs_revalidate_mapping_rcu() argument
1244 struct nfs_inode *nfsi = NFS_I(inode); in nfs_revalidate_mapping_rcu()
1248 if (IS_SWAPFILE(inode)) in nfs_revalidate_mapping_rcu()
1250 if (nfs_mapping_need_revalidate_inode(inode)) { in nfs_revalidate_mapping_rcu()
1254 spin_lock(&inode->i_lock); in nfs_revalidate_mapping_rcu()
1258 spin_unlock(&inode->i_lock); in nfs_revalidate_mapping_rcu()
1268 int nfs_revalidate_mapping(struct inode *inode, in nfs_revalidate_mapping() argument
1271 struct nfs_inode *nfsi = NFS_I(inode); in nfs_revalidate_mapping()
1276 if (IS_SWAPFILE(inode)) in nfs_revalidate_mapping()
1279 if (nfs_mapping_need_revalidate_inode(inode)) { in nfs_revalidate_mapping()
1280 ret = __nfs_revalidate_inode(NFS_SERVER(inode), inode); in nfs_revalidate_mapping()
1302 spin_lock(&inode->i_lock); in nfs_revalidate_mapping()
1304 spin_unlock(&inode->i_lock); in nfs_revalidate_mapping()
1309 spin_unlock(&inode->i_lock); in nfs_revalidate_mapping()
1316 spin_unlock(&inode->i_lock); in nfs_revalidate_mapping()
1317 trace_nfs_invalidate_mapping_enter(inode); in nfs_revalidate_mapping()
1318 ret = nfs_invalidate_mapping(inode, mapping); in nfs_revalidate_mapping()
1319 trace_nfs_invalidate_mapping_exit(inode, ret); in nfs_revalidate_mapping()
1330 struct inode *inode = &nfsi->vfs_inode; in nfs_file_has_writers() local
1332 assert_spin_locked(&inode->i_lock); in nfs_file_has_writers()
1334 if (!S_ISREG(inode->i_mode)) in nfs_file_has_writers()
1352 static void nfs_wcc_update_inode(struct inode *inode, struct nfs_fattr *fattr) in nfs_wcc_update_inode() argument
1358 && inode_eq_iversion_raw(inode, fattr->pre_change_attr)) { in nfs_wcc_update_inode()
1359 inode_set_iversion_raw(inode, fattr->change_attr); in nfs_wcc_update_inode()
1360 if (S_ISDIR(inode->i_mode)) in nfs_wcc_update_inode()
1361 nfs_set_cache_invalid(inode, NFS_INO_INVALID_DATA); in nfs_wcc_update_inode()
1364 ts = timespec64_to_timespec(inode->i_ctime); in nfs_wcc_update_inode()
1368 inode->i_ctime = timespec_to_timespec64(fattr->ctime); in nfs_wcc_update_inode()
1371 ts = timespec64_to_timespec(inode->i_mtime); in nfs_wcc_update_inode()
1375 inode->i_mtime = timespec_to_timespec64(fattr->mtime); in nfs_wcc_update_inode()
1376 if (S_ISDIR(inode->i_mode)) in nfs_wcc_update_inode()
1377 nfs_set_cache_invalid(inode, NFS_INO_INVALID_DATA); in nfs_wcc_update_inode()
1381 && i_size_read(inode) == nfs_size_to_loff_t(fattr->pre_size) in nfs_wcc_update_inode()
1382 && !nfs_have_writebacks(inode)) { in nfs_wcc_update_inode()
1383 i_size_write(inode, nfs_size_to_loff_t(fattr->size)); in nfs_wcc_update_inode()
1396 static int nfs_check_inode_attributes(struct inode *inode, struct nfs_fattr *fattr) in nfs_check_inode_attributes() argument
1398 struct nfs_inode *nfsi = NFS_I(inode); in nfs_check_inode_attributes()
1403 if (NFS_PROTO(inode)->have_delegation(inode, FMODE_READ)) in nfs_check_inode_attributes()
1409 if ((fattr->valid & NFS_ATTR_FATTR_TYPE) && (inode->i_mode & S_IFMT) != (fattr->mode & S_IFMT)) in nfs_check_inode_attributes()
1414 …if ((fattr->valid & NFS_ATTR_FATTR_CHANGE) != 0 && !inode_eq_iversion_raw(inode, fattr->change_att… in nfs_check_inode_attributes()
1418 ts = timespec64_to_timespec(inode->i_mtime); in nfs_check_inode_attributes()
1422 ts = timespec64_to_timespec(inode->i_ctime); in nfs_check_inode_attributes()
1427 cur_size = i_size_read(inode); in nfs_check_inode_attributes()
1436 …if ((fattr->valid & NFS_ATTR_FATTR_MODE) && (inode->i_mode & S_IALLUGO) != (fattr->mode & S_IALLUG… in nfs_check_inode_attributes()
1440 if ((fattr->valid & NFS_ATTR_FATTR_OWNER) && !uid_eq(inode->i_uid, fattr->uid)) in nfs_check_inode_attributes()
1444 if ((fattr->valid & NFS_ATTR_FATTR_GROUP) && !gid_eq(inode->i_gid, fattr->gid)) in nfs_check_inode_attributes()
1450 if ((fattr->valid & NFS_ATTR_FATTR_NLINK) && inode->i_nlink != fattr->nlink) in nfs_check_inode_attributes()
1453 ts = timespec64_to_timespec(inode->i_atime); in nfs_check_inode_attributes()
1458 nfs_set_cache_invalid(inode, invalid); in nfs_check_inode_attributes()
1607 static int nfs_inode_attrs_need_update(const struct inode *inode, const struct nfs_fattr *fattr) in nfs_inode_attrs_need_update() argument
1609 const struct nfs_inode *nfsi = NFS_I(inode); in nfs_inode_attrs_need_update()
1615 static int nfs_refresh_inode_locked(struct inode *inode, struct nfs_fattr *fattr) in nfs_refresh_inode_locked() argument
1619 trace_nfs_refresh_inode_enter(inode); in nfs_refresh_inode_locked()
1621 if (nfs_inode_attrs_need_update(inode, fattr)) in nfs_refresh_inode_locked()
1622 ret = nfs_update_inode(inode, fattr); in nfs_refresh_inode_locked()
1624 ret = nfs_check_inode_attributes(inode, fattr); in nfs_refresh_inode_locked()
1626 trace_nfs_refresh_inode_exit(inode, ret); in nfs_refresh_inode_locked()
1640 int nfs_refresh_inode(struct inode *inode, struct nfs_fattr *fattr) in nfs_refresh_inode() argument
1646 spin_lock(&inode->i_lock); in nfs_refresh_inode()
1647 status = nfs_refresh_inode_locked(inode, fattr); in nfs_refresh_inode()
1648 spin_unlock(&inode->i_lock); in nfs_refresh_inode()
1654 static int nfs_post_op_update_inode_locked(struct inode *inode, in nfs_post_op_update_inode_locked() argument
1657 if (S_ISDIR(inode->i_mode)) in nfs_post_op_update_inode_locked()
1659 nfs_set_cache_invalid(inode, invalid); in nfs_post_op_update_inode_locked()
1662 return nfs_refresh_inode_locked(inode, fattr); in nfs_post_op_update_inode_locked()
1679 int nfs_post_op_update_inode(struct inode *inode, struct nfs_fattr *fattr) in nfs_post_op_update_inode() argument
1683 spin_lock(&inode->i_lock); in nfs_post_op_update_inode()
1685 status = nfs_post_op_update_inode_locked(inode, fattr, in nfs_post_op_update_inode()
1689 spin_unlock(&inode->i_lock); in nfs_post_op_update_inode()
1706 int nfs_post_op_update_inode_force_wcc_locked(struct inode *inode, struct nfs_fattr *fattr) in nfs_post_op_update_inode_force_wcc_locked() argument
1712 !nfs_inode_attrs_need_update(inode, fattr)) { in nfs_post_op_update_inode_force_wcc_locked()
1721 fattr->pre_change_attr = inode_peek_iversion_raw(inode); in nfs_post_op_update_inode_force_wcc_locked()
1726 fattr->pre_ctime = timespec64_to_timespec(inode->i_ctime); in nfs_post_op_update_inode_force_wcc_locked()
1731 fattr->pre_mtime = timespec64_to_timespec(inode->i_mtime); in nfs_post_op_update_inode_force_wcc_locked()
1736 fattr->pre_size = i_size_read(inode); in nfs_post_op_update_inode_force_wcc_locked()
1740 status = nfs_post_op_update_inode_locked(inode, fattr, in nfs_post_op_update_inode_force_wcc_locked()
1758 int nfs_post_op_update_inode_force_wcc(struct inode *inode, struct nfs_fattr *fattr) in nfs_post_op_update_inode_force_wcc() argument
1762 spin_lock(&inode->i_lock); in nfs_post_op_update_inode_force_wcc()
1764 status = nfs_post_op_update_inode_force_wcc_locked(inode, fattr); in nfs_post_op_update_inode_force_wcc()
1765 spin_unlock(&inode->i_lock); in nfs_post_op_update_inode_force_wcc()
1795 static int nfs_update_inode(struct inode *inode, struct nfs_fattr *fattr) in nfs_update_inode() argument
1798 struct nfs_inode *nfsi = NFS_I(inode); in nfs_update_inode()
1809 __func__, inode->i_sb->s_id, inode->i_ino, in nfs_update_inode()
1810 nfs_display_fhandle_hash(NFS_FH(inode)), in nfs_update_inode()
1811 atomic_read(&inode->i_count), fattr->valid); in nfs_update_inode()
1816 NFS_SERVER(inode)->nfs_client->cl_hostname, in nfs_update_inode()
1817 inode->i_sb->s_id, (long long)nfsi->fileid, in nfs_update_inode()
1825 if ((fattr->valid & NFS_ATTR_FATTR_TYPE) && (inode->i_mode & S_IFMT) != (fattr->mode & S_IFMT)) { in nfs_update_inode()
1830 __func__, inode->i_ino, inode->i_mode, fattr->mode); in nfs_update_inode()
1834 server = NFS_SERVER(inode); in nfs_update_inode()
1836 if (S_ISDIR(inode->i_mode) && (fattr->valid & NFS_ATTR_FATTR_FSID) && in nfs_update_inode()
1838 !IS_AUTOMOUNT(inode)) in nfs_update_inode()
1842 have_delegation = nfs_have_delegated_attributes(inode); in nfs_update_inode()
1856 nfs_wcc_update_inode(inode, fattr); in nfs_update_inode()
1858 if (pnfs_layoutcommit_outstanding(inode)) { in nfs_update_inode()
1865 if (!inode_eq_iversion_raw(inode, fattr->change_attr)) { in nfs_update_inode()
1876 if (S_ISDIR(inode->i_mode)) in nfs_update_inode()
1877 nfs_force_lookup_revalidate(inode); in nfs_update_inode()
1879 inode->i_sb->s_id, in nfs_update_inode()
1880 inode->i_ino); in nfs_update_inode()
1882 inode_set_iversion_raw(inode, fattr->change_attr); in nfs_update_inode()
1894 inode->i_mtime = timespec_to_timespec64(fattr->mtime); in nfs_update_inode()
1903 inode->i_ctime = timespec_to_timespec64(fattr->ctime); in nfs_update_inode()
1914 cur_isize = i_size_read(inode); in nfs_update_inode()
1918 if (!nfs_have_writebacks(inode) || new_isize > cur_isize) { in nfs_update_inode()
1919 i_size_write(inode, new_isize); in nfs_update_inode()
1926 inode->i_sb->s_id, in nfs_update_inode()
1927 inode->i_ino, in nfs_update_inode()
1941 inode->i_atime = timespec_to_timespec64(fattr->atime); in nfs_update_inode()
1950 if ((inode->i_mode & S_IALLUGO) != (fattr->mode & S_IALLUGO)) { in nfs_update_inode()
1951 umode_t newmode = inode->i_mode & S_IFMT; in nfs_update_inode()
1953 inode->i_mode = newmode; in nfs_update_inode()
1966 if (!uid_eq(inode->i_uid, fattr->uid)) { in nfs_update_inode()
1969 inode->i_uid = fattr->uid; in nfs_update_inode()
1980 if (!gid_eq(inode->i_gid, fattr->gid)) { in nfs_update_inode()
1983 inode->i_gid = fattr->gid; in nfs_update_inode()
1994 if (inode->i_nlink != fattr->nlink) { in nfs_update_inode()
1995 if (S_ISDIR(inode->i_mode)) in nfs_update_inode()
1997 set_nlink(inode, fattr->nlink); in nfs_update_inode()
2011 inode->i_blocks = nfs_calc_block_size(fattr->du.nfs3.used); in nfs_update_inode()
2013 inode->i_blocks = fattr->du.nfs2.blocks; in nfs_update_inode()
2020 nfs_inc_stats(inode, NFSIOS_ATTRINVALIDATE); in nfs_update_inode()
2021 nfsi->attrtimeo = NFS_MINATTRTIMEO(inode); in nfs_update_inode()
2030 if (nfsi->attrtimeo > NFS_MAXATTRTIMEO(inode)) in nfs_update_inode()
2031 nfsi->attrtimeo = NFS_MAXATTRTIMEO(inode); in nfs_update_inode()
2041 if (!(S_ISREG(inode->i_mode) || S_ISDIR(inode->i_mode) in nfs_update_inode()
2042 || S_ISLNK(inode->i_mode))) in nfs_update_inode()
2044 nfs_set_cache_invalid(inode, invalid); in nfs_update_inode()
2053 nfs_invalidate_inode(inode); in nfs_update_inode()
2057 struct inode *nfs_alloc_inode(struct super_block *sb) in nfs_alloc_inode()
2074 struct inode *inode = container_of(head, struct inode, i_rcu); in nfs_i_callback() local
2075 kmem_cache_free(nfs_inode_cachep, NFS_I(inode)); in nfs_i_callback()
2078 void nfs_destroy_inode(struct inode *inode) in nfs_destroy_inode() argument
2080 call_rcu(&inode->i_rcu, nfs_i_callback); in nfs_destroy_inode()