block_t start_bidx;
                nid_t nid = le32_to_cpu(entry->nid);
 
-               /* stop BG_GC if there is not enough free sections. */
-               if (gc_type == BG_GC && has_not_enough_free_secs(sbi, 0, 0))
+               /*
+                * stop BG_GC if there is not enough free sections.
+                * Or, stop GC if the segment becomes fully valid caused by
+                * race condition along with SSR block allocation.
+                */
+               if ((gc_type == BG_GC && has_not_enough_free_secs(sbi, 0, 0)) ||
+                               get_valid_blocks(sbi, segno, false) ==
+                                                       sbi->blocks_per_seg)
                        return submitted;
 
                if (check_valid_map(sbi, segno, off) == 0)