diff options
-rw-r--r-- | fs/nfs/inode.c | 10 |
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); | |||
963 | static int nfs_invalidate_mapping(struct inode *inode, struct address_space *mapping) | 963 | static 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 | } |