f2fs_bug_on(sbi, !sbi->total_valid_block_count);
        f2fs_bug_on(sbi, !sbi->total_valid_node_count);
-       f2fs_bug_on(sbi, !is_inode && !inode->i_blocks);
 
        sbi->total_valid_node_count--;
        sbi->total_valid_block_count--;
 
        spin_unlock(&sbi->stat_lock);
 
-       if (is_inode)
+       if (is_inode) {
                dquot_free_inode(inode);
-       else
+       } else {
+               if (unlikely(inode->i_blocks == 0)) {
+                       f2fs_msg(sbi->sb, KERN_WARNING,
+                               "Inconsistent i_blocks, ino:%lu, iblocks:%llu",
+                               inode->i_ino,
+                               (unsigned long long)inode->i_blocks);
+                       set_sbi_flag(sbi, SBI_NEED_FSCK);
+                       return;
+               }
                f2fs_i_blocks_write(inode, 1, false, true);
+       }
 }
 
 static inline unsigned int valid_node_count(struct f2fs_sb_info *sbi)