unsigned int segno, offset;
        bool exist;
 
-       if (type != DATA_GENERIC_ENHANCE && type != DATA_GENERIC_ENHANCE_READ)
+       if (type == DATA_GENERIC)
                return true;
 
        segno = GET_SEGNO(sbi, blkaddr);
        se = get_seg_entry(sbi, segno);
 
        exist = f2fs_test_bit(offset, se->cur_valid_map);
+       if (exist && type == DATA_GENERIC_ENHANCE_UPDATE) {
+               f2fs_err(sbi, "Inconsistent error blkaddr:%u, sit bitmap:%d",
+                        blkaddr, exist);
+               set_sbi_flag(sbi, SBI_NEED_FSCK);
+               return exist;
+       }
+
        if (!exist && type == DATA_GENERIC_ENHANCE) {
                f2fs_err(sbi, "Inconsistent error blkaddr:%u, sit bitmap:%d",
                         blkaddr, exist);
        case DATA_GENERIC:
        case DATA_GENERIC_ENHANCE:
        case DATA_GENERIC_ENHANCE_READ:
+       case DATA_GENERIC_ENHANCE_UPDATE:
                if (unlikely(blkaddr >= MAX_BLKADDR(sbi) ||
                                blkaddr < MAIN_BLKADDR(sbi))) {
                        f2fs_warn(sbi, "access invalid blkaddr:%u",
 
                                         * condition of read on truncated area
                                         * by extent_cache
                                         */
+       DATA_GENERIC_ENHANCE_UPDATE,    /*
+                                        * strong check on range and segment
+                                        * bitmap for update case
+                                        */
        META_GENERIC,
 };
 
 
                                goto err;
                        }
 
+                       if (f2fs_is_valid_blkaddr(sbi, dest,
+                                       DATA_GENERIC_ENHANCE_UPDATE)) {
+                               f2fs_err(sbi, "Inconsistent dest blkaddr:%u, ino:%lu, ofs:%u",
+                                       dest, inode->i_ino, dn.ofs_in_node);
+                               err = -EFSCORRUPTED;
+                               goto err;
+                       }
+
                        /* write dummy data page */
                        f2fs_replace_block(sbi, &dn, src, dest,
                                                ni.version, false, false);