|
@@ -318,7 +318,7 @@ nfs_fhget(struct super_block *sb, struct nfs_fh *fh, struct nfs_fattr *fattr)
|
|
|
memset(&inode->i_atime, 0, sizeof(inode->i_atime));
|
|
|
memset(&inode->i_mtime, 0, sizeof(inode->i_mtime));
|
|
|
memset(&inode->i_ctime, 0, sizeof(inode->i_ctime));
|
|
|
- nfsi->change_attr = 0;
|
|
|
+ inode->i_version = 0;
|
|
|
inode->i_size = 0;
|
|
|
inode->i_nlink = 0;
|
|
|
inode->i_uid = -2;
|
|
@@ -344,7 +344,7 @@ nfs_fhget(struct super_block *sb, struct nfs_fh *fh, struct nfs_fattr *fattr)
|
|
|
| NFS_INO_INVALID_ACCESS
|
|
|
| NFS_INO_INVALID_ACL;
|
|
|
if (fattr->valid & NFS_ATTR_FATTR_CHANGE)
|
|
|
- nfsi->change_attr = fattr->change_attr;
|
|
|
+ inode->i_version = fattr->change_attr;
|
|
|
else if (nfs_server_capable(inode, NFS_CAP_CHANGE_ATTR))
|
|
|
nfsi->cache_validity |= NFS_INO_INVALID_ATTR
|
|
|
| NFS_INO_INVALID_DATA;
|
|
@@ -897,8 +897,8 @@ static unsigned long nfs_wcc_update_inode(struct inode *inode, struct nfs_fattr
|
|
|
|
|
|
if ((fattr->valid & NFS_ATTR_FATTR_PRECHANGE)
|
|
|
&& (fattr->valid & NFS_ATTR_FATTR_CHANGE)
|
|
|
- && nfsi->change_attr == fattr->pre_change_attr) {
|
|
|
- nfsi->change_attr = fattr->change_attr;
|
|
|
+ && inode->i_version == fattr->pre_change_attr) {
|
|
|
+ inode->i_version = fattr->change_attr;
|
|
|
if (S_ISDIR(inode->i_mode))
|
|
|
nfsi->cache_validity |= NFS_INO_INVALID_DATA;
|
|
|
ret |= NFS_INO_INVALID_ATTR;
|
|
@@ -952,7 +952,7 @@ static int nfs_check_inode_attributes(struct inode *inode, struct nfs_fattr *fat
|
|
|
return -EIO;
|
|
|
|
|
|
if ((fattr->valid & NFS_ATTR_FATTR_CHANGE) != 0 &&
|
|
|
- nfsi->change_attr != fattr->change_attr)
|
|
|
+ inode->i_version != fattr->change_attr)
|
|
|
invalid |= NFS_INO_INVALID_ATTR|NFS_INO_REVAL_PAGECACHE;
|
|
|
|
|
|
/* Verify a few of the more important attributes */
|
|
@@ -1163,7 +1163,7 @@ int nfs_post_op_update_inode_force_wcc(struct inode *inode, struct nfs_fattr *fa
|
|
|
}
|
|
|
if ((fattr->valid & NFS_ATTR_FATTR_CHANGE) != 0 &&
|
|
|
(fattr->valid & NFS_ATTR_FATTR_PRECHANGE) == 0) {
|
|
|
- fattr->pre_change_attr = NFS_I(inode)->change_attr;
|
|
|
+ fattr->pre_change_attr = inode->i_version;
|
|
|
fattr->valid |= NFS_ATTR_FATTR_PRECHANGE;
|
|
|
}
|
|
|
if ((fattr->valid & NFS_ATTR_FATTR_CTIME) != 0 &&
|
|
@@ -1244,13 +1244,13 @@ static int nfs_update_inode(struct inode *inode, struct nfs_fattr *fattr)
|
|
|
|
|
|
/* More cache consistency checks */
|
|
|
if (fattr->valid & NFS_ATTR_FATTR_CHANGE) {
|
|
|
- if (nfsi->change_attr != fattr->change_attr) {
|
|
|
+ if (inode->i_version != fattr->change_attr) {
|
|
|
dprintk("NFS: change_attr change on server for file %s/%ld\n",
|
|
|
inode->i_sb->s_id, inode->i_ino);
|
|
|
invalid |= NFS_INO_INVALID_ATTR|NFS_INO_INVALID_DATA|NFS_INO_INVALID_ACCESS|NFS_INO_INVALID_ACL;
|
|
|
if (S_ISDIR(inode->i_mode))
|
|
|
nfs_force_lookup_revalidate(inode);
|
|
|
- nfsi->change_attr = fattr->change_attr;
|
|
|
+ inode->i_version = fattr->change_attr;
|
|
|
}
|
|
|
} else if (server->caps & NFS_CAP_CHANGE_ATTR)
|
|
|
invalid |= save_cache_validity;
|