summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSage Weil <sage@newdream.net>2010-09-17 19:46:44 +0200
committerSage Weil <sage@newdream.net>2010-10-21 00:38:15 +0200
commit18a38193efcaac1fb3c94ad8fa04bb117850a3c2 (patch)
tree096877dc2a039a991262d9f05fa0a2c2f684cfa8
parentceph: only invalidate on check_caps if we actually have pages (diff)
downloadlinux-18a38193efcaac1fb3c94ad8fa04bb117850a3c2.tar.xz
linux-18a38193efcaac1fb3c94ad8fa04bb117850a3c2.zip
ceph: use mapping->nrpages to determine if mapping is empty
This is simpler and faster. Signed-off-by: Sage Weil <sage@newdream.net>
-rw-r--r--fs/ceph/caps.c13
1 files changed, 1 insertions, 12 deletions
diff --git a/fs/ceph/caps.c b/fs/ceph/caps.c
index 3c03460f48bd..98ab13e2b71d 100644
--- a/fs/ceph/caps.c
+++ b/fs/ceph/caps.c
@@ -1417,17 +1417,6 @@ static int __mark_caps_flushing(struct inode *inode,
/*
* try to invalidate mapping pages without blocking.
*/
-static int mapping_is_empty(struct address_space *mapping)
-{
- struct page *page = find_get_page(mapping, 0);
-
- if (!page)
- return 1;
-
- put_page(page);
- return 0;
-}
-
static int try_nonblocking_invalidate(struct inode *inode)
{
struct ceph_inode_info *ci = ceph_inode(inode);
@@ -1437,7 +1426,7 @@ static int try_nonblocking_invalidate(struct inode *inode)
invalidate_mapping_pages(&inode->i_data, 0, -1);
spin_lock(&inode->i_lock);
- if (mapping_is_empty(&inode->i_data) &&
+ if (inode->i_data.nrpages == 0 &&
invalidating_gen == ci->i_rdcache_gen) {
/* success. */
dout("try_nonblocking_invalidate %p success\n", inode);