Lines Matching refs:ca
193 static unsigned bucket_heap_top(struct cache *ca) in bucket_heap_top() argument
196 return (b = heap_peek(&ca->heap)) ? GC_SECTORS_USED(b) : 0; in bucket_heap_top()
201 struct cache *ca; in bch_moving_gc() local
210 for_each_cache(ca, c, i) { in bch_moving_gc()
212 unsigned reserve_sectors = ca->sb.bucket_size * in bch_moving_gc()
213 fifo_used(&ca->free[RESERVE_MOVINGGC]); in bch_moving_gc()
215 ca->heap.used = 0; in bch_moving_gc()
217 for_each_bucket(b, ca) { in bch_moving_gc()
220 GC_SECTORS_USED(b) == ca->sb.bucket_size || in bch_moving_gc()
224 if (!heap_full(&ca->heap)) { in bch_moving_gc()
226 heap_add(&ca->heap, b, bucket_cmp); in bch_moving_gc()
227 } else if (bucket_cmp(b, heap_peek(&ca->heap))) { in bch_moving_gc()
228 sectors_to_move -= bucket_heap_top(ca); in bch_moving_gc()
231 ca->heap.data[0] = b; in bch_moving_gc()
232 heap_sift(&ca->heap, 0, bucket_cmp); in bch_moving_gc()
237 heap_pop(&ca->heap, b, bucket_cmp); in bch_moving_gc()
241 while (heap_pop(&ca->heap, b, bucket_cmp)) in bch_moving_gc()