unsigned int gc_mode;                   /* current GC state */
        unsigned int next_victim_seg[2];        /* next segment in victim section */
        spinlock_t gc_urgent_high_lock;
-       bool gc_urgent_high_limited;            /* indicates having limited trial count */
        unsigned int gc_urgent_high_remaining;  /* remaining trial count for GC_URGENT_HIGH */
 
        /* for skip statistic */
 
                 */
                if (sbi->gc_mode == GC_URGENT_HIGH) {
                        spin_lock(&sbi->gc_urgent_high_lock);
-                       if (sbi->gc_urgent_high_limited &&
-                                       !sbi->gc_urgent_high_remaining--) {
-                               sbi->gc_urgent_high_limited = false;
-                               sbi->gc_mode = GC_NORMAL;
+                       if (sbi->gc_urgent_high_remaining) {
+                               sbi->gc_urgent_high_remaining--;
+                               if (!sbi->gc_urgent_high_remaining)
+                                       sbi->gc_mode = GC_NORMAL;
                        }
                        spin_unlock(&sbi->gc_urgent_high_lock);
                }
 
 
        if (!strcmp(a->attr.name, "gc_urgent_high_remaining")) {
                spin_lock(&sbi->gc_urgent_high_lock);
-               sbi->gc_urgent_high_limited = t != 0;
                sbi->gc_urgent_high_remaining = t;
                spin_unlock(&sbi->gc_urgent_high_lock);