Lines Matching refs:inode
63 static void nfs_invalidate_inode(struct inode *);
64 static int nfs_update_inode(struct inode *, struct nfs_fattr *);
110 int nfs_drop_inode(struct inode *inode) in nfs_drop_inode() argument
112 return NFS_STALE(inode) || generic_drop_inode(inode); in nfs_drop_inode()
116 void nfs_clear_inode(struct inode *inode) in nfs_clear_inode() argument
121 WARN_ON_ONCE(nfs_have_writebacks(inode)); in nfs_clear_inode()
122 WARN_ON_ONCE(!list_empty(&NFS_I(inode)->open_files)); in nfs_clear_inode()
123 nfs_zap_acl_cache(inode); in nfs_clear_inode()
124 nfs_access_zap_cache(inode); in nfs_clear_inode()
125 nfs_fscache_clear_inode(inode); in nfs_clear_inode()
129 void nfs_evict_inode(struct inode *inode) in nfs_evict_inode() argument
131 truncate_inode_pages_final(&inode->i_data); in nfs_evict_inode()
132 clear_inode(inode); in nfs_evict_inode()
133 nfs_clear_inode(inode); in nfs_evict_inode()
136 int nfs_sync_inode(struct inode *inode) in nfs_sync_inode() argument
138 nfs_inode_dio_wait(inode); in nfs_sync_inode()
139 return nfs_wb_all(inode); in nfs_sync_inode()
157 static void nfs_set_cache_invalid(struct inode *inode, unsigned long flags) in nfs_set_cache_invalid() argument
159 struct nfs_inode *nfsi = NFS_I(inode); in nfs_set_cache_invalid()
161 if (inode->i_mapping->nrpages == 0) in nfs_set_cache_invalid()
165 nfs_fscache_invalidate(inode); in nfs_set_cache_invalid()
171 static void nfs_zap_caches_locked(struct inode *inode) in nfs_zap_caches_locked() argument
173 struct nfs_inode *nfsi = NFS_I(inode); in nfs_zap_caches_locked()
174 int mode = inode->i_mode; in nfs_zap_caches_locked()
176 nfs_inc_stats(inode, NFSIOS_ATTRINVALIDATE); in nfs_zap_caches_locked()
178 nfsi->attrtimeo = NFS_MINATTRTIMEO(inode); in nfs_zap_caches_locked()
181 memset(NFS_I(inode)->cookieverf, 0, sizeof(NFS_I(inode)->cookieverf)); in nfs_zap_caches_locked()
183 nfs_set_cache_invalid(inode, NFS_INO_INVALID_ATTR in nfs_zap_caches_locked()
189 nfs_set_cache_invalid(inode, NFS_INO_INVALID_ATTR in nfs_zap_caches_locked()
196 void nfs_zap_caches(struct inode *inode) in nfs_zap_caches() argument
198 spin_lock(&inode->i_lock); in nfs_zap_caches()
199 nfs_zap_caches_locked(inode); in nfs_zap_caches()
200 spin_unlock(&inode->i_lock); in nfs_zap_caches()
203 void nfs_zap_mapping(struct inode *inode, struct address_space *mapping) in nfs_zap_mapping() argument
206 spin_lock(&inode->i_lock); in nfs_zap_mapping()
207 nfs_set_cache_invalid(inode, NFS_INO_INVALID_DATA); in nfs_zap_mapping()
208 spin_unlock(&inode->i_lock); in nfs_zap_mapping()
212 void nfs_zap_acl_cache(struct inode *inode) in nfs_zap_acl_cache() argument
214 void (*clear_acl_cache)(struct inode *); in nfs_zap_acl_cache()
216 clear_acl_cache = NFS_PROTO(inode)->clear_acl_cache; in nfs_zap_acl_cache()
218 clear_acl_cache(inode); in nfs_zap_acl_cache()
219 spin_lock(&inode->i_lock); in nfs_zap_acl_cache()
220 NFS_I(inode)->cache_validity &= ~NFS_INO_INVALID_ACL; in nfs_zap_acl_cache()
221 spin_unlock(&inode->i_lock); in nfs_zap_acl_cache()
225 void nfs_invalidate_atime(struct inode *inode) in nfs_invalidate_atime() argument
227 spin_lock(&inode->i_lock); in nfs_invalidate_atime()
228 nfs_set_cache_invalid(inode, NFS_INO_INVALID_ATIME); in nfs_invalidate_atime()
229 spin_unlock(&inode->i_lock); in nfs_invalidate_atime()
237 static void nfs_invalidate_inode(struct inode *inode) in nfs_invalidate_inode() argument
239 set_bit(NFS_INO_STALE, &NFS_I(inode)->flags); in nfs_invalidate_inode()
240 nfs_zap_caches_locked(inode); in nfs_invalidate_inode()
255 nfs_find_actor(struct inode *inode, void *opaque) in nfs_find_actor() argument
261 if (NFS_FILEID(inode) != fattr->fileid) in nfs_find_actor()
263 if ((S_IFMT & inode->i_mode) != (S_IFMT & fattr->mode)) in nfs_find_actor()
265 if (nfs_compare_fh(NFS_FH(inode), fh)) in nfs_find_actor()
267 if (is_bad_inode(inode) || NFS_STALE(inode)) in nfs_find_actor()
273 nfs_init_locked(struct inode *inode, void *opaque) in nfs_init_locked() argument
278 set_nfs_fileid(inode, fattr->fileid); in nfs_init_locked()
279 nfs_copy_fh(NFS_FH(inode), desc->fh); in nfs_init_locked()
284 static void nfs_clear_label_invalid(struct inode *inode) in nfs_clear_label_invalid() argument
286 spin_lock(&inode->i_lock); in nfs_clear_label_invalid()
287 NFS_I(inode)->cache_validity &= ~NFS_INO_INVALID_LABEL; in nfs_clear_label_invalid()
288 spin_unlock(&inode->i_lock); in nfs_clear_label_invalid()
291 void nfs_setsecurity(struct inode *inode, struct nfs_fattr *fattr, in nfs_setsecurity() argument
299 if ((fattr->valid & NFS_ATTR_FATTR_V4_SECURITY_LABEL) && inode->i_security) { in nfs_setsecurity()
300 error = security_inode_notifysecctx(inode, label->label, in nfs_setsecurity()
308 nfs_clear_label_invalid(inode); in nfs_setsecurity()
338 void nfs_setsecurity(struct inode *inode, struct nfs_fattr *fattr, in nfs_setsecurity() argument
349 struct inode *
356 struct inode *inode = ERR_PTR(-ENOENT); in nfs_fhget() local
370 inode = iget5_locked(sb, hash, nfs_find_actor, nfs_init_locked, &desc); in nfs_fhget()
371 if (inode == NULL) { in nfs_fhget()
372 inode = ERR_PTR(-ENOMEM); in nfs_fhget()
376 if (inode->i_state & I_NEW) { in nfs_fhget()
377 struct nfs_inode *nfsi = NFS_I(inode); in nfs_fhget()
382 inode->i_ino = hash; in nfs_fhget()
385 inode->i_flags |= S_NOATIME|S_NOCMTIME; in nfs_fhget()
386 inode->i_mode = fattr->mode; in nfs_fhget()
388 && nfs_server_capable(inode, NFS_CAP_MODE)) in nfs_fhget()
389 nfs_set_cache_invalid(inode, NFS_INO_INVALID_ATTR); in nfs_fhget()
393 inode->i_op = NFS_SB(sb)->nfs_client->rpc_ops->file_inode_ops; in nfs_fhget()
394 if (S_ISREG(inode->i_mode)) { in nfs_fhget()
395 inode->i_fop = NFS_SB(sb)->nfs_client->rpc_ops->file_ops; in nfs_fhget()
396 inode->i_data.a_ops = &nfs_file_aops; in nfs_fhget()
397 } else if (S_ISDIR(inode->i_mode)) { in nfs_fhget()
398 inode->i_op = NFS_SB(sb)->nfs_client->rpc_ops->dir_inode_ops; in nfs_fhget()
399 inode->i_fop = &nfs_dir_operations; in nfs_fhget()
400 inode->i_data.a_ops = &nfs_dir_aops; in nfs_fhget()
405 inode->i_op = &nfs_referral_inode_operations; in nfs_fhget()
407 inode->i_op = &nfs_mountpoint_inode_operations; in nfs_fhget()
408 inode->i_fop = NULL; in nfs_fhget()
409 inode->i_flags |= S_AUTOMOUNT; in nfs_fhget()
411 } else if (S_ISLNK(inode->i_mode)) in nfs_fhget()
412 inode->i_op = &nfs_symlink_inode_operations; in nfs_fhget()
414 init_special_inode(inode, inode->i_mode, fattr->rdev); in nfs_fhget()
416 memset(&inode->i_atime, 0, sizeof(inode->i_atime)); in nfs_fhget()
417 memset(&inode->i_mtime, 0, sizeof(inode->i_mtime)); in nfs_fhget()
418 memset(&inode->i_ctime, 0, sizeof(inode->i_ctime)); in nfs_fhget()
419 inode->i_version = 0; in nfs_fhget()
420 inode->i_size = 0; in nfs_fhget()
421 clear_nlink(inode); in nfs_fhget()
422 inode->i_uid = make_kuid(&init_user_ns, -2); in nfs_fhget()
423 inode->i_gid = make_kgid(&init_user_ns, -2); in nfs_fhget()
424 inode->i_blocks = 0; in nfs_fhget()
432 inode->i_atime = fattr->atime; in nfs_fhget()
433 else if (nfs_server_capable(inode, NFS_CAP_ATIME)) in nfs_fhget()
434 nfs_set_cache_invalid(inode, NFS_INO_INVALID_ATTR); in nfs_fhget()
436 inode->i_mtime = fattr->mtime; in nfs_fhget()
437 else if (nfs_server_capable(inode, NFS_CAP_MTIME)) in nfs_fhget()
438 nfs_set_cache_invalid(inode, NFS_INO_INVALID_ATTR); in nfs_fhget()
440 inode->i_ctime = fattr->ctime; in nfs_fhget()
441 else if (nfs_server_capable(inode, NFS_CAP_CTIME)) in nfs_fhget()
442 nfs_set_cache_invalid(inode, NFS_INO_INVALID_ATTR); in nfs_fhget()
444 inode->i_version = fattr->change_attr; in nfs_fhget()
446 nfs_set_cache_invalid(inode, NFS_INO_INVALID_ATTR in nfs_fhget()
449 inode->i_size = nfs_size_to_loff_t(fattr->size); in nfs_fhget()
451 nfs_set_cache_invalid(inode, NFS_INO_INVALID_ATTR in nfs_fhget()
454 set_nlink(inode, fattr->nlink); in nfs_fhget()
455 else if (nfs_server_capable(inode, NFS_CAP_NLINK)) in nfs_fhget()
456 nfs_set_cache_invalid(inode, NFS_INO_INVALID_ATTR); in nfs_fhget()
458 inode->i_uid = fattr->uid; in nfs_fhget()
459 else if (nfs_server_capable(inode, NFS_CAP_OWNER)) in nfs_fhget()
460 nfs_set_cache_invalid(inode, NFS_INO_INVALID_ATTR); in nfs_fhget()
462 inode->i_gid = fattr->gid; in nfs_fhget()
463 else if (nfs_server_capable(inode, NFS_CAP_OWNER_GROUP)) in nfs_fhget()
464 nfs_set_cache_invalid(inode, NFS_INO_INVALID_ATTR); in nfs_fhget()
466 inode->i_blocks = fattr->du.nfs2.blocks; in nfs_fhget()
471 inode->i_blocks = nfs_calc_block_size(fattr->du.nfs3.used); in nfs_fhget()
474 nfs_setsecurity(inode, fattr, label); in nfs_fhget()
476 nfsi->attrtimeo = NFS_MINATTRTIMEO(inode); in nfs_fhget()
480 nfs_fscache_init_inode(inode); in nfs_fhget()
482 unlock_new_inode(inode); in nfs_fhget()
484 nfs_refresh_inode(inode, fattr); in nfs_fhget()
486 inode->i_sb->s_id, in nfs_fhget()
487 (unsigned long long)NFS_FILEID(inode), in nfs_fhget()
489 atomic_read(&inode->i_count)); in nfs_fhget()
492 return inode; in nfs_fhget()
495 dprintk("nfs_fhget: iget failed with error %ld\n", PTR_ERR(inode)); in nfs_fhget()
505 struct inode *inode = d_inode(dentry); in nfs_setattr() local
509 nfs_inc_stats(inode, NFSIOS_VFSSETATTR); in nfs_setattr()
516 BUG_ON(!S_ISREG(inode->i_mode)); in nfs_setattr()
518 error = inode_newsize_ok(inode, attr->ia_size); in nfs_setattr()
522 if (attr->ia_size == i_size_read(inode)) in nfs_setattr()
531 trace_nfs_setattr_enter(inode); in nfs_setattr()
534 if (S_ISREG(inode->i_mode)) in nfs_setattr()
535 nfs_sync_inode(inode); in nfs_setattr()
547 NFS_PROTO(inode)->return_delegation(inode); in nfs_setattr()
548 error = NFS_PROTO(inode)->setattr(dentry, fattr, attr); in nfs_setattr()
550 error = nfs_refresh_inode(inode, fattr); in nfs_setattr()
553 trace_nfs_setattr_exit(inode, error); in nfs_setattr()
568 static int nfs_vmtruncate(struct inode * inode, loff_t offset) in nfs_vmtruncate() argument
572 err = inode_newsize_ok(inode, offset); in nfs_vmtruncate()
576 i_size_write(inode, offset); in nfs_vmtruncate()
579 NFS_I(inode)->cache_validity &= ~NFS_INO_INVALID_DATA; in nfs_vmtruncate()
581 spin_unlock(&inode->i_lock); in nfs_vmtruncate()
582 truncate_pagecache(inode, offset); in nfs_vmtruncate()
583 spin_lock(&inode->i_lock); in nfs_vmtruncate()
596 void nfs_setattr_update_inode(struct inode *inode, struct iattr *attr, in nfs_setattr_update_inode() argument
602 spin_lock(&inode->i_lock); in nfs_setattr_update_inode()
603 NFS_I(inode)->attr_gencount = fattr->gencount; in nfs_setattr_update_inode()
607 mode |= inode->i_mode & ~S_IALLUGO; in nfs_setattr_update_inode()
608 inode->i_mode = mode; in nfs_setattr_update_inode()
611 inode->i_uid = attr->ia_uid; in nfs_setattr_update_inode()
613 inode->i_gid = attr->ia_gid; in nfs_setattr_update_inode()
614 nfs_set_cache_invalid(inode, NFS_INO_INVALID_ACCESS in nfs_setattr_update_inode()
618 nfs_inc_stats(inode, NFSIOS_SETATTRTRUNC); in nfs_setattr_update_inode()
619 nfs_vmtruncate(inode, attr->ia_size); in nfs_setattr_update_inode()
622 nfs_update_inode(inode, fattr); in nfs_setattr_update_inode()
624 NFS_I(inode)->cache_validity |= NFS_INO_INVALID_ATTR; in nfs_setattr_update_inode()
625 spin_unlock(&inode->i_lock); in nfs_setattr_update_inode()
638 static bool nfs_need_revalidate_inode(struct inode *inode) in nfs_need_revalidate_inode() argument
640 if (NFS_I(inode)->cache_validity & in nfs_need_revalidate_inode()
643 if (nfs_attribute_cache_expired(inode)) in nfs_need_revalidate_inode()
650 struct inode *inode = d_inode(dentry); in nfs_getattr() local
651 int need_atime = NFS_I(inode)->cache_validity & NFS_INO_INVALID_ATIME; in nfs_getattr()
654 trace_nfs_getattr_enter(inode); in nfs_getattr()
656 if (S_ISREG(inode->i_mode)) { in nfs_getattr()
657 mutex_lock(&inode->i_mutex); in nfs_getattr()
658 err = nfs_sync_inode(inode); in nfs_getattr()
659 mutex_unlock(&inode->i_mutex); in nfs_getattr()
674 ((mnt->mnt_flags & MNT_NODIRATIME) && S_ISDIR(inode->i_mode))) in nfs_getattr()
677 if (need_atime || nfs_need_revalidate_inode(inode)) { in nfs_getattr()
678 struct nfs_server *server = NFS_SERVER(inode); in nfs_getattr()
682 err = __nfs_revalidate_inode(server, inode); in nfs_getattr()
685 generic_fillattr(inode, stat); in nfs_getattr()
686 stat->ino = nfs_compat_user_ino64(NFS_FILEID(inode)); in nfs_getattr()
687 if (S_ISDIR(inode->i_mode)) in nfs_getattr()
688 stat->blksize = NFS_SERVER(inode)->dtsize; in nfs_getattr()
691 trace_nfs_getattr_exit(inode, err); in nfs_getattr()
724 struct inode *inode = d_inode(ctx->dentry); in nfs_get_lock_context() local
726 spin_lock(&inode->i_lock); in nfs_get_lock_context()
729 spin_unlock(&inode->i_lock); in nfs_get_lock_context()
734 spin_lock(&inode->i_lock); in nfs_get_lock_context()
743 spin_unlock(&inode->i_lock); in nfs_get_lock_context()
752 struct inode *inode = d_inode(ctx->dentry); in nfs_put_lock_context() local
754 if (!atomic_dec_and_lock(&l_ctx->count, &inode->i_lock)) in nfs_put_lock_context()
757 spin_unlock(&inode->i_lock); in nfs_put_lock_context()
774 struct inode *inode; in nfs_close_context() local
781 inode = d_inode(ctx->dentry); in nfs_close_context()
782 nfsi = NFS_I(inode); in nfs_close_context()
783 if (inode->i_mapping->nrpages == 0) in nfs_close_context()
789 server = NFS_SERVER(inode); in nfs_close_context()
792 nfs_revalidate_inode(server, inode); in nfs_close_context()
833 struct inode *inode = d_inode(ctx->dentry); in __put_nfs_open_context() local
837 if (!atomic_dec_and_lock(&ctx->lock_context.count, &inode->i_lock)) in __put_nfs_open_context()
840 spin_unlock(&inode->i_lock); in __put_nfs_open_context()
843 if (inode != NULL) in __put_nfs_open_context()
844 NFS_PROTO(inode)->close_context(ctx, is_sync); in __put_nfs_open_context()
870 struct inode *inode = d_inode(ctx->dentry); in nfs_inode_attach_open_context() local
871 struct nfs_inode *nfsi = NFS_I(inode); in nfs_inode_attach_open_context()
873 spin_lock(&inode->i_lock); in nfs_inode_attach_open_context()
875 spin_unlock(&inode->i_lock); in nfs_inode_attach_open_context()
890 struct nfs_open_context *nfs_find_open_context(struct inode *inode, struct rpc_cred *cred, fmode_t … in nfs_find_open_context() argument
892 struct nfs_inode *nfsi = NFS_I(inode); in nfs_find_open_context()
895 spin_lock(&inode->i_lock); in nfs_find_open_context()
904 spin_unlock(&inode->i_lock); in nfs_find_open_context()
913 struct inode *inode = d_inode(ctx->dentry); in nfs_file_clear_open_context() local
916 spin_lock(&inode->i_lock); in nfs_file_clear_open_context()
917 list_move_tail(&ctx->list, &NFS_I(inode)->open_files); in nfs_file_clear_open_context()
918 spin_unlock(&inode->i_lock); in nfs_file_clear_open_context()
926 int nfs_open(struct inode *inode, struct file *filp) in nfs_open() argument
935 nfs_fscache_open_file(inode, filp); in nfs_open()
944 __nfs_revalidate_inode(struct nfs_server *server, struct inode *inode) in __nfs_revalidate_inode() argument
949 struct nfs_inode *nfsi = NFS_I(inode); in __nfs_revalidate_inode()
952 inode->i_sb->s_id, (unsigned long long)NFS_FILEID(inode)); in __nfs_revalidate_inode()
954 trace_nfs_revalidate_inode_enter(inode); in __nfs_revalidate_inode()
956 if (is_bad_inode(inode)) in __nfs_revalidate_inode()
958 if (NFS_STALE(inode)) in __nfs_revalidate_inode()
966 nfs_inc_stats(inode, NFSIOS_INODEREVALIDATE); in __nfs_revalidate_inode()
968 label = nfs4_label_alloc(NFS_SERVER(inode), GFP_KERNEL); in __nfs_revalidate_inode()
974 status = NFS_PROTO(inode)->getattr(server, NFS_FH(inode), fattr, label); in __nfs_revalidate_inode()
977 inode->i_sb->s_id, in __nfs_revalidate_inode()
978 (unsigned long long)NFS_FILEID(inode), status); in __nfs_revalidate_inode()
980 nfs_zap_caches(inode); in __nfs_revalidate_inode()
981 if (!S_ISDIR(inode->i_mode)) in __nfs_revalidate_inode()
982 set_bit(NFS_INO_STALE, &NFS_I(inode)->flags); in __nfs_revalidate_inode()
987 status = nfs_refresh_inode(inode, fattr); in __nfs_revalidate_inode()
990 inode->i_sb->s_id, in __nfs_revalidate_inode()
991 (unsigned long long)NFS_FILEID(inode), status); in __nfs_revalidate_inode()
996 nfs_zap_acl_cache(inode); in __nfs_revalidate_inode()
998 nfs_setsecurity(inode, fattr, label); in __nfs_revalidate_inode()
1001 inode->i_sb->s_id, in __nfs_revalidate_inode()
1002 (unsigned long long)NFS_FILEID(inode)); in __nfs_revalidate_inode()
1008 trace_nfs_revalidate_inode_exit(inode, status); in __nfs_revalidate_inode()
1012 int nfs_attribute_timeout(struct inode *inode) in nfs_attribute_timeout() argument
1014 struct nfs_inode *nfsi = NFS_I(inode); in nfs_attribute_timeout()
1019 int nfs_attribute_cache_expired(struct inode *inode) in nfs_attribute_cache_expired() argument
1021 if (nfs_have_delegated_attributes(inode)) in nfs_attribute_cache_expired()
1023 return nfs_attribute_timeout(inode); in nfs_attribute_cache_expired()
1033 int nfs_revalidate_inode(struct nfs_server *server, struct inode *inode) in nfs_revalidate_inode() argument
1035 if (!nfs_need_revalidate_inode(inode)) in nfs_revalidate_inode()
1036 return NFS_STALE(inode) ? -ESTALE : 0; in nfs_revalidate_inode()
1037 return __nfs_revalidate_inode(server, inode); in nfs_revalidate_inode()
1041 int nfs_revalidate_inode_rcu(struct nfs_server *server, struct inode *inode) in nfs_revalidate_inode_rcu() argument
1043 if (!(NFS_I(inode)->cache_validity & in nfs_revalidate_inode_rcu()
1045 && !nfs_attribute_cache_expired(inode)) in nfs_revalidate_inode_rcu()
1046 return NFS_STALE(inode) ? -ESTALE : 0; in nfs_revalidate_inode_rcu()
1050 static int nfs_invalidate_mapping(struct inode *inode, struct address_space *mapping) in nfs_invalidate_mapping() argument
1052 struct nfs_inode *nfsi = NFS_I(inode); in nfs_invalidate_mapping()
1056 if (S_ISREG(inode->i_mode)) { in nfs_invalidate_mapping()
1066 if (S_ISDIR(inode->i_mode)) { in nfs_invalidate_mapping()
1067 spin_lock(&inode->i_lock); in nfs_invalidate_mapping()
1069 spin_unlock(&inode->i_lock); in nfs_invalidate_mapping()
1071 nfs_inc_stats(inode, NFSIOS_DATAINVALIDATE); in nfs_invalidate_mapping()
1072 nfs_fscache_wait_on_invalidate(inode); in nfs_invalidate_mapping()
1075 inode->i_sb->s_id, in nfs_invalidate_mapping()
1076 (unsigned long long)NFS_FILEID(inode)); in nfs_invalidate_mapping()
1080 static bool nfs_mapping_need_revalidate_inode(struct inode *inode) in nfs_mapping_need_revalidate_inode() argument
1082 if (nfs_have_delegated_attributes(inode)) in nfs_mapping_need_revalidate_inode()
1084 return (NFS_I(inode)->cache_validity & NFS_INO_REVAL_PAGECACHE) in nfs_mapping_need_revalidate_inode()
1085 || nfs_attribute_timeout(inode) in nfs_mapping_need_revalidate_inode()
1086 || NFS_STALE(inode); in nfs_mapping_need_revalidate_inode()
1095 static int __nfs_revalidate_mapping(struct inode *inode, in __nfs_revalidate_mapping() argument
1099 struct nfs_inode *nfsi = NFS_I(inode); in __nfs_revalidate_mapping()
1104 if (IS_SWAPFILE(inode)) in __nfs_revalidate_mapping()
1107 if (nfs_mapping_need_revalidate_inode(inode)) { in __nfs_revalidate_mapping()
1108 ret = __nfs_revalidate_inode(NFS_SERVER(inode), inode); in __nfs_revalidate_mapping()
1130 spin_lock(&inode->i_lock); in __nfs_revalidate_mapping()
1132 spin_unlock(&inode->i_lock); in __nfs_revalidate_mapping()
1137 spin_unlock(&inode->i_lock); in __nfs_revalidate_mapping()
1144 spin_unlock(&inode->i_lock); in __nfs_revalidate_mapping()
1145 trace_nfs_invalidate_mapping_enter(inode); in __nfs_revalidate_mapping()
1147 mutex_lock(&inode->i_mutex); in __nfs_revalidate_mapping()
1148 ret = nfs_invalidate_mapping(inode, mapping); in __nfs_revalidate_mapping()
1149 mutex_unlock(&inode->i_mutex); in __nfs_revalidate_mapping()
1151 ret = nfs_invalidate_mapping(inode, mapping); in __nfs_revalidate_mapping()
1152 trace_nfs_invalidate_mapping_exit(inode, ret); in __nfs_revalidate_mapping()
1166 int nfs_revalidate_mapping(struct inode *inode, struct address_space *mapping) in nfs_revalidate_mapping() argument
1168 return __nfs_revalidate_mapping(inode, mapping, false); in nfs_revalidate_mapping()
1179 int nfs_revalidate_mapping_protected(struct inode *inode, struct address_space *mapping) in nfs_revalidate_mapping_protected() argument
1181 return __nfs_revalidate_mapping(inode, mapping, true); in nfs_revalidate_mapping_protected()
1184 static unsigned long nfs_wcc_update_inode(struct inode *inode, struct nfs_fattr *fattr) in nfs_wcc_update_inode() argument
1186 struct nfs_inode *nfsi = NFS_I(inode); in nfs_wcc_update_inode()
1191 && inode->i_version == fattr->pre_change_attr) { in nfs_wcc_update_inode()
1192 inode->i_version = fattr->change_attr; in nfs_wcc_update_inode()
1193 if (S_ISDIR(inode->i_mode)) in nfs_wcc_update_inode()
1194 nfs_set_cache_invalid(inode, NFS_INO_INVALID_DATA); in nfs_wcc_update_inode()
1200 && timespec_equal(&inode->i_ctime, &fattr->pre_ctime)) { in nfs_wcc_update_inode()
1201 memcpy(&inode->i_ctime, &fattr->ctime, sizeof(inode->i_ctime)); in nfs_wcc_update_inode()
1207 && timespec_equal(&inode->i_mtime, &fattr->pre_mtime)) { in nfs_wcc_update_inode()
1208 memcpy(&inode->i_mtime, &fattr->mtime, sizeof(inode->i_mtime)); in nfs_wcc_update_inode()
1209 if (S_ISDIR(inode->i_mode)) in nfs_wcc_update_inode()
1210 nfs_set_cache_invalid(inode, NFS_INO_INVALID_DATA); in nfs_wcc_update_inode()
1215 && i_size_read(inode) == nfs_size_to_loff_t(fattr->pre_size) in nfs_wcc_update_inode()
1217 i_size_write(inode, nfs_size_to_loff_t(fattr->size)); in nfs_wcc_update_inode()
1233 static int nfs_check_inode_attributes(struct inode *inode, struct nfs_fattr *fattr) in nfs_check_inode_attributes() argument
1235 struct nfs_inode *nfsi = NFS_I(inode); in nfs_check_inode_attributes()
1240 if (nfs_have_delegated_attributes(inode)) in nfs_check_inode_attributes()
1245 if ((fattr->valid & NFS_ATTR_FATTR_TYPE) && (inode->i_mode & S_IFMT) != (fattr->mode & S_IFMT)) in nfs_check_inode_attributes()
1249 inode->i_version != fattr->change_attr) in nfs_check_inode_attributes()
1253 if ((fattr->valid & NFS_ATTR_FATTR_MTIME) && !timespec_equal(&inode->i_mtime, &fattr->mtime)) in nfs_check_inode_attributes()
1257 cur_size = i_size_read(inode); in nfs_check_inode_attributes()
1266 …if ((fattr->valid & NFS_ATTR_FATTR_MODE) && (inode->i_mode & S_IALLUGO) != (fattr->mode & S_IALLUG… in nfs_check_inode_attributes()
1268 if ((fattr->valid & NFS_ATTR_FATTR_OWNER) && !uid_eq(inode->i_uid, fattr->uid)) in nfs_check_inode_attributes()
1270 if ((fattr->valid & NFS_ATTR_FATTR_GROUP) && !gid_eq(inode->i_gid, fattr->gid)) in nfs_check_inode_attributes()
1274 if ((fattr->valid & NFS_ATTR_FATTR_NLINK) && inode->i_nlink != fattr->nlink) in nfs_check_inode_attributes()
1277 if ((fattr->valid & NFS_ATTR_FATTR_ATIME) && !timespec_equal(&inode->i_atime, &fattr->atime)) in nfs_check_inode_attributes()
1281 nfs_set_cache_invalid(inode, invalid); in nfs_check_inode_attributes()
1430 static int nfs_inode_attrs_need_update(const struct inode *inode, const struct nfs_fattr *fattr) in nfs_inode_attrs_need_update() argument
1432 const struct nfs_inode *nfsi = NFS_I(inode); in nfs_inode_attrs_need_update()
1442 static void nfs_inode_attrs_handle_layoutcommit(struct inode *inode, in nfs_inode_attrs_handle_layoutcommit() argument
1445 if (pnfs_layoutcommit_outstanding(inode)) in nfs_inode_attrs_handle_layoutcommit()
1452 static int nfs_refresh_inode_locked(struct inode *inode, struct nfs_fattr *fattr) in nfs_refresh_inode_locked() argument
1456 trace_nfs_refresh_inode_enter(inode); in nfs_refresh_inode_locked()
1458 nfs_inode_attrs_handle_layoutcommit(inode, fattr); in nfs_refresh_inode_locked()
1460 if (nfs_inode_attrs_need_update(inode, fattr)) in nfs_refresh_inode_locked()
1461 ret = nfs_update_inode(inode, fattr); in nfs_refresh_inode_locked()
1463 ret = nfs_check_inode_attributes(inode, fattr); in nfs_refresh_inode_locked()
1465 trace_nfs_refresh_inode_exit(inode, ret); in nfs_refresh_inode_locked()
1479 int nfs_refresh_inode(struct inode *inode, struct nfs_fattr *fattr) in nfs_refresh_inode() argument
1485 spin_lock(&inode->i_lock); in nfs_refresh_inode()
1486 status = nfs_refresh_inode_locked(inode, fattr); in nfs_refresh_inode()
1487 spin_unlock(&inode->i_lock); in nfs_refresh_inode()
1493 static int nfs_post_op_update_inode_locked(struct inode *inode, struct nfs_fattr *fattr) in nfs_post_op_update_inode_locked() argument
1501 if (NFS_PROTO(inode)->have_delegation(inode, FMODE_READ)) in nfs_post_op_update_inode_locked()
1504 if (S_ISDIR(inode->i_mode)) in nfs_post_op_update_inode_locked()
1506 nfs_set_cache_invalid(inode, invalid); in nfs_post_op_update_inode_locked()
1509 return nfs_refresh_inode_locked(inode, fattr); in nfs_post_op_update_inode_locked()
1526 int nfs_post_op_update_inode(struct inode *inode, struct nfs_fattr *fattr) in nfs_post_op_update_inode() argument
1530 spin_lock(&inode->i_lock); in nfs_post_op_update_inode()
1532 status = nfs_post_op_update_inode_locked(inode, fattr); in nfs_post_op_update_inode()
1533 spin_unlock(&inode->i_lock); in nfs_post_op_update_inode()
1550 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
1556 !nfs_inode_attrs_need_update(inode, fattr)) { in nfs_post_op_update_inode_force_wcc_locked()
1565 fattr->pre_change_attr = inode->i_version; in nfs_post_op_update_inode_force_wcc_locked()
1570 memcpy(&fattr->pre_ctime, &inode->i_ctime, sizeof(fattr->pre_ctime)); in nfs_post_op_update_inode_force_wcc_locked()
1575 memcpy(&fattr->pre_mtime, &inode->i_mtime, sizeof(fattr->pre_mtime)); in nfs_post_op_update_inode_force_wcc_locked()
1580 fattr->pre_size = i_size_read(inode); in nfs_post_op_update_inode_force_wcc_locked()
1584 status = nfs_post_op_update_inode_locked(inode, fattr); in nfs_post_op_update_inode_force_wcc_locked()
1599 int nfs_post_op_update_inode_force_wcc(struct inode *inode, struct nfs_fattr *fattr) in nfs_post_op_update_inode_force_wcc() argument
1603 spin_lock(&inode->i_lock); in nfs_post_op_update_inode_force_wcc()
1605 status = nfs_post_op_update_inode_force_wcc_locked(inode, fattr); in nfs_post_op_update_inode_force_wcc()
1606 spin_unlock(&inode->i_lock); in nfs_post_op_update_inode_force_wcc()
1636 static int nfs_update_inode(struct inode *inode, struct nfs_fattr *fattr) in nfs_update_inode() argument
1639 struct nfs_inode *nfsi = NFS_I(inode); in nfs_update_inode()
1647 __func__, inode->i_sb->s_id, inode->i_ino, in nfs_update_inode()
1648 nfs_display_fhandle_hash(NFS_FH(inode)), in nfs_update_inode()
1649 atomic_read(&inode->i_count), fattr->valid); in nfs_update_inode()
1654 NFS_SERVER(inode)->nfs_client->cl_hostname, in nfs_update_inode()
1655 inode->i_sb->s_id, (long long)nfsi->fileid, in nfs_update_inode()
1663 if ((fattr->valid & NFS_ATTR_FATTR_TYPE) && (inode->i_mode & S_IFMT) != (fattr->mode & S_IFMT)) { in nfs_update_inode()
1668 __func__, inode->i_ino, inode->i_mode, fattr->mode); in nfs_update_inode()
1672 server = NFS_SERVER(inode); in nfs_update_inode()
1674 if (S_ISDIR(inode->i_mode) && (fattr->valid & NFS_ATTR_FATTR_FSID) && in nfs_update_inode()
1676 !IS_AUTOMOUNT(inode)) in nfs_update_inode()
1691 invalid |= nfs_wcc_update_inode(inode, fattr); in nfs_update_inode()
1695 if (inode->i_version != fattr->change_attr) { in nfs_update_inode()
1697 inode->i_sb->s_id, inode->i_ino); in nfs_update_inode()
1702 if (S_ISDIR(inode->i_mode)) in nfs_update_inode()
1703 nfs_force_lookup_revalidate(inode); in nfs_update_inode()
1704 inode->i_version = fattr->change_attr; in nfs_update_inode()
1712 memcpy(&inode->i_mtime, &fattr->mtime, sizeof(inode->i_mtime)); in nfs_update_inode()
1721 memcpy(&inode->i_ctime, &fattr->ctime, sizeof(inode->i_ctime)); in nfs_update_inode()
1732 cur_isize = i_size_read(inode); in nfs_update_inode()
1737 i_size_write(inode, new_isize); in nfs_update_inode()
1742 inode->i_sb->s_id, in nfs_update_inode()
1743 inode->i_ino, in nfs_update_inode()
1757 memcpy(&inode->i_atime, &fattr->atime, sizeof(inode->i_atime)); in nfs_update_inode()
1766 if ((inode->i_mode & S_IALLUGO) != (fattr->mode & S_IALLUGO)) { in nfs_update_inode()
1767 umode_t newmode = inode->i_mode & S_IFMT; in nfs_update_inode()
1769 inode->i_mode = newmode; in nfs_update_inode()
1782 if (!uid_eq(inode->i_uid, fattr->uid)) { in nfs_update_inode()
1784 inode->i_uid = fattr->uid; in nfs_update_inode()
1796 if (!gid_eq(inode->i_gid, fattr->gid)) { in nfs_update_inode()
1798 inode->i_gid = fattr->gid; in nfs_update_inode()
1810 if (inode->i_nlink != fattr->nlink) { in nfs_update_inode()
1812 if (S_ISDIR(inode->i_mode)) in nfs_update_inode()
1814 set_nlink(inode, fattr->nlink); in nfs_update_inode()
1827 inode->i_blocks = nfs_calc_block_size(fattr->du.nfs3.used); in nfs_update_inode()
1829 inode->i_blocks = fattr->du.nfs2.blocks; in nfs_update_inode()
1835 nfs_inc_stats(inode, NFSIOS_ATTRINVALIDATE); in nfs_update_inode()
1836 nfsi->attrtimeo = NFS_MINATTRTIMEO(inode); in nfs_update_inode()
1845 if (nfsi->attrtimeo > NFS_MAXATTRTIMEO(inode)) in nfs_update_inode()
1846 nfsi->attrtimeo = NFS_MAXATTRTIMEO(inode); in nfs_update_inode()
1860 if (!(S_ISREG(inode->i_mode) || S_ISDIR(inode->i_mode) in nfs_update_inode()
1861 || S_ISLNK(inode->i_mode))) in nfs_update_inode()
1863 if (!NFS_PROTO(inode)->have_delegation(inode, FMODE_READ) || in nfs_update_inode()
1865 nfs_set_cache_invalid(inode, invalid); in nfs_update_inode()
1874 nfs_invalidate_inode(inode); in nfs_update_inode()
1878 struct inode *nfs_alloc_inode(struct super_block *sb) in nfs_alloc_inode()
1895 struct inode *inode = container_of(head, struct inode, i_rcu); in nfs_i_callback() local
1896 kmem_cache_free(nfs_inode_cachep, NFS_I(inode)); in nfs_i_callback()
1899 void nfs_destroy_inode(struct inode *inode) in nfs_destroy_inode() argument
1901 call_rcu(&inode->i_rcu, nfs_i_callback); in nfs_destroy_inode()