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)); in journal_read_bucket()
162 offset += blocks * ca->sb.block_size; in journal_read_bucket()
163 len -= blocks * ca->sb.block_size; in journal_read_bucket()
164 j = ((void *) j) + blocks * block_bytes(ca); in journal_read_bucket()
175 ret = journal_read_bucket(ca, list, b); \ in bch_journal_read()
182 struct cache *ca = c->cache; in bch_journal_read() local
184 struct journal_device *ja = &ca->journal; in bch_journal_read()
190 pr_debug("%u journal buckets\n", ca->sb.njournal_buckets); in bch_journal_read()
196 for (i = 0; i < ca->sb.njournal_buckets; i++) { in bch_journal_read()
202 l = (i * 2654435769U) % ca->sb.njournal_buckets; in bch_journal_read()
217 for_each_clear_bit(l, bitmap, ca->sb.njournal_buckets) in bch_journal_read()
222 if (l == ca->sb.njournal_buckets) in bch_journal_read()
229 r = find_next_bit(bitmap, ca->sb.njournal_buckets, l + 1); in bch_journal_read()
251 m, ca->sb.njournal_buckets); in bch_journal_read()
256 l = ca->sb.njournal_buckets - 1; in bch_journal_read()
270 for (i = 0; i < ca->sb.njournal_buckets; i++) in bch_journal_read()
280 ca->sb.njournal_buckets; in bch_journal_read()
342 struct cache *ca = s->cache; in is_discard_enabled() local
344 if (ca->discard) in is_discard_enabled()
576 struct cache *ca = container_of(ja, struct cache, journal); in journal_discard_endio() local
580 closure_wake_up(&ca->set->journal.wait); in journal_discard_endio()
581 closure_put(&ca->set->cl); in journal_discard_endio()
592 static void do_journal_discard(struct cache *ca) in do_journal_discard() argument
594 struct journal_device *ja = &ca->journal; in do_journal_discard()
597 if (!ca->discard) { in do_journal_discard()
608 ca->sb.njournal_buckets; in do_journal_discard()
621 bio->bi_iter.bi_sector = bucket_to_sector(ca->set, in do_journal_discard()
622 ca->sb.d[ja->discard_idx]); in do_journal_discard()
623 bio_set_dev(bio, ca->bdev); in do_journal_discard()
624 bio->bi_iter.bi_size = bucket_bytes(ca); in do_journal_discard()
627 closure_get(&ca->set->cl); in do_journal_discard()
636 struct cache *ca = c->cache; in free_journal_buckets() local
642 n = ca->sb.njournal_buckets + ja->discard_idx - ja->cur_idx; in free_journal_buckets()
655 struct cache *ca = c->cache; in journal_reclaim() local
657 struct journal_device *ja = &ca->journal; in journal_reclaim()
672 ca->sb.njournal_buckets; in journal_reclaim()
674 do_journal_discard(ca); in journal_reclaim()
682 ja->cur_idx = (ja->cur_idx + 1) % ca->sb.njournal_buckets; in journal_reclaim()
684 bucket_to_sector(c, ca->sb.d[ja->cur_idx]), in journal_reclaim()
685 ca->sb.nr_this_dev); in journal_reclaim()
690 c->journal.blocks_free = ca->sb.bucket_size >> c->block_bits; in journal_reclaim()
755 struct cache *ca = c->cache; in journal_write_unlocked() local
758 unsigned int i, sectors = set_blocks(w->data, block_bytes(ca)) * in journal_write_unlocked()
759 ca->sb.block_size; in journal_write_unlocked()
778 c->journal.blocks_free -= set_blocks(w->data, block_bytes(ca)); in journal_write_unlocked()
785 w->data->prio_bucket[ca->sb.nr_this_dev] = ca->prio_buckets[0]; in journal_write_unlocked()
786 w->data->magic = jset_magic(&ca->sb); in journal_write_unlocked()
792 ca = PTR_CACHE(c, k, i); in journal_write_unlocked()
793 bio = &ca->journal.bio; in journal_write_unlocked()
795 atomic_long_add(sectors, &ca->meta_sectors_written); in journal_write_unlocked()
799 bio_set_dev(bio, ca->bdev); in journal_write_unlocked()
813 ca->journal.seq[ca->journal.cur_idx] = w->data->seq; in journal_write_unlocked()
862 struct cache *ca = c->cache; in journal_wait_for_write() local
872 block_bytes(ca)) * ca->sb.block_size; in journal_wait_for_write()
875 c->journal.blocks_free * ca->sb.block_size, in journal_wait_for_write()