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 <namjae.jeon@samsung.com> Signed-off-by: Jaegeuk Kim <jaegeuk.kim@samsung.com>
This commit is contained in:
@ -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 */
|
||||
|
Reference in New Issue
Block a user