|
@@ -963,9 +963,15 @@ EXPORT_SYMBOL_GPL(nfs_revalidate_inode);
|
|
static int nfs_invalidate_mapping(struct inode *inode, struct address_space *mapping)
|
|
static int nfs_invalidate_mapping(struct inode *inode, struct address_space *mapping)
|
|
{
|
|
{
|
|
struct nfs_inode *nfsi = NFS_I(inode);
|
|
struct nfs_inode *nfsi = NFS_I(inode);
|
|
-
|
|
|
|
|
|
+ int ret;
|
|
|
|
+
|
|
if (mapping->nrpages != 0) {
|
|
if (mapping->nrpages != 0) {
|
|
- int ret = invalidate_inode_pages2(mapping);
|
|
|
|
|
|
+ if (S_ISREG(inode->i_mode)) {
|
|
|
|
+ ret = nfs_sync_mapping(mapping);
|
|
|
|
+ if (ret < 0)
|
|
|
|
+ return ret;
|
|
|
|
+ }
|
|
|
|
+ ret = invalidate_inode_pages2(mapping);
|
|
if (ret < 0)
|
|
if (ret < 0)
|
|
return ret;
|
|
return ret;
|
|
}
|
|
}
|