+void
+lru_evict_half(struct lru_zone* zone)
+{
+ int target = (int)(zone->objects / 2);
+ struct llist_header* tail = zone->lead_node.prev;
+ while (tail != &zone->lead_node && target > 0) {
+ __do_evict(zone, tail);
+ tail = tail->prev;
+ target--;
+ }