static struct page *isolate_source_page(struct size_class *class)
 {
-       struct page *page;
+       int i;
+       struct page *page = NULL;
+
+       for (i = ZS_ALMOST_EMPTY; i >= ZS_ALMOST_FULL; i--) {
+               page = class->fullness_list[i];
+               if (!page)
+                       continue;
 
-       page = class->fullness_list[ZS_ALMOST_EMPTY];
-       if (page)
-               remove_zspage(page, class, ZS_ALMOST_EMPTY);
+               remove_zspage(page, class, i);
+               break;
+       }
 
        return page;
 }
 {
        unsigned long obj_wasted;
 
-       if (!zs_stat_get(class, CLASS_ALMOST_EMPTY))
-               return 0;
-
        obj_wasted = zs_stat_get(class, OBJ_ALLOCATED) -
                zs_stat_get(class, OBJ_USED);