From: Jaegeuk Kim Date: Wed, 13 Mar 2013 08:49:22 +0000 (+0900) Subject: f2fs: should check the node page was truncated first X-Git-Url: http://git.cdn.openwrt.org/?a=commitdiff_plain;h=08d8058be6d11bd81f2ed75fc0ecdf55b7685655;p=openwrt%2Fstaging%2Fblogic.git f2fs: should check the node page was truncated first Currently, f2fs doesn't reclaim any node pages. However, if we found that a node page was truncated by checking its block address with zero during f2fs_write_node_page, we should not skip that node page and return zero to reclaim it. Reviewed-by: Namjae Jeon Signed-off-by: Jaegeuk Kim --- diff --git a/fs/f2fs/node.c b/fs/f2fs/node.c index 9e6ed6708fa8..90221cc7247c 100644 --- a/fs/f2fs/node.c +++ b/fs/f2fs/node.c @@ -1097,13 +1097,6 @@ static int f2fs_write_node_page(struct page *page, block_t new_addr; struct node_info ni; - if (wbc->for_reclaim) { - dec_page_count(sbi, F2FS_DIRTY_NODES); - wbc->pages_skipped++; - set_page_dirty(page); - return AOP_WRITEPAGE_ACTIVATE; - } - wait_on_page_writeback(page); mutex_lock_op(sbi, NODE_WRITE); @@ -1118,6 +1111,14 @@ static int f2fs_write_node_page(struct page *page, if (ni.blk_addr == NULL_ADDR) goto out; + if (wbc->for_reclaim) { + dec_page_count(sbi, F2FS_DIRTY_NODES); + wbc->pages_skipped++; + set_page_dirty(page); + mutex_unlock_op(sbi, NODE_WRITE); + return AOP_WRITEPAGE_ACTIVATE; + } + set_page_writeback(page); /* insert node offset */