diff options
author | Jaegeuk Kim <jaegeuk.kim@samsung.com> | 2013-03-13 20:24:32 -0400 |
---|---|---|
committer | Jaegeuk Kim <jaegeuk.kim@samsung.com> | 2013-03-20 05:30:13 -0400 |
commit | c3850aa1cb25872fddacd7abd8dfb021411e92ee (patch) | |
tree | bca15120146f17ce472eb64718579f4d7ce8eaa0 /fs/f2fs/node.c | |
parent | 48cb76c7be7056810cdcdcdcd8d90d3fdc4e250f (diff) |
f2fs: fix return value of releasepage for node and data
If the return value of releasepage is equal to zero, the page cannot be reclaimed.
Instead, we should return 1 in order to reclaim clean pages.
Reviewed-by: Namjae Jeon <namjae.jeon@samsung.com>
Signed-off-by: Jaegeuk Kim <jaegeuk.kim@samsung.com>
Diffstat (limited to 'fs/f2fs/node.c')
-rw-r--r-- | fs/f2fs/node.c | 11 |
1 files changed, 1 insertions, 10 deletions
diff --git a/fs/f2fs/node.c b/fs/f2fs/node.c index 94951d9aff4c..bf9172bbbb00 100644 --- a/fs/f2fs/node.c +++ b/fs/f2fs/node.c | |||
@@ -933,7 +933,6 @@ struct page *get_node_page_ra(struct page *parent, int start) | |||
933 | if (!nid) | 933 | if (!nid) |
934 | return ERR_PTR(-ENOENT); | 934 | return ERR_PTR(-ENOENT); |
935 | 935 | ||
936 | repeat: | ||
937 | page = grab_cache_page(mapping, nid); | 936 | page = grab_cache_page(mapping, nid); |
938 | if (!page) | 937 | if (!page) |
939 | return ERR_PTR(-ENOMEM); | 938 | return ERR_PTR(-ENOMEM); |
@@ -961,12 +960,6 @@ page_hit: | |||
961 | f2fs_put_page(page, 1); | 960 | f2fs_put_page(page, 1); |
962 | return ERR_PTR(-EIO); | 961 | return ERR_PTR(-EIO); |
963 | } | 962 | } |
964 | |||
965 | /* Has the page been truncated? */ | ||
966 | if (page->mapping != mapping) { | ||
967 | f2fs_put_page(page, 1); | ||
968 | goto repeat; | ||
969 | } | ||
970 | mark_page_accessed(page); | 963 | mark_page_accessed(page); |
971 | return page; | 964 | return page; |
972 | } | 965 | } |
@@ -1189,7 +1182,7 @@ static void f2fs_invalidate_node_page(struct page *page, unsigned long offset) | |||
1189 | static int f2fs_release_node_page(struct page *page, gfp_t wait) | 1182 | static int f2fs_release_node_page(struct page *page, gfp_t wait) |
1190 | { | 1183 | { |
1191 | ClearPagePrivate(page); | 1184 | ClearPagePrivate(page); |
1192 | return 0; | 1185 | return 1; |
1193 | } | 1186 | } |
1194 | 1187 | ||
1195 | /* | 1188 | /* |
@@ -1630,8 +1623,6 @@ flush_now: | |||
1630 | write_lock(&nm_i->nat_tree_lock); | 1623 | write_lock(&nm_i->nat_tree_lock); |
1631 | __del_from_nat_cache(nm_i, ne); | 1624 | __del_from_nat_cache(nm_i, ne); |
1632 | write_unlock(&nm_i->nat_tree_lock); | 1625 | write_unlock(&nm_i->nat_tree_lock); |
1633 | |||
1634 | /* We can reuse this freed nid at this point */ | ||
1635 | add_free_nid(NM_I(sbi), nid); | 1626 | add_free_nid(NM_I(sbi), nid); |
1636 | } else { | 1627 | } else { |
1637 | write_lock(&nm_i->nat_tree_lock); | 1628 | write_lock(&nm_i->nat_tree_lock); |