|
@@ -754,7 +754,7 @@ int nfs_revalidate_inode(struct nfs_server *server, struct inode *inode)
|
|
|
return __nfs_revalidate_inode(server, inode);
|
|
|
}
|
|
|
|
|
|
-static int nfs_invalidate_mapping_nolock(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);
|
|
|
|
|
@@ -775,49 +775,10 @@ static int nfs_invalidate_mapping_nolock(struct inode *inode, struct address_spa
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
-static int nfs_invalidate_mapping(struct inode *inode, struct address_space *mapping)
|
|
|
-{
|
|
|
- int ret = 0;
|
|
|
-
|
|
|
- mutex_lock(&inode->i_mutex);
|
|
|
- if (NFS_I(inode)->cache_validity & NFS_INO_INVALID_DATA) {
|
|
|
- ret = nfs_sync_mapping(mapping);
|
|
|
- if (ret == 0)
|
|
|
- ret = nfs_invalidate_mapping_nolock(inode, mapping);
|
|
|
- }
|
|
|
- mutex_unlock(&inode->i_mutex);
|
|
|
- return ret;
|
|
|
-}
|
|
|
-
|
|
|
-/**
|
|
|
- * nfs_revalidate_mapping_nolock - Revalidate the pagecache
|
|
|
- * @inode - pointer to host inode
|
|
|
- * @mapping - pointer to mapping
|
|
|
- */
|
|
|
-int nfs_revalidate_mapping_nolock(struct inode *inode, struct address_space *mapping)
|
|
|
-{
|
|
|
- struct nfs_inode *nfsi = NFS_I(inode);
|
|
|
- int ret = 0;
|
|
|
-
|
|
|
- if ((nfsi->cache_validity & NFS_INO_REVAL_PAGECACHE)
|
|
|
- || nfs_attribute_timeout(inode) || NFS_STALE(inode)) {
|
|
|
- ret = __nfs_revalidate_inode(NFS_SERVER(inode), inode);
|
|
|
- if (ret < 0)
|
|
|
- goto out;
|
|
|
- }
|
|
|
- if (nfsi->cache_validity & NFS_INO_INVALID_DATA)
|
|
|
- ret = nfs_invalidate_mapping_nolock(inode, mapping);
|
|
|
-out:
|
|
|
- return ret;
|
|
|
-}
|
|
|
-
|
|
|
/**
|
|
|
* nfs_revalidate_mapping - Revalidate the pagecache
|
|
|
* @inode - pointer to host inode
|
|
|
* @mapping - pointer to mapping
|
|
|
- *
|
|
|
- * This version of the function will take the inode->i_mutex and attempt to
|
|
|
- * flush out all dirty data if it needs to invalidate the page cache.
|
|
|
*/
|
|
|
int nfs_revalidate_mapping(struct inode *inode, struct address_space *mapping)
|
|
|
{
|