Lines Matching refs:ca

24 	for_each_member_device(c, ca) {
25 struct bch_member *m = bch2_members_v2_get_mut(c->disk_sb.sb, ca->dev_idx);
27 m->last_journal_bucket = cpu_to_le32(ca->journal.cur_idx);
28 m->last_journal_bucket_offset = cpu_to_le32(ca->mi.bucket_size - ca->journal.sectors_free);
35 for_each_member_device(c, ca) {
36 struct bch_member m = bch2_sb_member_get(c->disk_sb.sb, ca->dev_idx);
39 if (idx < ca->journal.nr)
40 ca->journal.cur_idx = idx;
42 if (offset <= ca->mi.bucket_size)
43 ca->journal.sectors_free = ca->mi.bucket_size - offset;
137 static int journal_entry_add(struct bch_fs *c, struct bch_dev *ca,
203 if (ptr->dev == ca->dev_idx)
880 struct bch_dev *ca,
895 ca ? ca->name : c->name,
907 ca ? ca->name : c->name,
930 struct bch_dev *ca,
948 ca ? ca->name : c->name,
964 ca ? ca->name : c->name,
997 static int journal_read_bucket(struct bch_dev *ca,
1002 struct bch_fs *c = ca->fs;
1003 struct journal_device *ja = &ca->journal;
1006 u64 offset = bucket_to_sector(ca, ja->buckets[bucket]),
1007 end = offset + ca->mi.bucket_size;
1024 bio_init(bio, ca->disk_sb.bdev, bio->bi_inline_vecs, nr_bvecs, REQ_OP_READ);
1032 if (bch2_dev_io_err_on(ret, ca, BCH_MEMBER_ERROR_read,
1048 ret = jset_validate_early(c, ca, j, offset,
1079 ja->sectors_free = ca->mi.bucket_size -
1080 bucket_remainder(ca, offset) - sectors;
1098 if (bch2_dev_io_err_on(!csum_good, ca, BCH_MEMBER_ERROR_checksum,
1112 ret = journal_entry_add(c, ca, (struct journal_ptr) {
1114 .dev = ca->dev_idx,
1117 bucket_to_sector(ca, ja->buckets[bucket]),
1147 struct bch_dev *ca = container_of(ja, struct bch_dev, journal);
1148 struct bch_fs *c = ca->fs;
1165 ret = journal_read_bucket(ca, &buf, jlist, i);
1178 bch_verbose(c, "journal read done on device %s, ret %i", ca->name, ret);
1180 percpu_ref_put(&ca->io_ref);
1208 for_each_member_device(c, ca) {
1210 !(bch2_dev_has_data(c, ca) & (1 << BCH_DATA_journal)))
1213 if ((ca->mi.state == BCH_MEMBER_STATE_rw ||
1214 ca->mi.state == BCH_MEMBER_STATE_ro) &&
1215 percpu_ref_tryget(&ca->io_ref))
1216 closure_call(&ca->journal.read,
1373 struct bch_dev *ca = bch2_dev_have_ref(c, ptr->dev);
1376 bch_err_dev_offset(ca, ptr->sector,
1426 struct bch_dev *ca;
1433 ca = rcu_dereference(c->devs[devs_sorted->devs[i]]);
1434 if (!ca)
1437 ja = &ca->journal;
1443 if (!ca->mi.durability ||
1444 ca->mi.state != BCH_MEMBER_STATE_rw ||
1446 bch2_bkey_has_device_c(bkey_i_to_s_c(&w->key), ca->dev_idx) ||
1450 bch2_dev_stripe_increment(ca, &j->wp.stripe);
1454 .offset = bucket_to_sector(ca,
1456 ca->mi.bucket_size -
1458 .dev = ca->dev_idx,
1464 *replicas += ca->mi.durability;
1484 struct bch_dev *ca;
1507 ca = rcu_dereference(c->devs[devs_sorted.devs[i]]);
1508 if (!ca)
1511 ja = &ca->journal;
1514 sectors <= ca->mi.bucket_size &&
1518 ja->sectors_free = ca->mi.bucket_size;
1686 struct bch_dev *ca = jbio->ca;
1687 struct journal *j = &ca->fs->journal;
1690 if (bch2_dev_io_err_on(bio->bi_status, ca, BCH_MEMBER_ERROR_write,
1698 bch2_dev_list_drop_dev(&w->devs_written, ca->dev_idx);
1703 percpu_ref_put(&ca->io_ref);
1714 struct bch_dev *ca = bch2_dev_get_ioref(c, ptr->dev, WRITE);
1715 if (!ca) {
1721 this_cpu_add(ca->io_done->sectors[WRITE][BCH_DATA_journal],
1724 struct journal_device *ja = &ca->journal;
1726 bio_reset(bio, ca->disk_sb.bdev, REQ_OP_WRITE|REQ_SYNC|REQ_META);
1729 bio->bi_private = ca;
1731 BUG_ON(bio->bi_iter.bi_sector == ca->prev_journal_sector);
1732 ca->prev_journal_sector = bio->bi_iter.bi_sector;
1766 for_each_rw_member(c, ca) {
1767 percpu_ref_get(&ca->io_ref);
1769 struct journal_device *ja = &ca->journal;
1771 bio_reset(bio, ca->disk_sb.bdev,
1774 bio->bi_private = ca;
1974 for_each_rw_member(c, ca)