diff options
author | David Howells <dhowells@redhat.com> | 2009-11-19 18:11:29 +0000 |
---|---|---|
committer | David Howells <dhowells@redhat.com> | 2009-11-19 18:11:29 +0000 |
commit | 285e728b0ac55b53a673114096168d6f74930167 (patch) | |
tree | 725dbd61cc9a3fecd593163d9b2cb0a061315cbf /fs/fscache/page.c | |
parent | 1bccf513ac49d44604ba1cddcc29f5886e70f1b6 (diff) | |
download | blackbird-op-linux-285e728b0ac55b53a673114096168d6f74930167.tar.gz blackbird-op-linux-285e728b0ac55b53a673114096168d6f74930167.zip |
FS-Cache: Don't delete pending pages from the page-store tracking tree
Don't delete pending pages from the page-store tracking tree, but rather send
them for another write as they've presumably been updated.
Signed-off-by: David Howells <dhowells@redhat.com>
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, /* 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); } |