From f26220ce2eb52e50e482887062c3ab587a0b8390 Mon Sep 17 00:00:00 2001 From: David Howells Date: Thu, 19 Nov 2009 18:11:29 +0000 Subject: [PATCH] --- yaml --- r: 168829 b: refs/heads/master c: 285e728b0ac55b53a673114096168d6f74930167 h: refs/heads/master i: 168827: a91fcc4d975b93680ce0c4b01ba9a727eb222552 v: v3 --- [refs] | 2 +- trunk/fs/fscache/page.c | 7 +++++-- trunk/lib/radix-tree.c | 2 -- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/[refs] b/[refs] index af5398758848..b366ad9324a0 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 1bccf513ac49d44604ba1cddcc29f5886e70f1b6 +refs/heads/master: 285e728b0ac55b53a673114096168d6f74930167 diff --git a/trunk/fs/fscache/page.c b/trunk/fs/fscache/page.c index 3ea8897bc217..022a5da8e130 100644 --- a/trunk/fs/fscache/page.c +++ b/trunk/fs/fscache/page.c @@ -57,8 +57,11 @@ static void fscache_end_page_write(struct fscache_object *object, /* delete the page from the tree if it is now no longer * pending */ spin_lock(&cookie->stores_lock); - fscache_stat(&fscache_n_store_radix_deletes); - xpage = radix_tree_delete(&cookie->stores, page->index); + if (!radix_tree_tag_get(&cookie->stores, page->index, + FSCACHE_COOKIE_PENDING_TAG)) { + fscache_stat(&fscache_n_store_radix_deletes); + xpage = radix_tree_delete(&cookie->stores, page->index); + } spin_unlock(&cookie->stores_lock); wake_up_bit(&cookie->flags, 0); } diff --git a/trunk/lib/radix-tree.c b/trunk/lib/radix-tree.c index ae6106855561..92cdd9936e3d 100644 --- a/trunk/lib/radix-tree.c +++ b/trunk/lib/radix-tree.c @@ -546,7 +546,6 @@ void *radix_tree_tag_clear(struct radix_tree_root *root, } EXPORT_SYMBOL(radix_tree_tag_clear); -#ifndef __KERNEL__ /* Only the test harness uses this at present */ /** * radix_tree_tag_get - get a tag on a radix tree node * @root: radix tree root @@ -609,7 +608,6 @@ int radix_tree_tag_get(struct radix_tree_root *root, } } EXPORT_SYMBOL(radix_tree_tag_get); -#endif /** * radix_tree_next_hole - find the next hole (not-present entry)