diff --git a/fs/f2fs/gc.c b/fs/f2fs/gc.c index 943a31db7cc3679c117716b220a58cce1b50a12d..075ea1eb8fa0bad28317c103ae2bbbbad7db0dfa 100644 --- a/fs/f2fs/gc.c +++ b/fs/f2fs/gc.c @@ -423,6 +423,12 @@ static void gc_node_segment(struct f2fs_sb_info *sbi, if (IS_ERR(node_page)) continue; + /* block may become invalid during get_node_page */ + if (check_valid_map(sbi, segno, off) == 0) { + f2fs_put_page(node_page, 1); + continue; + } + /* set page dirty and write it */ if (gc_type == FG_GC) { f2fs_wait_on_page_writeback(node_page, NODE);