Lines Matching refs:ca

33 static int journal_read_bucket(struct cache *ca, struct list_head *list,  in journal_read_bucket()  argument
36 struct journal_device *ja = &ca->journal; in journal_read_bucket()
40 struct jset *j, *data = ca->set->journal.w[0].data; in journal_read_bucket()
44 sector_t bucket = bucket_to_sector(ca->set, ca->sb.d[bucket_index]); in journal_read_bucket()
50 while (offset < ca->sb.bucket_size) { in journal_read_bucket()
51 reread: left = ca->sb.bucket_size - offset; in journal_read_bucket()
56 bio->bi_bdev = ca->bdev; in journal_read_bucket()
78 if (j->magic != jset_magic(&ca->sb)) { in journal_read_bucket()
99 blocks = set_blocks(j, block_bytes(ca->set)); in journal_read_bucket()
135 offset += blocks * ca->sb.block_size; in journal_read_bucket()
136 len -= blocks * ca->sb.block_size; in journal_read_bucket()
137 j = ((void *) j) + blocks * block_bytes(ca); in journal_read_bucket()
148 int ret = journal_read_bucket(ca, list, b); \ in bch_journal_read()
155 struct cache *ca; in bch_journal_read() local
158 for_each_cache(ca, c, iter) { in bch_journal_read()
159 struct journal_device *ja = &ca->journal; in bch_journal_read()
165 pr_debug("%u journal buckets", ca->sb.njournal_buckets); in bch_journal_read()
171 for (i = 0; i < ca->sb.njournal_buckets; i++) { in bch_journal_read()
172 l = (i * 2654435769U) % ca->sb.njournal_buckets; in bch_journal_read()
187 for (l = find_first_zero_bit(bitmap, ca->sb.njournal_buckets); in bch_journal_read()
188 l < ca->sb.njournal_buckets; in bch_journal_read()
189 l = find_next_zero_bit(bitmap, ca->sb.njournal_buckets, l + 1)) in bch_journal_read()
194 if (l == ca->sb.njournal_buckets) in bch_journal_read()
201 r = find_next_bit(bitmap, ca->sb.njournal_buckets, l + 1); in bch_journal_read()
223 m, ca->sb.njournal_buckets); in bch_journal_read()
228 l = ca->sb.njournal_buckets - 1; in bch_journal_read()
242 for (i = 0; i < ca->sb.njournal_buckets; i++) in bch_journal_read()
252 ca->sb.njournal_buckets; in bch_journal_read()
408 struct cache *ca = container_of(ja, struct cache, journal); in journal_discard_endio() local
412 closure_wake_up(&ca->set->journal.wait); in journal_discard_endio()
413 closure_put(&ca->set->cl); in journal_discard_endio()
424 static void do_journal_discard(struct cache *ca) in do_journal_discard() argument
426 struct journal_device *ja = &ca->journal; in do_journal_discard()
429 if (!ca->discard) { in do_journal_discard()
440 ca->sb.njournal_buckets; in do_journal_discard()
452 bio->bi_iter.bi_sector = bucket_to_sector(ca->set, in do_journal_discard()
453 ca->sb.d[ja->discard_idx]); in do_journal_discard()
454 bio->bi_bdev = ca->bdev; in do_journal_discard()
458 bio->bi_iter.bi_size = bucket_bytes(ca); in do_journal_discard()
461 closure_get(&ca->set->cl); in do_journal_discard()
470 struct cache *ca; in journal_reclaim() local
482 for_each_cache(ca, c, iter) { in journal_reclaim()
483 struct journal_device *ja = &ca->journal; in journal_reclaim()
488 ca->sb.njournal_buckets; in journal_reclaim()
491 for_each_cache(ca, c, iter) in journal_reclaim()
492 do_journal_discard(ca); in journal_reclaim()
502 for_each_cache(ca, c, iter) { in journal_reclaim()
503 struct journal_device *ja = &ca->journal; in journal_reclaim()
504 unsigned next = (ja->cur_idx + 1) % ca->sb.njournal_buckets; in journal_reclaim()
512 bucket_to_sector(c, ca->sb.d[ja->cur_idx]), in journal_reclaim()
513 ca->sb.nr_this_dev); in journal_reclaim()
583 struct cache *ca; in journal_write_unlocked() local
612 for_each_cache(ca, c, i) in journal_write_unlocked()
613 w->data->prio_bucket[ca->sb.nr_this_dev] = ca->prio_buckets[0]; in journal_write_unlocked()
621 ca = PTR_CACHE(c, k, i); in journal_write_unlocked()
622 bio = &ca->journal.bio; in journal_write_unlocked()
624 atomic_long_add(sectors, &ca->meta_sectors_written); in journal_write_unlocked()
628 bio->bi_bdev = ca->bdev; in journal_write_unlocked()
641 ca->journal.seq[ca->journal.cur_idx] = w->data->seq; in journal_write_unlocked()