io_uring: fix poll requests leaking second poll entries
[linux-2.6-microblaze.git] / fs / f2fs / gc.c
index 8d1f17a..0e42ee5 100644 (file)
@@ -1031,8 +1031,8 @@ static bool is_alive(struct f2fs_sb_info *sbi, struct f2fs_summary *sum,
 
                if (unlikely(check_valid_map(sbi, segno, offset))) {
                        if (!test_and_set_bit(segno, SIT_I(sbi)->invalid_segmap)) {
-                               f2fs_err(sbi, "mismatched blkaddr %u (source_blkaddr %u) in seg %u\n",
-                                               blkaddr, source_blkaddr, segno);
+                               f2fs_err(sbi, "mismatched blkaddr %u (source_blkaddr %u) in seg %u",
+                                        blkaddr, source_blkaddr, segno);
                                f2fs_bug_on(sbi, 1);
                        }
                }
@@ -1261,6 +1261,7 @@ static int move_data_block(struct inode *inode, block_t bidx,
        f2fs_put_page(mpage, 1);
        invalidate_mapping_pages(META_MAPPING(fio.sbi),
                                fio.old_blkaddr, fio.old_blkaddr);
+       f2fs_invalidate_compress_page(fio.sbi, fio.old_blkaddr);
 
        set_page_dirty(fio.encrypted_page);
        if (clear_page_dirty_for_io(fio.encrypted_page))
@@ -1336,7 +1337,7 @@ static int move_data_page(struct inode *inode, block_t bidx, int gc_type,
                        goto out;
                }
                set_page_dirty(page);
-               set_cold_data(page);
+               set_page_private_gcing(page);
        } else {
                struct f2fs_io_info fio = {
                        .sbi = F2FS_I_SB(inode),
@@ -1362,11 +1363,11 @@ retry:
                        f2fs_remove_dirty_inode(inode);
                }
 
-               set_cold_data(page);
+               set_page_private_gcing(page);
 
                err = f2fs_do_write_data_page(&fio);
                if (err) {
-                       clear_cold_data(page);
+                       clear_page_private_gcing(page);
                        if (err == -ENOMEM) {
                                congestion_wait(BLK_RW_ASYNC,
                                                DEFAULT_IO_TIMEOUT);
@@ -1450,10 +1451,8 @@ next_step:
 
                if (phase == 3) {
                        inode = f2fs_iget(sb, dni.ino);
-                       if (IS_ERR(inode) || is_bad_inode(inode)) {
-                               set_sbi_flag(sbi, SBI_NEED_FSCK);
+                       if (IS_ERR(inode) || is_bad_inode(inode))
                                continue;
-                       }
 
                        if (!down_write_trylock(
                                &F2FS_I(inode)->i_gc_rwsem[WRITE])) {
@@ -1822,6 +1821,7 @@ static void init_atgc_management(struct f2fs_sb_info *sbi)
        am->candidate_ratio = DEF_GC_THREAD_CANDIDATE_RATIO;
        am->max_candidate_count = DEF_GC_THREAD_MAX_CANDIDATE_COUNT;
        am->age_weight = DEF_GC_THREAD_AGE_WEIGHT;
+       am->age_threshold = DEF_GC_THREAD_AGE_THRESHOLD;
 }
 
 void f2fs_build_gc_manager(struct f2fs_sb_info *sbi)