Lines Matching refs:ca

726 	for_each_member_device(c, ca) {
727 kvfree(rcu_dereference_protected(ca->buckets_gc, 1));
728 ca->buckets_gc = NULL;
730 free_percpu(ca->usage_gc);
731 ca->usage_gc = NULL;
740 struct bch_dev *ca = NULL;
753 copy_field(_err, _f, "dev %u has wrong " _msg, ca->dev_idx, ##__VA_ARGS__)
760 __for_each_member_device(c, ca) {
761 struct bch_dev_usage *dst = ca->usage_base;
763 bch2_acc_percpu_u64s((u64 __percpu *) ca->usage_gc,
818 bch2_dev_put(ca);
836 for_each_member_device(c, ca) {
837 BUG_ON(ca->usage_gc);
839 ca->usage_gc = alloc_percpu(struct bch_dev_usage);
840 if (!ca->usage_gc) {
841 bch_err(c, "error allocating ca->usage_gc");
842 bch2_dev_put(ca);
846 this_cpu_write(ca->usage_gc->d[BCH_DATA_free].buckets,
847 ca->mi.nbuckets - ca->mi.first_bucket);
868 struct bch_dev *ca,
881 __bucket_m_to_alloc(&gc, *gc_bucket(ca, iter->pos.offset));
887 !bch2_dev_is_online(ca)) {
900 bch2_dev_usage_update(c, ca, &old_gc, &gc, 0, true);
961 for_each_member_device(c, ca) {
964 POS(ca->dev_idx, ca->mi.first_bucket),
965 POS(ca->dev_idx, ca->mi.nbuckets - 1),
968 bch2_alloc_write_key(trans, &iter, ca, k)));
970 bch2_dev_put(ca);
981 for_each_member_device(c, ca) {
983 ca->mi.nbuckets * sizeof(struct bucket),
986 bch2_dev_put(ca);
987 bch_err(c, "error allocating ca->buckets[gc]");
991 buckets->first_bucket = ca->mi.first_bucket;
992 buckets->nbuckets = ca->mi.nbuckets;
993 rcu_assign_pointer(ca->buckets_gc, buckets);
996 struct bch_dev *ca = NULL;
1000 ca = bch2_dev_iterate(c, ca, k.k->p.inode);
1001 if (!ca) {
1009 struct bucket *g = gc_bucket(ca, k.k->p.offset);
1014 bch2_dev_put(ca);
1265 struct bch_dev *ca = bch2_dev_rcu(c, ptr->dev);
1266 if (!ca)
1269 if (dev_ptr_stale(ca, ptr) > 16) {
1277 struct bch_dev *ca = bch2_dev_rcu(c, ptr->dev);
1278 if (!ca)
1281 u8 *gen = &ca->oldest_gen[PTR_BUCKET_NR(ca, ptr)];
1298 static int bch2_alloc_write_oldest_gen(struct btree_trans *trans, struct bch_dev *ca,
1306 if (a->oldest_gen == ca->oldest_gen[iter->pos.offset])
1314 a_mut->v.oldest_gen = ca->oldest_gen[iter->pos.offset];
1336 for_each_member_device(c, ca) {
1337 struct bucket_gens *gens = bucket_gens(ca);
1339 BUG_ON(ca->oldest_gen);
1341 ca->oldest_gen = kvmalloc(gens->nbuckets, GFP_KERNEL);
1342 if (!ca->oldest_gen) {
1343 bch2_dev_put(ca);
1350 ca->oldest_gen[b] = gens->b[b];
1370 struct bch_dev *ca = NULL;
1378 ca = bch2_dev_iterate(c, ca, k.k->p.inode);
1379 if (!ca) {
1383 bch2_alloc_write_oldest_gen(trans, ca, &iter, k);
1385 bch2_dev_put(ca);
1398 for_each_member_device(c, ca) {
1399 kvfree(ca->oldest_gen);
1400 ca->oldest_gen = NULL;