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()
56 bio_reset(bio, ca->bdev, REQ_OP_READ); in journal_read_bucket()
64 closure_bio_submit(ca->set, bio, &cl); in journal_read_bucket()
78 if (j->magic != jset_magic(&ca->sb)) { in journal_read_bucket()
99 blocks = set_blocks(j, block_bytes(ca)); in journal_read_bucket()
161 offset += blocks * ca->sb.block_size; in journal_read_bucket()
162 len -= blocks * ca->sb.block_size; in journal_read_bucket()
163 j = ((void *) j) + blocks * block_bytes(ca); in journal_read_bucket()
174 ret = journal_read_bucket(ca, list, b); \ in bch_journal_read()
181 struct cache *ca = c->cache; in bch_journal_read() local
183 struct journal_device *ja = &ca->journal; in bch_journal_read()
189 pr_debug("%u journal buckets\n", ca->sb.njournal_buckets); in bch_journal_read()
195 for (i = 0; i < ca->sb.njournal_buckets; i++) { in bch_journal_read()
201 l = (i * 2654435769U) % ca->sb.njournal_buckets; in bch_journal_read()
216 for_each_clear_bit(l, bitmap, ca->sb.njournal_buckets) in bch_journal_read()
221 if (l == ca->sb.njournal_buckets) in bch_journal_read()
228 r = find_next_bit(bitmap, ca->sb.njournal_buckets, l + 1); in bch_journal_read()
250 m, ca->sb.njournal_buckets); in bch_journal_read()
255 l = ca->sb.njournal_buckets - 1; in bch_journal_read()
269 for (i = 0; i < ca->sb.njournal_buckets; i++) in bch_journal_read()
279 ca->sb.njournal_buckets; in bch_journal_read()
341 struct cache *ca = s->cache; in is_discard_enabled() local
343 if (ca->discard) in is_discard_enabled()
575 struct cache *ca = container_of(ja, struct cache, journal); in journal_discard_endio() local
579 closure_wake_up(&ca->set->journal.wait); in journal_discard_endio()
580 closure_put(&ca->set->cl); in journal_discard_endio()
591 static void do_journal_discard(struct cache *ca) in do_journal_discard() argument
593 struct journal_device *ja = &ca->journal; in do_journal_discard()
596 if (!ca->discard) { in do_journal_discard()
607 ca->sb.njournal_buckets; in do_journal_discard()
618 bio_init(bio, ca->bdev, bio->bi_inline_vecs, 1, REQ_OP_DISCARD); in do_journal_discard()
619 bio->bi_iter.bi_sector = bucket_to_sector(ca->set, in do_journal_discard()
620 ca->sb.d[ja->discard_idx]); in do_journal_discard()
621 bio->bi_iter.bi_size = bucket_bytes(ca); in do_journal_discard()
624 closure_get(&ca->set->cl); in do_journal_discard()
633 struct cache *ca = c->cache; in free_journal_buckets() local
639 n = ca->sb.njournal_buckets + ja->discard_idx - ja->cur_idx; in free_journal_buckets()
652 struct cache *ca = c->cache; in journal_reclaim() local
654 struct journal_device *ja = &ca->journal; in journal_reclaim()
669 ca->sb.njournal_buckets; in journal_reclaim()
671 do_journal_discard(ca); in journal_reclaim()
679 ja->cur_idx = (ja->cur_idx + 1) % ca->sb.njournal_buckets; in journal_reclaim()
681 bucket_to_sector(c, ca->sb.d[ja->cur_idx]), in journal_reclaim()
682 ca->sb.nr_this_dev); in journal_reclaim()
687 c->journal.blocks_free = ca->sb.bucket_size >> c->block_bits; in journal_reclaim()
752 struct cache *ca = c->cache; variable
755 unsigned int i, sectors = set_blocks(w->data, block_bytes(ca)) *
756 ca->sb.block_size;
775 c->journal.blocks_free -= set_blocks(w->data, block_bytes(ca));
782 w->data->prio_bucket[ca->sb.nr_this_dev] = ca->prio_buckets[0];
783 w->data->magic = jset_magic(&ca->sb);
789 ca = c->cache;
790 bio = &ca->journal.bio;
792 atomic_long_add(sectors, &ca->meta_sectors_written);
794 bio_reset(bio, ca->bdev, REQ_OP_WRITE |
808 ca->journal.seq[ca->journal.cur_idx] = w->data->seq;
857 struct cache *ca = c->cache; in journal_wait_for_write() local
867 block_bytes(ca)) * ca->sb.block_size; in journal_wait_for_write()
870 c->journal.blocks_free * ca->sb.block_size, in journal_wait_for_write()