diff options
Diffstat (limited to 'fs/fscache/page.c')
-rw-r--r-- | fs/fscache/page.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/fs/fscache/page.c b/fs/fscache/page.c index 3ea8897bc217..022a5da8e130 100644 --- a/fs/fscache/page.c +++ b/fs/fscache/page.c | |||
@@ -57,8 +57,11 @@ static void fscache_end_page_write(struct fscache_object *object, | |||
57 | /* delete the page from the tree if it is now no longer | 57 | /* delete the page from the tree if it is now no longer |
58 | * pending */ | 58 | * pending */ |
59 | spin_lock(&cookie->stores_lock); | 59 | spin_lock(&cookie->stores_lock); |
60 | fscache_stat(&fscache_n_store_radix_deletes); | 60 | if (!radix_tree_tag_get(&cookie->stores, page->index, |
61 | xpage = radix_tree_delete(&cookie->stores, page->index); | 61 | FSCACHE_COOKIE_PENDING_TAG)) { |
62 | fscache_stat(&fscache_n_store_radix_deletes); | ||
63 | xpage = radix_tree_delete(&cookie->stores, page->index); | ||
64 | } | ||
62 | spin_unlock(&cookie->stores_lock); | 65 | spin_unlock(&cookie->stores_lock); |
63 | wake_up_bit(&cookie->flags, 0); | 66 | wake_up_bit(&cookie->flags, 0); |
64 | } | 67 | } |