From 153edc0e4bb1b081def2aa62d824c591adc990cf Mon Sep 17 00:00:00 2001 From: Trond Myklebust Date: Sun, 29 Apr 2012 11:23:50 -0400 Subject: [PATCH] --- yaml --- r: 308575 b: refs/heads/master c: b4b1eadf7c5f00636500ad47f68edc0666e63ea5 h: refs/heads/master i: 308573: a7f0478f8ee0f4adee9990ebd815c780b9af383e 308571: bdedca57ab1965f3bcd9b4d8f286be2b205497ea 308567: a879ae8bef6f673a2c15244f4be17065424c8dc3 308559: 32fa1d133f21d9a8e64e4335328c3789c9c532ec 308543: 60e5e84a2f740bf91ba56e5dcbbbea8923ae266d v: v3 --- [refs] | 2 +- trunk/fs/nfs/inode.c | 13 ++++++++++--- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index 367d51f512bf..3e7036311cad 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: e144cbcc251f16c1a14b9256cda73ab4aebe933a +refs/heads/master: b4b1eadf7c5f00636500ad47f68edc0666e63ea5 diff --git a/trunk/fs/nfs/inode.c b/trunk/fs/nfs/inode.c index 59a12c6a8df6..fed27c0d1a4d 100644 --- a/trunk/fs/nfs/inode.c +++ b/trunk/fs/nfs/inode.c @@ -870,6 +870,15 @@ static int nfs_invalidate_mapping(struct inode *inode, struct address_space *map return 0; } +static bool nfs_mapping_need_revalidate_inode(struct inode *inode) +{ + if (nfs_have_delegated_attributes(inode)) + return false; + return (NFS_I(inode)->cache_validity & NFS_INO_REVAL_PAGECACHE) + || nfs_attribute_timeout(inode) + || NFS_STALE(inode); +} + /** * nfs_revalidate_mapping - Revalidate the pagecache * @inode - pointer to host inode @@ -880,9 +889,7 @@ int nfs_revalidate_mapping(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_cache_expired(inode) - || NFS_STALE(inode)) { + if (nfs_mapping_need_revalidate_inode(inode)) { ret = __nfs_revalidate_inode(NFS_SERVER(inode), inode); if (ret < 0) goto out;