diff --git a/fs/f2fs/gc.c b/fs/f2fs/gc.c index f4f7b8feebefc7268caec840e6c925f3f11c9ef5..6db285a8af335695285039c607bf6b196ec24bbb 100644 --- a/fs/f2fs/gc.c +++ b/fs/f2fs/gc.c @@ -957,6 +957,16 @@ static void gc_data_segment(struct f2fs_sb_info *sbi, struct f2fs_summary *sum, special_file(inode->i_mode)) continue; + if (f2fs_has_inline_data(inode)) { + iput(inode); + set_sbi_flag(sbi, SBI_NEED_FSCK); + f2fs_msg(sbi->sb, KERN_ERR, + "inode %lx has both inline_data flag and " + "data block, nid=%u, ofs_in_node=%u", + inode->i_ino, dni.nid, ofs_in_node); + continue; + } + if (!down_write_trylock( &F2FS_I(inode)->i_gc_rwsem[WRITE])) { iput(inode);