Lines Matching refs:ca
35 static int journal_read_bucket(struct cache *ca, struct list_head *list, in journal_read_bucket() argument
38 struct journal_device *ja = &ca->journal; in journal_read_bucket()
42 struct jset *j, *data = ca->set->journal.w[0].data; in journal_read_bucket()
46 sector_t bucket = bucket_to_sector(ca->set, ca->sb.d[bucket_index]); in journal_read_bucket()
52 while (offset < ca->sb.bucket_size) { in journal_read_bucket()
53 reread: left = ca->sb.bucket_size - offset; in journal_read_bucket()
58 bio_set_dev(bio, ca->bdev); in journal_read_bucket()
66 closure_bio_submit(ca->set, bio, &cl); in journal_read_bucket()
80 if (j->magic != jset_magic(&ca->sb)) { in journal_read_bucket()
101 blocks = set_blocks(j, block_bytes(ca->set)); in journal_read_bucket()
137 offset += blocks * ca->sb.block_size; in journal_read_bucket()
138 len -= blocks * ca->sb.block_size; in journal_read_bucket()
139 j = ((void *) j) + blocks * block_bytes(ca); in journal_read_bucket()
150 int ret = journal_read_bucket(ca, list, b); \ in bch_journal_read()
157 struct cache *ca; in bch_journal_read() local
160 for_each_cache(ca, c, iter) { in bch_journal_read()
161 struct journal_device *ja = &ca->journal; in bch_journal_read()
167 pr_debug("%u journal buckets", ca->sb.njournal_buckets); in bch_journal_read()
173 for (i = 0; i < ca->sb.njournal_buckets; i++) { in bch_journal_read()
179 l = (i * 2654435769U) % ca->sb.njournal_buckets; in bch_journal_read()
194 for (l = find_first_zero_bit(bitmap, ca->sb.njournal_buckets); in bch_journal_read()
195 l < ca->sb.njournal_buckets; in bch_journal_read()
196 l = find_next_zero_bit(bitmap, ca->sb.njournal_buckets, in bch_journal_read()
202 if (l == ca->sb.njournal_buckets) in bch_journal_read()
209 r = find_next_bit(bitmap, ca->sb.njournal_buckets, l + 1); in bch_journal_read()
231 m, ca->sb.njournal_buckets); in bch_journal_read()
236 l = ca->sb.njournal_buckets - 1; in bch_journal_read()
250 for (i = 0; i < ca->sb.njournal_buckets; i++) in bch_journal_read()
260 ca->sb.njournal_buckets; in bch_journal_read()
435 struct cache *ca = container_of(ja, struct cache, journal); in journal_discard_endio() local
439 closure_wake_up(&ca->set->journal.wait); in journal_discard_endio()
440 closure_put(&ca->set->cl); in journal_discard_endio()
451 static void do_journal_discard(struct cache *ca) in do_journal_discard() argument
453 struct journal_device *ja = &ca->journal; in do_journal_discard()
456 if (!ca->discard) { in do_journal_discard()
467 ca->sb.njournal_buckets; in do_journal_discard()
480 bio->bi_iter.bi_sector = bucket_to_sector(ca->set, in do_journal_discard()
481 ca->sb.d[ja->discard_idx]); in do_journal_discard()
482 bio_set_dev(bio, ca->bdev); in do_journal_discard()
483 bio->bi_iter.bi_size = bucket_bytes(ca); in do_journal_discard()
486 closure_get(&ca->set->cl); in do_journal_discard()
495 struct cache *ca; in journal_reclaim() local
509 for_each_cache(ca, c, iter) { in journal_reclaim()
510 struct journal_device *ja = &ca->journal; in journal_reclaim()
515 ca->sb.njournal_buckets; in journal_reclaim()
518 for_each_cache(ca, c, iter) in journal_reclaim()
519 do_journal_discard(ca); in journal_reclaim()
529 for_each_cache(ca, c, iter) { in journal_reclaim()
530 struct journal_device *ja = &ca->journal; in journal_reclaim()
531 unsigned int next = (ja->cur_idx + 1) % ca->sb.njournal_buckets; in journal_reclaim()
539 bucket_to_sector(c, ca->sb.d[ja->cur_idx]), in journal_reclaim()
540 ca->sb.nr_this_dev); in journal_reclaim()
611 struct cache *ca; in journal_write_unlocked() local
641 for_each_cache(ca, c, i) in journal_write_unlocked()
642 w->data->prio_bucket[ca->sb.nr_this_dev] = ca->prio_buckets[0]; in journal_write_unlocked()
650 ca = PTR_CACHE(c, k, i); in journal_write_unlocked()
651 bio = &ca->journal.bio; in journal_write_unlocked()
653 atomic_long_add(sectors, &ca->meta_sectors_written); in journal_write_unlocked()
657 bio_set_dev(bio, ca->bdev); in journal_write_unlocked()
671 ca->journal.seq[ca->journal.cur_idx] = w->data->seq; in journal_write_unlocked()