aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--fs/nfs/inode.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/fs/nfs/inode.c b/fs/nfs/inode.c
index af6e806044d7..3ea4f641effc 100644
--- a/fs/nfs/inode.c
+++ b/fs/nfs/inode.c
@@ -963,9 +963,15 @@ EXPORT_SYMBOL_GPL(nfs_revalidate_inode);
963static int nfs_invalidate_mapping(struct inode *inode, struct address_space *mapping) 963static int nfs_invalidate_mapping(struct inode *inode, struct address_space *mapping)
964{ 964{
965 struct nfs_inode *nfsi = NFS_I(inode); 965 struct nfs_inode *nfsi = NFS_I(inode);
966 966 int ret;
967
967 if (mapping->nrpages != 0) { 968 if (mapping->nrpages != 0) {
968 int ret = invalidate_inode_pages2(mapping); 969 if (S_ISREG(inode->i_mode)) {
970 ret = nfs_sync_mapping(mapping);
971 if (ret < 0)
972 return ret;
973 }
974 ret = invalidate_inode_pages2(mapping);
969 if (ret < 0) 975 if (ret < 0)
970 return ret; 976 return ret;
971 } 977 }