Lines Matching full:buckets
35 * BUCKETS/ALLOCATION:
42 * To do this, we first divide the cache device up into buckets. A bucket is the
47 * it. The gens and priorities for all the buckets are stored contiguously and
48 * packed on disk (in a linked list of buckets - aside from the superblock, all
49 * of bcache's metadata is stored in buckets).
56 * The generation is used for invalidating buckets. Each pointer also has an 8
62 * Bcache is entirely COW - we never write twice to a bucket, even buckets that
113 * (If buckets are really big we'll only use part of the bucket for a btree node
143 * Thus, the primary purpose of garbage collection is to find buckets to reuse.
145 * allocation can reuse buckets sooner when they've been mostly overwritten.
434 * When allocating new buckets, prio_write() gets first dibs - since we
436 * prio_last_buckets[] contains the last buckets we wrote priorities to
438 * buckets allocated for the next prio write.
444 * free: Buckets that are ready to be used
446 * free_inc: Incoming buckets - these are buckets that currently have
458 struct bucket *buckets; member
463 * If nonzero, we know we aren't going to find any buckets to invalidate
620 * When we invalidate buckets, we use both the priority and the amount
621 * of good data to determine which buckets to reuse first - to weight
628 * max(gen - last_gc) for all buckets. When it gets too big we have to
697 /* List of buckets we're currently writing data to */
823 return c->cache->buckets + PTR_BUCKET_NR(c, k, ptr); in PTR_BUCKET()
891 for (b = (ca)->buckets + (ca)->sb.first_bucket; \
892 b < (ca)->buckets + (ca)->sb.nbuckets; b++)