diff options
Diffstat (limited to 'fs/nfs/inode.c')
| -rw-r--r-- | fs/nfs/inode.c | 22 | 
1 files changed, 11 insertions, 11 deletions
| diff --git a/fs/nfs/inode.c b/fs/nfs/inode.c index fe1203797b2b..c07a55aec838 100644 --- a/fs/nfs/inode.c +++ b/fs/nfs/inode.c @@ -318,9 +318,9 @@ 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; +		clear_nlink(inode);  		inode->i_uid = -2;  		inode->i_gid = -2;  		inode->i_blocks = 0; @@ -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; @@ -355,7 +355,7 @@ nfs_fhget(struct super_block *sb, struct nfs_fh *fh, struct nfs_fattr *fattr)  				| NFS_INO_INVALID_DATA  				| NFS_INO_REVAL_PAGECACHE;  		if (fattr->valid & NFS_ATTR_FATTR_NLINK) -			inode->i_nlink = fattr->nlink; +			set_nlink(inode, fattr->nlink);  		else if (nfs_server_capable(inode, NFS_CAP_NLINK))  			nfsi->cache_validity |= NFS_INO_INVALID_ATTR;  		if (fattr->valid & NFS_ATTR_FATTR_OWNER) @@ -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; @@ -1361,7 +1361,7 @@ static int nfs_update_inode(struct inode *inode, struct nfs_fattr *fattr)  			invalid |= NFS_INO_INVALID_ATTR;  			if (S_ISDIR(inode->i_mode))  				invalid |= NFS_INO_INVALID_DATA; -			inode->i_nlink = fattr->nlink; +			set_nlink(inode, fattr->nlink);  		}  	} else if (server->caps & NFS_CAP_NLINK)  		invalid |= save_cache_validity & (NFS_INO_INVALID_ATTR |