Lines Matching +full:trouble +full:- +full:shooting
1 // SPDX-License-Identifier: GPL-2.0-only
12 * Change to nfs_read_super() to permit NFS mounts to multi-homed hosts.
62 /* Default is to see 64-bit inode numbers */
72 return nfs_fileid_to_ino_t(fattr->fileid); in nfs_fattr_to_ino_t()
79 return -ERESTARTSYS; in nfs_wait_bit_killable()
85 * nfs_compat_user_ino64 - returns the user-visible inode number
86 * @fileid: 64-bit fileid
88 * This function returns a 32-bit inode number if the boot parameter
103 ino ^= fileid >> (sizeof(fileid)-sizeof(ino)) * 8; in nfs_compat_user_ino64()
119 WARN_ON_ONCE(!list_empty(&NFS_I(inode)->open_files)); in nfs_clear_inode()
128 truncate_inode_pages_final(&inode->i_data); in nfs_evict_inode()
141 * nfs_sync_mapping - helper to flush all mmapped dirty data to disk
148 if (mapping->nrpages != 0) { in nfs_sync_mapping()
150 ret = nfs_wb_all(mapping->host); in nfs_sync_mapping()
159 …return !time_in_range_open(jiffies, nfsi->read_cache_jiffies, nfsi->read_cache_jiffies + nfsi->att… in nfs_attribute_timeout()
165 unsigned long cache_validity = READ_ONCE(NFS_I(inode)->cache_validity); in nfs_check_cache_flags_invalid()
181 return nfsi->xattr_cache != NULL; in nfs_has_xattr_cache()
193 bool have_delegation = NFS_PROTO(inode)->have_delegation(inode, FMODE_READ); in nfs_set_cache_invalid()
209 flags |= nfsi->cache_validity; in nfs_set_cache_invalid()
210 if (inode->i_mapping->nrpages == 0) in nfs_set_cache_invalid()
214 smp_store_release(&nfsi->cache_validity, flags); in nfs_set_cache_invalid()
216 if (inode->i_mapping->nrpages == 0 || in nfs_set_cache_invalid()
217 nfsi->cache_validity & NFS_INO_INVALID_DATA) { in nfs_set_cache_invalid()
230 int mode = inode->i_mode; in nfs_zap_caches_locked()
234 nfsi->attrtimeo = NFS_MINATTRTIMEO(inode); in nfs_zap_caches_locked()
235 nfsi->attrtimeo_timestamp = jiffies; in nfs_zap_caches_locked()
253 spin_lock(&inode->i_lock); in nfs_zap_caches()
255 spin_unlock(&inode->i_lock); in nfs_zap_caches()
260 if (mapping->nrpages != 0) { in nfs_zap_mapping()
261 spin_lock(&inode->i_lock); in nfs_zap_mapping()
263 spin_unlock(&inode->i_lock); in nfs_zap_mapping()
271 clear_acl_cache = NFS_PROTO(inode)->clear_acl_cache; in nfs_zap_acl_cache()
274 spin_lock(&inode->i_lock); in nfs_zap_acl_cache()
275 NFS_I(inode)->cache_validity &= ~NFS_INO_INVALID_ACL; in nfs_zap_acl_cache()
276 spin_unlock(&inode->i_lock); in nfs_zap_acl_cache()
282 spin_lock(&inode->i_lock); in nfs_invalidate_atime()
284 spin_unlock(&inode->i_lock); in nfs_invalidate_atime()
290 * NB: must be called with inode->i_lock held!
294 set_bit(NFS_INO_STALE, &NFS_I(inode)->flags); in nfs_set_inode_stale_locked()
301 spin_lock(&inode->i_lock); in nfs_set_inode_stale()
303 spin_unlock(&inode->i_lock); in nfs_set_inode_stale()
313 * this, and re-exported directories (also seen in NFSv2)
321 struct nfs_fh *fh = desc->fh; in nfs_find_actor()
322 struct nfs_fattr *fattr = desc->fattr; in nfs_find_actor()
324 if (NFS_FILEID(inode) != fattr->fileid) in nfs_find_actor()
326 if (inode_wrong_type(inode, fattr->mode)) in nfs_find_actor()
339 struct nfs_fattr *fattr = desc->fattr; in nfs_init_locked()
341 set_nfs_fileid(inode, fattr->fileid); in nfs_init_locked()
342 inode->i_mode = fattr->mode; in nfs_init_locked()
343 nfs_copy_fh(NFS_FH(inode), desc->fh); in nfs_init_locked()
350 spin_lock(&inode->i_lock); in nfs_clear_label_invalid()
351 NFS_I(inode)->cache_validity &= ~NFS_INO_INVALID_LABEL; in nfs_clear_label_invalid()
352 spin_unlock(&inode->i_lock); in nfs_clear_label_invalid()
359 if (fattr->label == NULL) in nfs_setsecurity()
362 if ((fattr->valid & NFS_ATTR_FATTR_V4_SECURITY_LABEL) && inode->i_security) { in nfs_setsecurity()
363 error = security_inode_notifysecctx(inode, fattr->label->label, in nfs_setsecurity()
364 fattr->label->len); in nfs_setsecurity()
369 (char *)fattr->label->label, in nfs_setsecurity()
370 fattr->label->len, error); in nfs_setsecurity()
379 if (!(server->caps & NFS_CAP_SECURITY_LABEL)) in nfs4_label_alloc()
384 return ERR_PTR(-ENOMEM); in nfs4_label_alloc()
386 label->label = kzalloc(NFS4_MAXLABELLEN, flags); in nfs4_label_alloc()
387 if (label->label == NULL) { in nfs4_label_alloc()
389 return ERR_PTR(-ENOMEM); in nfs4_label_alloc()
391 label->len = NFS4_MAXLABELLEN; in nfs4_label_alloc()
414 if (!(fattr->valid & NFS_ATTR_FATTR_FILEID) || in nfs_ilookup()
415 !(fattr->valid & NFS_ATTR_FATTR_TYPE)) in nfs_ilookup()
427 atomic_long_set(&nfsi->nrequests, 0); in nfs_inode_init_regular()
428 atomic_long_set(&nfsi->redirtied_pages, 0); in nfs_inode_init_regular()
429 INIT_LIST_HEAD(&nfsi->commit_info.list); in nfs_inode_init_regular()
430 atomic_long_set(&nfsi->commit_info.ncommit, 0); in nfs_inode_init_regular()
431 atomic_set(&nfsi->commit_info.rpcs_out, 0); in nfs_inode_init_regular()
432 mutex_init(&nfsi->commit_mutex); in nfs_inode_init_regular()
437 nfsi->cache_change_attribute = 0; in nfs_inode_init_dir()
438 memset(nfsi->cookieverf, 0, sizeof(nfsi->cookieverf)); in nfs_inode_init_dir()
439 init_rwsem(&nfsi->rmdir_sem); in nfs_inode_init_dir()
443 * This is our front-end to iget that looks up inodes by file handle
453 struct inode *inode = ERR_PTR(-ENOENT); in nfs_fhget()
454 u64 fattr_supported = NFS_SB(sb)->fattr_valid; in nfs_fhget()
460 fattr->fileid = fattr->mounted_on_fileid; in nfs_fhget()
461 else if ((fattr->valid & NFS_ATTR_FATTR_FILEID) == 0) in nfs_fhget()
463 if ((fattr->valid & NFS_ATTR_FATTR_TYPE) == 0) in nfs_fhget()
470 inode = ERR_PTR(-ENOMEM); in nfs_fhget()
474 if (inode->i_state & I_NEW) { in nfs_fhget()
480 inode->i_ino = hash; in nfs_fhget()
483 inode->i_flags |= S_NOATIME|S_NOCMTIME; in nfs_fhget()
484 inode->i_mode = fattr->mode; in nfs_fhget()
485 nfsi->cache_validity = 0; in nfs_fhget()
486 if ((fattr->valid & NFS_ATTR_FATTR_MODE) == 0 in nfs_fhget()
492 inode->i_op = NFS_SB(sb)->nfs_client->rpc_ops->file_inode_ops; in nfs_fhget()
493 if (S_ISREG(inode->i_mode)) { in nfs_fhget()
494 inode->i_fop = NFS_SB(sb)->nfs_client->rpc_ops->file_ops; in nfs_fhget()
495 inode->i_data.a_ops = &nfs_file_aops; in nfs_fhget()
497 } else if (S_ISDIR(inode->i_mode)) { in nfs_fhget()
498 inode->i_op = NFS_SB(sb)->nfs_client->rpc_ops->dir_inode_ops; in nfs_fhget()
499 inode->i_fop = &nfs_dir_operations; in nfs_fhget()
500 inode->i_data.a_ops = &nfs_dir_aops; in nfs_fhget()
503 if (fattr->valid & NFS_ATTR_FATTR_MOUNTPOINT || in nfs_fhget()
504 fattr->valid & NFS_ATTR_FATTR_V4_REFERRAL) { in nfs_fhget()
505 if (fattr->valid & NFS_ATTR_FATTR_V4_REFERRAL) in nfs_fhget()
506 inode->i_op = &nfs_referral_inode_operations; in nfs_fhget()
508 inode->i_op = &nfs_mountpoint_inode_operations; in nfs_fhget()
509 inode->i_fop = NULL; in nfs_fhget()
510 inode->i_flags |= S_AUTOMOUNT; in nfs_fhget()
512 } else if (S_ISLNK(inode->i_mode)) { in nfs_fhget()
513 inode->i_op = &nfs_symlink_inode_operations; in nfs_fhget()
516 init_special_inode(inode, inode->i_mode, fattr->rdev); in nfs_fhget()
518 memset(&inode->i_atime, 0, sizeof(inode->i_atime)); in nfs_fhget()
519 memset(&inode->i_mtime, 0, sizeof(inode->i_mtime)); in nfs_fhget()
522 inode->i_size = 0; in nfs_fhget()
524 inode->i_uid = make_kuid(&init_user_ns, -2); in nfs_fhget()
525 inode->i_gid = make_kgid(&init_user_ns, -2); in nfs_fhget()
526 inode->i_blocks = 0; in nfs_fhget()
527 nfsi->write_io = 0; in nfs_fhget()
528 nfsi->read_io = 0; in nfs_fhget()
530 nfsi->read_cache_jiffies = fattr->time_start; in nfs_fhget()
531 nfsi->attr_gencount = fattr->gencount; in nfs_fhget()
532 if (fattr->valid & NFS_ATTR_FATTR_ATIME) in nfs_fhget()
533 inode->i_atime = fattr->atime; in nfs_fhget()
536 if (fattr->valid & NFS_ATTR_FATTR_MTIME) in nfs_fhget()
537 inode->i_mtime = fattr->mtime; in nfs_fhget()
540 if (fattr->valid & NFS_ATTR_FATTR_CTIME) in nfs_fhget()
541 inode_set_ctime_to_ts(inode, fattr->ctime); in nfs_fhget()
544 if (fattr->valid & NFS_ATTR_FATTR_CHANGE) in nfs_fhget()
545 inode_set_iversion_raw(inode, fattr->change_attr); in nfs_fhget()
548 if (fattr->valid & NFS_ATTR_FATTR_SIZE) in nfs_fhget()
549 inode->i_size = nfs_size_to_loff_t(fattr->size); in nfs_fhget()
552 if (fattr->valid & NFS_ATTR_FATTR_NLINK) in nfs_fhget()
553 set_nlink(inode, fattr->nlink); in nfs_fhget()
556 if (fattr->valid & NFS_ATTR_FATTR_OWNER) in nfs_fhget()
557 inode->i_uid = fattr->uid; in nfs_fhget()
560 if (fattr->valid & NFS_ATTR_FATTR_GROUP) in nfs_fhget()
561 inode->i_gid = fattr->gid; in nfs_fhget()
564 if (fattr->valid & NFS_ATTR_FATTR_BLOCKS_USED) in nfs_fhget()
565 inode->i_blocks = fattr->du.nfs2.blocks; in nfs_fhget()
567 fattr->size != 0) in nfs_fhget()
569 if (fattr->valid & NFS_ATTR_FATTR_SPACE_USED) { in nfs_fhget()
573 inode->i_blocks = nfs_calc_block_size(fattr->du.nfs3.used); in nfs_fhget()
575 fattr->size != 0) in nfs_fhget()
580 nfsi->attrtimeo = NFS_MINATTRTIMEO(inode); in nfs_fhget()
581 nfsi->attrtimeo_timestamp = now; in nfs_fhget()
582 nfsi->access_cache = RB_ROOT; in nfs_fhget()
596 inode->i_sb->s_id, in nfs_fhget()
599 atomic_read(&inode->i_count)); in nfs_fhget()
623 if (attr->ia_valid & (ATTR_KILL_SUID | ATTR_KILL_SGID)) in nfs_setattr()
624 attr->ia_valid &= ~ATTR_MODE; in nfs_setattr()
626 if (attr->ia_valid & ATTR_SIZE) { in nfs_setattr()
627 BUG_ON(!S_ISREG(inode->i_mode)); in nfs_setattr()
629 error = inode_newsize_ok(inode, attr->ia_size); in nfs_setattr()
633 if (attr->ia_size == i_size_read(inode)) in nfs_setattr()
634 attr->ia_valid &= ~ATTR_SIZE; in nfs_setattr()
638 if (((attr->ia_valid & NFS_VALID_ATTRS) & ~(ATTR_FILE|ATTR_OPEN)) == 0) in nfs_setattr()
644 if (S_ISREG(inode->i_mode)) in nfs_setattr()
649 error = -ENOMEM; in nfs_setattr()
653 error = NFS_PROTO(inode)->setattr(dentry, fattr, attr); in nfs_setattr()
664 * nfs_vmtruncate - unmap mappings "freed" by truncate() syscall
670 * inode->i_size to be updated under the inode->i_lock.
671 * Note: must be called with inode->i_lock held!
685 NFS_I(inode)->cache_validity &= ~NFS_INO_INVALID_DATA; in nfs_vmtruncate()
688 NFS_I(inode)->cache_validity &= ~NFS_INO_INVALID_SIZE; in nfs_vmtruncate()
690 spin_unlock(&inode->i_lock); in nfs_vmtruncate()
692 spin_lock(&inode->i_lock); in nfs_vmtruncate()
698 * nfs_setattr_update_inode - Update inode metadata after a setattr call.
712 spin_lock(&inode->i_lock); in nfs_setattr_update_inode()
713 NFS_I(inode)->attr_gencount = fattr->gencount; in nfs_setattr_update_inode()
714 if ((attr->ia_valid & ATTR_SIZE) != 0) { in nfs_setattr_update_inode()
718 nfs_vmtruncate(inode, attr->ia_size); in nfs_setattr_update_inode()
720 if ((attr->ia_valid & (ATTR_MODE|ATTR_UID|ATTR_GID)) != 0) { in nfs_setattr_update_inode()
721 NFS_I(inode)->cache_validity &= ~NFS_INO_INVALID_CTIME; in nfs_setattr_update_inode()
722 if ((attr->ia_valid & ATTR_KILL_SUID) != 0 && in nfs_setattr_update_inode()
723 inode->i_mode & S_ISUID) in nfs_setattr_update_inode()
724 inode->i_mode &= ~S_ISUID; in nfs_setattr_update_inode()
726 inode->i_mode &= ~S_ISGID; in nfs_setattr_update_inode()
727 if ((attr->ia_valid & ATTR_MODE) != 0) { in nfs_setattr_update_inode()
728 int mode = attr->ia_mode & S_IALLUGO; in nfs_setattr_update_inode()
729 mode |= inode->i_mode & ~S_IALLUGO; in nfs_setattr_update_inode()
730 inode->i_mode = mode; in nfs_setattr_update_inode()
732 if ((attr->ia_valid & ATTR_UID) != 0) in nfs_setattr_update_inode()
733 inode->i_uid = attr->ia_uid; in nfs_setattr_update_inode()
734 if ((attr->ia_valid & ATTR_GID) != 0) in nfs_setattr_update_inode()
735 inode->i_gid = attr->ia_gid; in nfs_setattr_update_inode()
736 if (fattr->valid & NFS_ATTR_FATTR_CTIME) in nfs_setattr_update_inode()
737 inode_set_ctime_to_ts(inode, fattr->ctime); in nfs_setattr_update_inode()
744 if (attr->ia_valid & (ATTR_ATIME_SET|ATTR_ATIME)) { in nfs_setattr_update_inode()
745 NFS_I(inode)->cache_validity &= ~(NFS_INO_INVALID_ATIME in nfs_setattr_update_inode()
747 if (fattr->valid & NFS_ATTR_FATTR_ATIME) in nfs_setattr_update_inode()
748 inode->i_atime = fattr->atime; in nfs_setattr_update_inode()
749 else if (attr->ia_valid & ATTR_ATIME_SET) in nfs_setattr_update_inode()
750 inode->i_atime = attr->ia_atime; in nfs_setattr_update_inode()
754 if (fattr->valid & NFS_ATTR_FATTR_CTIME) in nfs_setattr_update_inode()
755 inode_set_ctime_to_ts(inode, fattr->ctime); in nfs_setattr_update_inode()
760 if (attr->ia_valid & (ATTR_MTIME_SET|ATTR_MTIME)) { in nfs_setattr_update_inode()
761 NFS_I(inode)->cache_validity &= ~(NFS_INO_INVALID_MTIME in nfs_setattr_update_inode()
763 if (fattr->valid & NFS_ATTR_FATTR_MTIME) in nfs_setattr_update_inode()
764 inode->i_mtime = fattr->mtime; in nfs_setattr_update_inode()
765 else if (attr->ia_valid & ATTR_MTIME_SET) in nfs_setattr_update_inode()
766 inode->i_mtime = attr->ia_mtime; in nfs_setattr_update_inode()
770 if (fattr->valid & NFS_ATTR_FATTR_CTIME) in nfs_setattr_update_inode()
771 inode_set_ctime_to_ts(inode, fattr->ctime); in nfs_setattr_update_inode()
776 if (fattr->valid) in nfs_setattr_update_inode()
778 spin_unlock(&inode->i_lock); in nfs_setattr_update_inode()
812 unsigned long cache_validity = READ_ONCE(NFS_I(inode)->cache_validity); in nfs_get_valid_attrmask()
839 struct inode *inode = d_inode(path->dentry); in nfs_getattr()
856 nfs_readdirplus_parent_cache_hit(path->dentry); in nfs_getattr()
862 S_ISREG(inode->i_mode)) in nfs_getattr()
863 filemap_write_and_wait(inode->i_mapping); in nfs_getattr()
869 * - NFS always sets S_NOATIME by so checking it would give a in nfs_getattr()
871 * - NFS never sets SB_NOATIME or SB_NODIRATIME so there is in nfs_getattr()
874 if ((path->mnt->mnt_flags & MNT_NOATIME) || in nfs_getattr()
875 ((path->mnt->mnt_flags & MNT_NODIRATIME) && S_ISDIR(inode->i_mode))) in nfs_getattr()
887 cache_validity = READ_ONCE(NFS_I(inode)->cache_validity); in nfs_getattr()
908 nfs_readdirplus_parent_cache_miss(path->dentry); in nfs_getattr()
913 nfs_readdirplus_parent_cache_hit(path->dentry); in nfs_getattr()
916 stat->result_mask = nfs_get_valid_attrmask(inode) | request_mask; in nfs_getattr()
919 stat->ino = nfs_compat_user_ino64(NFS_FILEID(inode)); in nfs_getattr()
920 stat->change_cookie = inode_peek_iversion_raw(inode); in nfs_getattr()
921 stat->attributes_mask |= STATX_ATTR_CHANGE_MONOTONIC; in nfs_getattr()
922 if (server->change_attr_type != NFS4_CHANGE_TYPE_IS_UNDEFINED) in nfs_getattr()
923 stat->attributes |= STATX_ATTR_CHANGE_MONOTONIC; in nfs_getattr()
924 if (S_ISDIR(inode->i_mode)) in nfs_getattr()
925 stat->blksize = NFS_SERVER(inode)->dtsize; in nfs_getattr()
934 refcount_set(&l_ctx->count, 1); in nfs_init_lock_context()
935 l_ctx->lockowner = current->files; in nfs_init_lock_context()
936 INIT_LIST_HEAD(&l_ctx->list); in nfs_init_lock_context()
937 atomic_set(&l_ctx->io_count, 0); in nfs_init_lock_context()
944 list_for_each_entry_rcu(pos, &ctx->lock_context.list, list) { in __nfs_find_lock_context()
945 if (pos->lockowner != current->files) in __nfs_find_lock_context()
947 if (refcount_inc_not_zero(&pos->count)) in __nfs_find_lock_context()
956 struct inode *inode = d_inode(ctx->dentry); in nfs_get_lock_context()
964 return ERR_PTR(-ENOMEM); in nfs_get_lock_context()
966 spin_lock(&inode->i_lock); in nfs_get_lock_context()
969 new->open_context = get_nfs_open_context(ctx); in nfs_get_lock_context()
970 if (new->open_context) { in nfs_get_lock_context()
971 list_add_tail_rcu(&new->list, in nfs_get_lock_context()
972 &ctx->lock_context.list); in nfs_get_lock_context()
976 res = ERR_PTR(-EBADF); in nfs_get_lock_context()
978 spin_unlock(&inode->i_lock); in nfs_get_lock_context()
987 struct nfs_open_context *ctx = l_ctx->open_context; in nfs_put_lock_context()
988 struct inode *inode = d_inode(ctx->dentry); in nfs_put_lock_context()
990 if (!refcount_dec_and_lock(&l_ctx->count, &inode->i_lock)) in nfs_put_lock_context()
992 list_del_rcu(&l_ctx->list); in nfs_put_lock_context()
993 spin_unlock(&inode->i_lock); in nfs_put_lock_context()
1000 * nfs_close_context - Common close_context() routine NFSv2/v3
1005 * with close-to-open semantics and we have cached data that will
1013 if (!(ctx->mode & FMODE_WRITE)) in nfs_close_context()
1017 inode = d_inode(ctx->dentry); in nfs_close_context()
1018 if (NFS_PROTO(inode)->have_delegation(inode, FMODE_READ)) in nfs_close_context()
1021 if (inode->i_mapping->nrpages == 0) in nfs_close_context()
1023 if (nfsi->cache_validity & NFS_INO_INVALID_DATA) in nfs_close_context()
1025 if (!list_empty(&nfsi->open_files)) in nfs_close_context()
1027 if (NFS_SERVER(inode)->flags & NFS_MOUNT_NOCTO) in nfs_close_context()
1042 return ERR_PTR(-ENOMEM); in alloc_nfs_open_context()
1043 nfs_sb_active(dentry->d_sb); in alloc_nfs_open_context()
1044 ctx->dentry = dget(dentry); in alloc_nfs_open_context()
1046 ctx->cred = get_cred(filp->f_cred); in alloc_nfs_open_context()
1048 ctx->cred = get_current_cred(); in alloc_nfs_open_context()
1049 rcu_assign_pointer(ctx->ll_cred, NULL); in alloc_nfs_open_context()
1050 ctx->state = NULL; in alloc_nfs_open_context()
1051 ctx->mode = f_mode; in alloc_nfs_open_context()
1052 ctx->flags = 0; in alloc_nfs_open_context()
1053 ctx->error = 0; in alloc_nfs_open_context()
1054 ctx->flock_owner = (fl_owner_t)filp; in alloc_nfs_open_context()
1055 nfs_init_lock_context(&ctx->lock_context); in alloc_nfs_open_context()
1056 ctx->lock_context.open_context = ctx; in alloc_nfs_open_context()
1057 INIT_LIST_HEAD(&ctx->list); in alloc_nfs_open_context()
1058 ctx->mdsthreshold = NULL; in alloc_nfs_open_context()
1065 if (ctx != NULL && refcount_inc_not_zero(&ctx->lock_context.count)) in get_nfs_open_context()
1073 struct inode *inode = d_inode(ctx->dentry); in __put_nfs_open_context()
1074 struct super_block *sb = ctx->dentry->d_sb; in __put_nfs_open_context()
1076 if (!refcount_dec_and_test(&ctx->lock_context.count)) in __put_nfs_open_context()
1078 if (!list_empty(&ctx->list)) { in __put_nfs_open_context()
1079 spin_lock(&inode->i_lock); in __put_nfs_open_context()
1080 list_del_rcu(&ctx->list); in __put_nfs_open_context()
1081 spin_unlock(&inode->i_lock); in __put_nfs_open_context()
1084 NFS_PROTO(inode)->close_context(ctx, is_sync); in __put_nfs_open_context()
1085 put_cred(ctx->cred); in __put_nfs_open_context()
1086 dput(ctx->dentry); in __put_nfs_open_context()
1088 put_rpccred(rcu_dereference_protected(ctx->ll_cred, 1)); in __put_nfs_open_context()
1089 kfree(ctx->mdsthreshold); in __put_nfs_open_context()
1110 struct inode *inode = d_inode(ctx->dentry); in nfs_inode_attach_open_context()
1113 spin_lock(&inode->i_lock); in nfs_inode_attach_open_context()
1114 if (list_empty(&nfsi->open_files) && in nfs_inode_attach_open_context()
1118 list_add_tail_rcu(&ctx->list, &nfsi->open_files); in nfs_inode_attach_open_context()
1119 spin_unlock(&inode->i_lock); in nfs_inode_attach_open_context()
1125 filp->private_data = get_nfs_open_context(ctx); in nfs_file_set_open_context()
1126 set_bit(NFS_CONTEXT_FILE_OPEN, &ctx->flags); in nfs_file_set_open_context()
1127 if (list_empty(&ctx->list)) in nfs_file_set_open_context()
1141 list_for_each_entry_rcu(pos, &nfsi->open_files, list) { in nfs_find_open_context()
1142 if (cred != NULL && cred_fscmp(pos->cred, cred) != 0) in nfs_find_open_context()
1144 if ((pos->mode & (FMODE_READ|FMODE_WRITE)) != mode) in nfs_find_open_context()
1146 if (!test_bit(NFS_CONTEXT_FILE_OPEN, &pos->flags)) in nfs_find_open_context()
1161 struct inode *inode = d_inode(ctx->dentry); in nfs_file_clear_open_context()
1163 clear_bit(NFS_CONTEXT_FILE_OPEN, &ctx->flags); in nfs_file_clear_open_context()
1168 if (ctx->error < 0) in nfs_file_clear_open_context()
1169 invalidate_inode_pages2(inode->i_mapping); in nfs_file_clear_open_context()
1170 filp->private_data = NULL; in nfs_file_clear_open_context()
1183 flags_to_mode(filp->f_flags), filp); in nfs_open()
1199 int status = -ESTALE; in __nfs_revalidate_inode()
1204 inode->i_sb->s_id, (unsigned long long)NFS_FILEID(inode)); in __nfs_revalidate_inode()
1214 if (S_ISREG(inode->i_mode)) { in __nfs_revalidate_inode()
1220 status = -ENOMEM; in __nfs_revalidate_inode()
1227 status = NFS_PROTO(inode)->getattr(server, NFS_FH(inode), fattr, inode); in __nfs_revalidate_inode()
1230 inode->i_sb->s_id, in __nfs_revalidate_inode()
1233 case -ETIMEDOUT: in __nfs_revalidate_inode()
1235 if (server->flags & NFS_MOUNT_SOFTREVAL) in __nfs_revalidate_inode()
1238 case -ESTALE: in __nfs_revalidate_inode()
1239 if (!S_ISDIR(inode->i_mode)) in __nfs_revalidate_inode()
1250 inode->i_sb->s_id, in __nfs_revalidate_inode()
1255 if (nfsi->cache_validity & NFS_INO_INVALID_ACL) in __nfs_revalidate_inode()
1261 inode->i_sb->s_id, in __nfs_revalidate_inode()
1278 * nfs_revalidate_inode - Revalidate the inode attributes
1287 return NFS_STALE(inode) ? -ESTALE : 0; in nfs_revalidate_inode()
1297 if (mapping->nrpages != 0) { in nfs_invalidate_mapping()
1298 if (S_ISREG(inode->i_mode)) { in nfs_invalidate_mapping()
1310 inode->i_sb->s_id, in nfs_invalidate_mapping()
1316 * nfs_clear_invalid_mapping - Conditionally clear a mapping
1323 struct inode *inode = mapping->host; in nfs_clear_invalid_mapping()
1325 unsigned long *bitlock = &nfsi->flags; in nfs_clear_invalid_mapping()
1330 * invalidations that come in while we're shooting down the mappings in nfs_clear_invalid_mapping()
1350 if (!(smp_load_acquire(&nfsi->cache_validity) & NFS_INO_INVALID_DATA)) in nfs_clear_invalid_mapping()
1352 /* Slow-path that double-checks with spinlock held */ in nfs_clear_invalid_mapping()
1353 spin_lock(&inode->i_lock); in nfs_clear_invalid_mapping()
1355 spin_unlock(&inode->i_lock); in nfs_clear_invalid_mapping()
1358 if (nfsi->cache_validity & NFS_INO_INVALID_DATA) in nfs_clear_invalid_mapping()
1360 spin_unlock(&inode->i_lock); in nfs_clear_invalid_mapping()
1366 nfsi->cache_validity &= ~NFS_INO_INVALID_DATA; in nfs_clear_invalid_mapping()
1368 spin_unlock(&inode->i_lock); in nfs_clear_invalid_mapping()
1389 unsigned long *bitlock = &nfsi->flags; in nfs_revalidate_mapping_rcu()
1395 ret = -ECHILD; in nfs_revalidate_mapping_rcu()
1398 spin_lock(&inode->i_lock); in nfs_revalidate_mapping_rcu()
1400 (nfsi->cache_validity & NFS_INO_INVALID_DATA)) in nfs_revalidate_mapping_rcu()
1401 ret = -ECHILD; in nfs_revalidate_mapping_rcu()
1402 spin_unlock(&inode->i_lock); in nfs_revalidate_mapping_rcu()
1408 * nfs_revalidate_mapping - Revalidate the pagecache
1429 struct inode *inode = &nfsi->vfs_inode; in nfs_file_has_writers()
1431 if (!S_ISREG(inode->i_mode)) in nfs_file_has_writers()
1433 if (list_empty(&nfsi->open_files)) in nfs_file_has_writers()
1447 if ((fattr->valid & NFS_ATTR_FATTR_PRECHANGE) in nfs_wcc_update_inode()
1448 && (fattr->valid & NFS_ATTR_FATTR_CHANGE) in nfs_wcc_update_inode()
1449 && inode_eq_iversion_raw(inode, fattr->pre_change_attr)) { in nfs_wcc_update_inode()
1450 inode_set_iversion_raw(inode, fattr->change_attr); in nfs_wcc_update_inode()
1451 if (S_ISDIR(inode->i_mode)) in nfs_wcc_update_inode()
1458 if ((fattr->valid & NFS_ATTR_FATTR_PRECTIME) in nfs_wcc_update_inode()
1459 && (fattr->valid & NFS_ATTR_FATTR_CTIME) in nfs_wcc_update_inode()
1460 && timespec64_equal(&ts, &fattr->pre_ctime)) { in nfs_wcc_update_inode()
1461 inode_set_ctime_to_ts(inode, fattr->ctime); in nfs_wcc_update_inode()
1464 ts = inode->i_mtime; in nfs_wcc_update_inode()
1465 if ((fattr->valid & NFS_ATTR_FATTR_PREMTIME) in nfs_wcc_update_inode()
1466 && (fattr->valid & NFS_ATTR_FATTR_MTIME) in nfs_wcc_update_inode()
1467 && timespec64_equal(&ts, &fattr->pre_mtime)) { in nfs_wcc_update_inode()
1468 inode->i_mtime = fattr->mtime; in nfs_wcc_update_inode()
1470 if ((fattr->valid & NFS_ATTR_FATTR_PRESIZE) in nfs_wcc_update_inode()
1471 && (fattr->valid & NFS_ATTR_FATTR_SIZE) in nfs_wcc_update_inode()
1472 && i_size_read(inode) == nfs_size_to_loff_t(fattr->pre_size) in nfs_wcc_update_inode()
1474 trace_nfs_size_wcc(inode, fattr->size); in nfs_wcc_update_inode()
1475 i_size_write(inode, nfs_size_to_loff_t(fattr->size)); in nfs_wcc_update_inode()
1480 * nfs_check_inode_attributes - verify consistency of the inode attribute cache
1495 if (NFS_PROTO(inode)->have_delegation(inode, FMODE_READ)) in nfs_check_inode_attributes()
1498 if (!(fattr->valid & NFS_ATTR_FATTR_FILEID)) { in nfs_check_inode_attributes()
1499 /* Only a mounted-on-fileid? Just exit */ in nfs_check_inode_attributes()
1500 if (fattr->valid & NFS_ATTR_FATTR_MOUNTED_ON_FILEID) in nfs_check_inode_attributes()
1503 } else if (nfsi->fileid != fattr->fileid) { in nfs_check_inode_attributes()
1504 /* Is this perhaps the mounted-on fileid? */ in nfs_check_inode_attributes()
1505 if ((fattr->valid & NFS_ATTR_FATTR_MOUNTED_ON_FILEID) && in nfs_check_inode_attributes()
1506 nfsi->fileid == fattr->mounted_on_fileid) in nfs_check_inode_attributes()
1508 return -ESTALE; in nfs_check_inode_attributes()
1510 if ((fattr->valid & NFS_ATTR_FATTR_TYPE) && inode_wrong_type(inode, fattr->mode)) in nfs_check_inode_attributes()
1511 return -ESTALE; in nfs_check_inode_attributes()
1516 …if ((fattr->valid & NFS_ATTR_FATTR_CHANGE) != 0 && !inode_eq_iversion_raw(inode, fattr->change_att… in nfs_check_inode_attributes()
1519 ts = inode->i_mtime; in nfs_check_inode_attributes()
1520 if ((fattr->valid & NFS_ATTR_FATTR_MTIME) && !timespec64_equal(&ts, &fattr->mtime)) in nfs_check_inode_attributes()
1524 if ((fattr->valid & NFS_ATTR_FATTR_CTIME) && !timespec64_equal(&ts, &fattr->ctime)) in nfs_check_inode_attributes()
1527 if (fattr->valid & NFS_ATTR_FATTR_SIZE) { in nfs_check_inode_attributes()
1529 new_isize = nfs_size_to_loff_t(fattr->size); in nfs_check_inode_attributes()
1536 …if ((fattr->valid & NFS_ATTR_FATTR_MODE) && (inode->i_mode & S_IALLUGO) != (fattr->mode & S_IALLUG… in nfs_check_inode_attributes()
1538 if ((fattr->valid & NFS_ATTR_FATTR_OWNER) && !uid_eq(inode->i_uid, fattr->uid)) in nfs_check_inode_attributes()
1540 if ((fattr->valid & NFS_ATTR_FATTR_GROUP) && !gid_eq(inode->i_gid, fattr->gid)) in nfs_check_inode_attributes()
1544 if ((fattr->valid & NFS_ATTR_FATTR_NLINK) && inode->i_nlink != fattr->nlink) in nfs_check_inode_attributes()
1547 ts = inode->i_atime; in nfs_check_inode_attributes()
1548 if ((fattr->valid & NFS_ATTR_FATTR_ATIME) && !timespec64_equal(&ts, &fattr->atime)) in nfs_check_inode_attributes()
1554 nfsi->read_cache_jiffies = fattr->time_start; in nfs_check_inode_attributes()
1573 fattr->valid = 0; in nfs_fattr_init()
1574 fattr->time_start = jiffies; in nfs_fattr_init()
1575 fattr->gencount = nfs_inc_attr_generation_counter(); in nfs_fattr_init()
1576 fattr->owner_name = NULL; in nfs_fattr_init()
1577 fattr->group_name = NULL; in nfs_fattr_init()
1578 fattr->mdsthreshold = NULL; in nfs_fattr_init()
1595 fattr->gencount = nfs_inc_attr_generation_counter(); in nfs_fattr_set_barrier()
1605 fattr->label = NULL; in nfs_alloc_fattr()
1618 fattr->label = nfs4_label_alloc(server, GFP_KERNEL); in nfs_alloc_fattr_with_label()
1619 if (IS_ERR(fattr->label)) { in nfs_alloc_fattr_with_label()
1634 fh->size = 0; in nfs_alloc_fhandle()
1641 * _nfs_display_fhandle_hash - calculate the crc32 hash for the filehandle
1650 /* wireshark uses 32-bit AUTODIN crc and does a bitwise in _nfs_display_fhandle_hash()
1657 * _nfs_display_fhandle - display an NFS file handle on the console
1668 if (fh == NULL || fh->size == 0) { in _nfs_display_fhandle()
1674 caption, fh, fh->size, _nfs_display_fhandle_hash(fh)); in _nfs_display_fhandle()
1675 for (i = 0; i < fh->size; i += 16) { in _nfs_display_fhandle()
1676 __be32 *pos = (__be32 *)&fh->data[i]; in _nfs_display_fhandle()
1678 switch ((fh->size - i - 1) >> 2) { in _nfs_display_fhandle()
1703 * nfs_inode_attrs_cmp_generic - compare attributes
1718 unsigned long attr_gencount = NFS_I(inode)->attr_gencount; in nfs_inode_attrs_cmp_generic()
1720 return (long)(fattr->gencount - attr_gencount) > 0 || in nfs_inode_attrs_cmp_generic()
1721 (long)(attr_gencount - nfs_read_attr_generation_counter()) > 0; in nfs_inode_attrs_cmp_generic()
1725 * nfs_inode_attrs_cmp_monotonic - compare attributes
1737 * A return value of '-1' means that the attributes in @inode are
1743 s64 diff = fattr->change_attr - inode_peek_iversion_raw(inode); in nfs_inode_attrs_cmp_monotonic()
1746 return diff == 0 ? 0 : -1; in nfs_inode_attrs_cmp_monotonic()
1750 * nfs_inode_attrs_cmp_strict_monotonic - compare attributes
1761 * A return value of '-1' means that the attributes in @inode are
1767 return nfs_inode_attrs_cmp_monotonic(fattr, inode) > 0 ? 1 : -1; in nfs_inode_attrs_cmp_strict_monotonic()
1771 * nfs_inode_attrs_cmp - compare attributes
1776 * more recent than the ones cached in @inode. It returns '-1' if
1785 switch (NFS_SERVER(inode)->change_attr_type) { in nfs_inode_attrs_cmp()
1789 if (!(fattr->valid & NFS_ATTR_FATTR_CHANGE)) in nfs_inode_attrs_cmp()
1793 if (!(fattr->valid & NFS_ATTR_FATTR_CHANGE)) in nfs_inode_attrs_cmp()
1801 * nfs_inode_finish_partial_attr_update - complete a previous inode update
1818 unsigned long cache_validity = NFS_I(inode)->cache_validity; in nfs_inode_finish_partial_attr_update()
1819 enum nfs4_change_attr_type ctype = NFS_SERVER(inode)->change_attr_type; in nfs_inode_finish_partial_attr_update()
1824 (fattr->valid & NFS_ATTR_FATTR_CHANGE) != 0 && in nfs_inode_finish_partial_attr_update()
1835 if (nfsi->cache_validity & NFS_INO_DATA_INVAL_DEFER) in nfs_ooo_merge()
1839 if (!nfsi->ooo) { in nfs_ooo_merge()
1840 nfsi->ooo = kmalloc(sizeof(*nfsi->ooo), GFP_ATOMIC); in nfs_ooo_merge()
1841 if (!nfsi->ooo) { in nfs_ooo_merge()
1842 nfsi->cache_validity |= NFS_INO_DATA_INVAL_DEFER; in nfs_ooo_merge()
1845 nfsi->ooo->cnt = 0; in nfs_ooo_merge()
1849 cnt = nfsi->ooo->cnt; in nfs_ooo_merge()
1851 if (end == nfsi->ooo->gap[i].start) in nfs_ooo_merge()
1852 end = nfsi->ooo->gap[i].end; in nfs_ooo_merge()
1853 else if (start == nfsi->ooo->gap[i].end) in nfs_ooo_merge()
1854 start = nfsi->ooo->gap[i].start; in nfs_ooo_merge()
1858 cnt -= 1; in nfs_ooo_merge()
1859 nfsi->ooo->gap[i] = nfsi->ooo->gap[cnt]; in nfs_ooo_merge()
1860 i = -1; in nfs_ooo_merge()
1863 if (cnt >= ARRAY_SIZE(nfsi->ooo->gap)) { in nfs_ooo_merge()
1864 nfsi->cache_validity |= NFS_INO_DATA_INVAL_DEFER; in nfs_ooo_merge()
1865 kfree(nfsi->ooo); in nfs_ooo_merge()
1866 nfsi->ooo = NULL; in nfs_ooo_merge()
1869 nfsi->ooo->gap[cnt].start = start; in nfs_ooo_merge()
1870 nfsi->ooo->gap[cnt].end = end; in nfs_ooo_merge()
1873 nfsi->ooo->cnt = cnt; in nfs_ooo_merge()
1879 /* This reply was out-of-order, so record in the in nfs_ooo_record()
1883 if ((fattr->valid & NFS_ATTR_FATTR_CHANGE) && in nfs_ooo_record()
1884 (fattr->valid & NFS_ATTR_FATTR_PRECHANGE)) in nfs_ooo_record()
1886 fattr->change_attr, in nfs_ooo_record()
1887 fattr->pre_change_attr); in nfs_ooo_record()
1912 * nfs_refresh_inode - try to update the inode attribute cache
1925 if ((fattr->valid & NFS_ATTR_FATTR) == 0) in nfs_refresh_inode()
1927 spin_lock(&inode->i_lock); in nfs_refresh_inode()
1929 spin_unlock(&inode->i_lock); in nfs_refresh_inode()
1938 if (S_ISDIR(inode->i_mode)) in nfs_post_op_update_inode_locked()
1941 if ((fattr->valid & NFS_ATTR_FATTR) == 0) in nfs_post_op_update_inode_locked()
1947 * nfs_post_op_update_inode - try to update the inode attribute cache
1964 spin_lock(&inode->i_lock); in nfs_post_op_update_inode()
1970 spin_unlock(&inode->i_lock); in nfs_post_op_update_inode()
1977 * nfs_post_op_update_inode_force_wcc_locked - update the inode attribute cache
1985 * This function is mainly designed to be used by the ->write_done() functions.
1995 if ((fattr->valid & NFS_ATTR_FATTR) == 0 || !attr_cmp) { in nfs_post_op_update_inode_force_wcc_locked()
1998 fattr->valid &= ~(NFS_ATTR_FATTR_PRECHANGE in nfs_post_op_update_inode_force_wcc_locked()
2004 if ((fattr->valid & NFS_ATTR_FATTR_CHANGE) != 0 && in nfs_post_op_update_inode_force_wcc_locked()
2005 (fattr->valid & NFS_ATTR_FATTR_PRECHANGE) == 0) { in nfs_post_op_update_inode_force_wcc_locked()
2006 fattr->pre_change_attr = inode_peek_iversion_raw(inode); in nfs_post_op_update_inode_force_wcc_locked()
2007 fattr->valid |= NFS_ATTR_FATTR_PRECHANGE; in nfs_post_op_update_inode_force_wcc_locked()
2009 if ((fattr->valid & NFS_ATTR_FATTR_CTIME) != 0 && in nfs_post_op_update_inode_force_wcc_locked()
2010 (fattr->valid & NFS_ATTR_FATTR_PRECTIME) == 0) { in nfs_post_op_update_inode_force_wcc_locked()
2011 fattr->pre_ctime = inode_get_ctime(inode); in nfs_post_op_update_inode_force_wcc_locked()
2012 fattr->valid |= NFS_ATTR_FATTR_PRECTIME; in nfs_post_op_update_inode_force_wcc_locked()
2014 if ((fattr->valid & NFS_ATTR_FATTR_MTIME) != 0 && in nfs_post_op_update_inode_force_wcc_locked()
2015 (fattr->valid & NFS_ATTR_FATTR_PREMTIME) == 0) { in nfs_post_op_update_inode_force_wcc_locked()
2016 fattr->pre_mtime = inode->i_mtime; in nfs_post_op_update_inode_force_wcc_locked()
2017 fattr->valid |= NFS_ATTR_FATTR_PREMTIME; in nfs_post_op_update_inode_force_wcc_locked()
2019 if ((fattr->valid & NFS_ATTR_FATTR_SIZE) != 0 && in nfs_post_op_update_inode_force_wcc_locked()
2020 (fattr->valid & NFS_ATTR_FATTR_PRESIZE) == 0) { in nfs_post_op_update_inode_force_wcc_locked()
2021 fattr->pre_size = i_size_read(inode); in nfs_post_op_update_inode_force_wcc_locked()
2022 fattr->valid |= NFS_ATTR_FATTR_PRESIZE; in nfs_post_op_update_inode_force_wcc_locked()
2034 * nfs_post_op_update_inode_force_wcc - try to update the inode attribute cache
2042 * This function is mainly designed to be used by the ->write_done() functions.
2048 spin_lock(&inode->i_lock); in nfs_post_op_update_inode_force_wcc()
2051 spin_unlock(&inode->i_lock); in nfs_post_op_update_inode_force_wcc()
2074 u64 fattr_supported = server->fattr_valid; in nfs_update_inode()
2084 __func__, inode->i_sb->s_id, inode->i_ino, in nfs_update_inode()
2086 atomic_read(&inode->i_count), fattr->valid); in nfs_update_inode()
2088 if (!(fattr->valid & NFS_ATTR_FATTR_FILEID)) { in nfs_update_inode()
2089 /* Only a mounted-on-fileid? Just exit */ in nfs_update_inode()
2090 if (fattr->valid & NFS_ATTR_FATTR_MOUNTED_ON_FILEID) in nfs_update_inode()
2093 } else if (nfsi->fileid != fattr->fileid) { in nfs_update_inode()
2094 /* Is this perhaps the mounted-on fileid? */ in nfs_update_inode()
2095 if ((fattr->valid & NFS_ATTR_FATTR_MOUNTED_ON_FILEID) && in nfs_update_inode()
2096 nfsi->fileid == fattr->mounted_on_fileid) in nfs_update_inode()
2100 NFS_SERVER(inode)->nfs_client->cl_hostname, in nfs_update_inode()
2101 inode->i_sb->s_id, (long long)nfsi->fileid, in nfs_update_inode()
2102 (long long)fattr->fileid); in nfs_update_inode()
2109 if ((fattr->valid & NFS_ATTR_FATTR_TYPE) && inode_wrong_type(inode, fattr->mode)) { in nfs_update_inode()
2111 * Big trouble! The inode has become a different object. in nfs_update_inode()
2114 __func__, inode->i_ino, inode->i_mode, fattr->mode); in nfs_update_inode()
2119 if (S_ISDIR(inode->i_mode) && (fattr->valid & NFS_ATTR_FATTR_FSID) && in nfs_update_inode()
2120 !nfs_fsid_equal(&server->fsid, &fattr->fsid) && in nfs_update_inode()
2122 server->fsid = fattr->fsid; in nfs_update_inode()
2130 nfsi->read_cache_jiffies = fattr->time_start; in nfs_update_inode()
2132 save_cache_validity = nfsi->cache_validity; in nfs_update_inode()
2133 nfsi->cache_validity &= ~(NFS_INO_INVALID_ATTR in nfs_update_inode()
2142 nfsi->cache_validity |= in nfs_update_inode()
2151 if (fattr->valid & NFS_ATTR_FATTR_CHANGE) { in nfs_update_inode()
2152 if (!have_writers && nfsi->ooo && nfsi->ooo->cnt == 1 && in nfs_update_inode()
2153 nfsi->ooo->gap[0].end == inode_peek_iversion_raw(inode)) { in nfs_update_inode()
2155 * merged into iversion - do that now. in nfs_update_inode()
2157 inode_set_iversion_raw(inode, nfsi->ooo->gap[0].start); in nfs_update_inode()
2158 kfree(nfsi->ooo); in nfs_update_inode()
2159 nfsi->ooo = NULL; in nfs_update_inode()
2161 if (!inode_eq_iversion_raw(inode, fattr->change_attr)) { in nfs_update_inode()
2176 if (S_ISDIR(inode->i_mode)) in nfs_update_inode()
2180 inode->i_sb->s_id, in nfs_update_inode()
2181 inode->i_ino); in nfs_update_inode()
2185 fattr->change_attr); in nfs_update_inode()
2187 inode_set_iversion_raw(inode, fattr->change_attr); in nfs_update_inode()
2190 nfsi->cache_validity |= in nfs_update_inode()
2193 (nfsi->cache_validity & NFS_INO_INVALID_CHANGE) != 0) in nfs_update_inode()
2197 if (fattr->valid & NFS_ATTR_FATTR_MTIME) in nfs_update_inode()
2198 inode->i_mtime = fattr->mtime; in nfs_update_inode()
2200 nfsi->cache_validity |= in nfs_update_inode()
2203 if (fattr->valid & NFS_ATTR_FATTR_CTIME) in nfs_update_inode()
2204 inode_set_ctime_to_ts(inode, fattr->ctime); in nfs_update_inode()
2206 nfsi->cache_validity |= in nfs_update_inode()
2210 if (fattr->valid & NFS_ATTR_FATTR_SIZE) { in nfs_update_inode()
2211 new_isize = nfs_size_to_loff_t(fattr->size); in nfs_update_inode()
2224 !(fattr->valid & (NFS_ATTR_FATTR_SPACE_USED | in nfs_update_inode()
2226 fattr->du.nfs3.used = 0; in nfs_update_inode()
2227 fattr->valid |= NFS_ATTR_FATTR_SPACE_USED; in nfs_update_inode()
2230 nfsi->cache_validity |= in nfs_update_inode()
2233 if (fattr->valid & NFS_ATTR_FATTR_ATIME) in nfs_update_inode()
2234 inode->i_atime = fattr->atime; in nfs_update_inode()
2236 nfsi->cache_validity |= in nfs_update_inode()
2239 if (fattr->valid & NFS_ATTR_FATTR_MODE) { in nfs_update_inode()
2240 if ((inode->i_mode & S_IALLUGO) != (fattr->mode & S_IALLUGO)) { in nfs_update_inode()
2241 umode_t newmode = inode->i_mode & S_IFMT; in nfs_update_inode()
2242 newmode |= fattr->mode & S_IALLUGO; in nfs_update_inode()
2243 inode->i_mode = newmode; in nfs_update_inode()
2248 nfsi->cache_validity |= in nfs_update_inode()
2251 if (fattr->valid & NFS_ATTR_FATTR_OWNER) { in nfs_update_inode()
2252 if (!uid_eq(inode->i_uid, fattr->uid)) { in nfs_update_inode()
2255 inode->i_uid = fattr->uid; in nfs_update_inode()
2258 nfsi->cache_validity |= in nfs_update_inode()
2261 if (fattr->valid & NFS_ATTR_FATTR_GROUP) { in nfs_update_inode()
2262 if (!gid_eq(inode->i_gid, fattr->gid)) { in nfs_update_inode()
2265 inode->i_gid = fattr->gid; in nfs_update_inode()
2268 nfsi->cache_validity |= in nfs_update_inode()
2271 if (fattr->valid & NFS_ATTR_FATTR_NLINK) { in nfs_update_inode()
2272 if (inode->i_nlink != fattr->nlink) in nfs_update_inode()
2273 set_nlink(inode, fattr->nlink); in nfs_update_inode()
2275 nfsi->cache_validity |= in nfs_update_inode()
2278 if (fattr->valid & NFS_ATTR_FATTR_SPACE_USED) { in nfs_update_inode()
2282 inode->i_blocks = nfs_calc_block_size(fattr->du.nfs3.used); in nfs_update_inode()
2284 nfsi->cache_validity |= in nfs_update_inode()
2287 if (fattr->valid & NFS_ATTR_FATTR_BLOCKS_USED) in nfs_update_inode()
2288 inode->i_blocks = fattr->du.nfs2.blocks; in nfs_update_inode()
2290 nfsi->cache_validity |= in nfs_update_inode()
2296 nfsi->attrtimeo = NFS_MINATTRTIMEO(inode); in nfs_update_inode()
2297 nfsi->attrtimeo_timestamp = now; in nfs_update_inode()
2299 nfsi->attr_gencount = nfs_inc_attr_generation_counter(); in nfs_update_inode()
2302 if (!time_in_range_open(now, nfsi->attrtimeo_timestamp, in nfs_update_inode()
2303 nfsi->attrtimeo_timestamp + nfsi->attrtimeo)) { in nfs_update_inode()
2304 nfsi->attrtimeo <<= 1; in nfs_update_inode()
2305 if (nfsi->attrtimeo > NFS_MAXATTRTIMEO(inode)) in nfs_update_inode()
2306 nfsi->attrtimeo = NFS_MAXATTRTIMEO(inode); in nfs_update_inode()
2308 nfsi->attrtimeo_timestamp = now; in nfs_update_inode()
2311 if ((long)(fattr->gencount - nfsi->attr_gencount) > 0) in nfs_update_inode()
2312 nfsi->attr_gencount = fattr->gencount; in nfs_update_inode()
2316 if (!(S_ISREG(inode->i_mode) || S_ISDIR(inode->i_mode) in nfs_update_inode()
2317 || S_ISLNK(inode->i_mode))) in nfs_update_inode()
2329 return -ESTALE; in nfs_update_inode()
2338 nfsi->flags = 0UL; in nfs_alloc_inode()
2339 nfsi->cache_validity = 0UL; in nfs_alloc_inode()
2340 nfsi->ooo = NULL; in nfs_alloc_inode()
2342 nfsi->nfs4_acl = NULL; in nfs_alloc_inode()
2345 nfsi->xattr_cache = NULL; in nfs_alloc_inode()
2349 return &nfsi->vfs_inode; in nfs_alloc_inode()
2355 kfree(NFS_I(inode)->ooo); in nfs_free_inode()
2363 INIT_LIST_HEAD(&nfsi->open_states); in nfs4_init_once()
2364 nfsi->delegation = NULL; in nfs4_init_once()
2365 init_rwsem(&nfsi->rwsem); in nfs4_init_once()
2366 nfsi->layout = NULL; in nfs4_init_once()
2374 inode_init_once(&nfsi->vfs_inode); in init_once()
2375 INIT_LIST_HEAD(&nfsi->open_files); in init_once()
2376 INIT_LIST_HEAD(&nfsi->access_cache_entry_lru); in init_once()
2377 INIT_LIST_HEAD(&nfsi->access_cache_inode_lru); in init_once()
2389 return -ENOMEM; in nfs_init_inodecache()
2416 return -ENOMEM; in nfsiod_start()
2444 if (!rpc_proc_register(net, &nn->rpcstats)) { in nfs_net_init()
2446 return -ENOMEM; in nfs_net_init()