| /fs/bcachefs/ |
| A D | sb-members.h | 33 return ca && bch2_dev_is_online(ca); in bch2_dev_idx_is_online() 92 return ca; in __bch2_next_dev_idx() 136 if (ca) in bch2_dev_put() 144 if ((ca = __bch2_next_dev(c, ca, NULL))) in bch2_get_next_dev() 146 return ca; in bch2_get_next_dev() 165 if (ca) in bch2_get_next_online_dev() 168 while ((ca = __bch2_next_dev(c, ca, NULL)) && in bch2_get_next_online_dev() 173 return ca; in bch2_get_next_online_dev() 238 if (ca) in bch2_dev_tryget_noerror() 276 if (ca && ca->dev_idx == dev_idx) in bch2_dev_iterate_noerror() [all …]
|
| A D | super.c | 682 if (ca) in __bch2_fs_stop() 1355 clear_bit(ca->dev_idx, ca->fs->online_devs.d); in bch2_dev_io_ref_stop() 1487 ca = kzalloc(sizeof(*ca), GFP_KERNEL); in __bch2_dev_alloc() 1488 if (!ca) in __bch2_dev_alloc() 1538 __set_bit(ca->dev_idx, ca->self.d); in bch2_dev_attach() 1544 rcu_assign_pointer(c->devs[ca->dev_idx], ca); in bch2_dev_attach() 1581 ca->mi.bucket_size * ca->mi.nbuckets) { in __bch2_dev_attach_bdev() 1595 strscpy(ca->name, name.buf, sizeof(ca->name)); in __bch2_dev_attach_bdev() 1607 ca->disk_sb.holder->c = ca->fs; in __bch2_dev_attach_bdev() 1609 ca->dev = ca->disk_sb.bdev->bd_dev; in __bch2_dev_attach_bdev() [all …]
|
| A D | buckets.h | 17 return div_u64(s, ca->mi.bucket_size); in sector_to_bucket() 59 return bucket_valid(ca, b) in gc_bucket() 60 ? genradix_ptr(&ca->buckets_gc, b) in gc_bucket() 81 u8 *gen = bucket_gen(ca, b); in bucket_gen_get_rcu() 88 return bucket_gen_get_rcu(ca, b); in bucket_gen_get() 113 return gc_bucket(ca, PTR_BUCKET_NR(ca, ptr)); in PTR_GC_BUCKET() 147 int gen = bucket_gen_get_rcu(ca, PTR_BUCKET_NR(ca, ptr)); in dev_ptr_stale_rcu() 158 return dev_ptr_stale_rcu(ca, ptr); in dev_ptr_stale() 217 ca->nr_open_buckets - in dev_buckets_free() 230 - ca->nr_open_buckets in __dev_buckets_available() [all …]
|
| A D | alloc_background.c | 362 if (ca) in __bch2_alloc_v4_to_text() 635 ca = bch2_dev_iterate(c, ca, k.k->p.inode); in bch2_alloc_read() 656 ca = bch2_dev_iterate(c, ca, k.k->p.inode); in bch2_alloc_read() 867 if (!ca) in bch2_trigger_alloc() 1100 if (*ca) { in next_bucket() 1115 if (*ca) { in next_bucket() 1176 if (!ca) in bch2_check_alloc_key() 1523 if (!ca) { in bch2_check_bucket_gens_key() 1646 ca = NULL; in bch2_check_alloc_info() 1718 if (!ca) in bch2_check_alloc_to_lru_ref() [all …]
|
| A D | chardev.c | 31 struct bch_dev *ca; in bch2_device_lookup() local 38 if (!ca) in bch2_device_lookup() 52 return ca; in bch2_device_lookup() 223 if (IS_ERR(ca)) in bch2_ioctl_disk_remove() 266 if (IS_ERR(ca)) in bch2_ioctl_disk_offline() 292 if (IS_ERR(ca)) in bch2_ioctl_disk_set_state() 353 if (ca) { in bch2_data_job_read() 508 if (IS_ERR(ca)) in bch2_ioctl_dev_usage() 515 arg.nr_buckets = ca->mi.nbuckets - ca->mi.first_bucket; in bch2_ioctl_dev_usage() 549 if (IS_ERR(ca)) in bch2_ioctl_dev_usage_v2() [all …]
|
| A D | alloc_foreground.c | 74 memset(ca->alloc_cursor, 0, sizeof(ca->alloc_cursor)); in bch2_reset_alloc_cursors() 212 struct bch_dev *ca = req->ca; in __try_alloc_bucket() local 290 struct bch_dev *ca = req->ca; in bch2_bucket_alloc_early() local 314 if (bkey_ge(k.k->p, POS(ca->dev_idx, ca->mi.nbuckets))) in bch2_bucket_alloc_early() 319 bucket_to_sector(ca, bucket), ca->mi.bucket_size)) { in bch2_bucket_alloc_early() 380 struct bch_dev *ca = req->ca; in bch2_bucket_alloc_freelist() local 405 bucket_to_sector(ca, bucket), ca->mi.bucket_size)) { in bch2_bucket_alloc_freelist() 502 struct bch_dev *ca = req->ca; in bch2_bucket_alloc_trans() local 589 .ca = ca, in bch2_bucket_alloc() 721 if (!req->ca) in bch2_bucket_alloc_set_trans() [all …]
|
| A D | buckets.c | 120 if (!ca) { in bch2_check_fix_ptr() 230 ret = bch2_dev_journal_bucket_delete(ca, PTR_BUCKET_NR(ca, &p.ptr)); in bch2_check_fix_ptr() 270 bch2_dev_put(ca); in bch2_check_fix_ptr() 633 if (unlikely(!ca)) { in bch2_trigger_pointer() 679 bch2_dev_put(ca); in bch2_trigger_pointer() 1309 ca->buckets_nouse = bch2_kvmalloc(BITS_TO_LONGS(ca->mi.nbuckets) * in bch2_buckets_nouse_alloc() 1313 bch2_dev_put(ca); in bch2_buckets_nouse_alloc() 1363 ret = bch2_bucket_bitmap_resize(ca, &ca->bucket_backpointer_mismatch, in bch2_dev_buckets_resize() 1365 bch2_bucket_bitmap_resize(ca, &ca->bucket_backpointer_empty, in bch2_dev_buckets_resize() 1391 if (!ca->usage) in bch2_dev_buckets_alloc() [all …]
|
| A D | backpointers.h | 43 return POS(bp_pos.inode, sector_to_bucket(ca, bucket_sector)); in bp_pos_to_bucket() 57 struct bch_dev *ca = bch2_dev_rcu_noerror(c, bp_pos.inode); in bp_pos_to_bucket_nodev_noerror() local 58 if (ca) in bp_pos_to_bucket_nodev_noerror() 59 *bucket = bp_pos_to_bucket(ca, bp_pos); in bp_pos_to_bucket_nodev_noerror() 60 return ca != NULL; in bp_pos_to_bucket_nodev_noerror() 63 static inline struct bpos bucket_pos_to_bp_noerror(const struct bch_dev *ca, in bucket_pos_to_bp_noerror() argument 68 (bucket_to_sector(ca, bucket.offset) << in bucket_pos_to_bp_noerror() 75 static inline struct bpos bucket_pos_to_bp(const struct bch_dev *ca, in bucket_pos_to_bp() argument 79 struct bpos ret = bucket_pos_to_bp_noerror(ca, bucket, bucket_offset); in bucket_pos_to_bp() 80 EBUG_ON(!bkey_eq(bucket, bp_pos_to_bucket(ca, ret))); in bucket_pos_to_bp() [all …]
|
| A D | super-io.c | 970 ca->sb_write_error = 1; in write_super_endio() 987 bio->bi_private = ca; in read_back_super() 1010 bio->bi_private = ca; in write_one_super() 1125 read_back_super(c, *ca); in bch2_write_super() 1131 if (ca->sb_write_error) in bch2_write_super() 1134 if (le64_to_cpu(ca->sb_read_scratch->seq) < ca->disk_sb.seq) { in bch2_write_super() 1141 ca->disk_sb.seq); in bch2_write_super() 1154 if (le64_to_cpu(ca->sb_read_scratch->seq) > ca->disk_sb.seq) { in bch2_write_super() 1161 ca->disk_sb.seq); in bch2_write_super() 1187 if (ca->sb_write_error) in bch2_write_super() [all …]
|
| A D | journal_io.c | 43 if (idx < ca->journal.nr) in bch2_journal_pos_from_member_info_resume() 47 ca->journal.sectors_free = ca->mi.bucket_size - offset; in bch2_journal_pos_from_member_info_resume() 56 ca ? ca->name : "(invalid dev)", in bch2_journal_ptr_to_text() 58 bch2_dev_put(ca); in bch2_journal_ptr_to_text() 942 ca ? ca->name : c->name, in jset_validate() 954 ca ? ca->name : c->name, in jset_validate() 996 ca ? ca->name : c->name, in jset_validate_early() 1013 ca ? ca->name : c->name, in jset_validate_early() 1540 if (!ca) in journal_advance_devs_to_next_bucket() 1573 if (!ca) in __journal_write_alloc() [all …]
|
| A D | sysfs.c | 626 struct bch_dev *ca, in sysfs_opt_show() argument 647 struct bch_dev *ca, in sysfs_opt_store() argument 669 bch2_opt_hook_pre_set(c, ca, id, v); in sysfs_opt_store() 680 } else if (!ca) { in sysfs_opt_store() 688 if (!ca) in sysfs_opt_store() 800 struct bch_fs *c = ca->fs; in SHOW() 808 if (ca->mi.group) in SHOW() 819 dev_io_done_to_text(out, ca); in SHOW() 822 bch2_dev_io_errors_to_text(out, ca); in SHOW() 859 struct bch_fs *c = ca->fs; in STORE() [all …]
|
| A D | btree_node_scan.c | 22 struct bch_dev *ca; member 134 bio_reset(bio, ca->disk_sb.bdev, REQ_OP_READ); in try_read_btree_node() 143 bch_err_dev_ratelimited(ca, in try_read_btree_node() 182 .ptrs[0].dev = ca->dev_idx, in try_read_btree_node() 183 .ptrs[0].gen = bucket_gen_get(ca, sector_to_bucket(ca, offset)), in try_read_btree_node() 187 bio_reset(bio, ca->disk_sb.bdev, REQ_OP_READ); in try_read_btree_node() 227 struct bch_dev *ca = w->ca; in read_btree_nodes_worker() local 246 for (u64 bucket = ca->mi.first_bucket; bucket < ca->mi.nbuckets; bucket++) in read_btree_nodes_worker() 252 u64 end_sector = ca->mi.nbuckets * ca->mi.bucket_size; in read_btree_nodes_worker() 254 bch_info(ca, "%s: %2u%% done", __func__, in read_btree_nodes_worker() [all …]
|
| A D | backpointers.c | 51 struct bch_dev *ca; in bch2_backpointer_to_text() local 56 if (ca) in bch2_backpointer_to_text() 60 if (ca) in bch2_backpointer_to_text() 495 if (!ca) in check_extent_checksum() 591 if (ca) { in check_bp_exists() 690 if (!ca) in check_extent_to_backpointers() 899 if (!ca) in check_bucket_backpointer_mismatch() 964 ret = bch2_bucket_bitmap_set(ca, &ca->bucket_backpointer_mismatch, in check_bucket_backpointer_mismatch() 967 ? bch2_bucket_bitmap_set(ca, &ca->bucket_backpointer_empty, in check_bucket_backpointer_mismatch() 974 bch2_dev_put(ca); in check_bucket_backpointer_mismatch() [all …]
|
| A D | btree_gc.c | 824 bch2_dev_put(ca); in bch2_gc_start() 953 POS(ca->dev_idx, ca->mi.first_bucket), in bch2_gc_alloc_done() 954 POS(ca->dev_idx, ca->mi.nbuckets - 1), in bch2_gc_alloc_done() 959 bch2_dev_put(ca); in bch2_gc_alloc_done() 975 bch2_dev_put(ca); in bch2_gc_alloc_start() 1142 if (!ca) in gc_btree_gens_key() 1151 if (!ca) in gc_btree_gens_key() 1154 u8 *gen = &ca->oldest_gen[PTR_BUCKET_NR(ca, ptr)]; in gc_btree_gens_key() 1255 ca = bch2_dev_iterate(c, ca, k.k->p.inode); in bch2_gc_gens() 1256 if (!ca) { in bch2_gc_gens() [all …]
|
| A D | extents.c | 69 if (ca) in bch2_io_failures_to_text() 148 return !ca || ca->mi.state == BCH_MEMBER_STATE_failed; in dev_failed() 239 if (ca && ca->mi.state != BCH_MEMBER_STATE_failed) { in bch2_bkey_pick_read_device() 254 have_missing_devs |= ca && !bch2_dev_is_online(ca); in bch2_bkey_pick_read_device() 256 if (!ca || !bch2_dev_is_online(ca)) { in bch2_bkey_pick_read_device() 424 bool same_bucket = ca && PTR_BUCKET_NR(ca, &lp.ptr) == PTR_BUCKET_NR(ca, &rp.ptr); in bch2_extent_merge() 821 return ca ? __extent_ptr_durability(ca, p) : 0; in bch2_extent_ptr_desired_durability() 828 if (!ca || ca->mi.state == BCH_MEMBER_STATE_failed) in bch2_extent_ptr_durability() 1123 return ca && bch2_dev_is_healthy(ca) && !dev_ptr_stale_rcu(ca, ptr); in want_cached_ptr() 1231 if (!ca) { in bch2_extent_ptr_to_text() [all …]
|
| A D | alloc_background.h | 17 struct bch_dev *ca = bch2_dev_rcu_noerror(c, pos.inode); in bch2_dev_bucket_exists() local 18 return ca && bucket_valid(ca, pos.offset); in bch2_dev_bucket_exists() 111 return d ? max(0, ca->mi.bucket_size - d) : 0; in bch2_bucket_sectors_fragmented() 118 return d ? max(0, ca->mi.bucket_size - d) : 0; in bch2_gc_bucket_sectors_fragmented() 165 struct bch_dev *ca) in alloc_lru_idx_fragmentation() argument 171 !bch2_bucket_sectors_fragmented(ca, a)) in alloc_lru_idx_fragmentation() 179 ca->mi.bucket_size); in alloc_lru_idx_fragmentation() 181 return div_u64(d * (1ULL << 31), ca->mi.bucket_size); in alloc_lru_idx_fragmentation() 318 static inline u64 should_invalidate_buckets(struct bch_dev *ca, in should_invalidate_buckets() argument 321 u64 want_free = ca->mi.nbuckets >> 7; in should_invalidate_buckets() [all …]
|
| A D | disk_groups.c | 183 return ca ? &ca->self : NULL; in bch2_target_to_mask() 395 prt_printf(out, " %s", ca->name); in bch2_disk_groups_to_text() 477 ret = __bch2_dev_group_set(c, ca, name) ?: in bch2_dev_group_set() 487 struct bch_dev *ca; in bch2_opt_target_parse() local 502 ca = bch2_dev_lookup(c, val); in bch2_opt_target_parse() 503 if (!IS_ERR(ca)) { in bch2_opt_target_parse() 504 *res = dev_to_target(ca->dev_idx); in bch2_opt_target_parse() 505 bch2_dev_put(ca); in bch2_opt_target_parse() 536 if (ca && ca->disk_sb.bdev) in bch2_target_to_text() 537 prt_printf(out, "/dev/%s", ca->name); in bch2_target_to_text() [all …]
|
| A D | sb-members.c | 40 bch2_fs_inconsistent(ca->fs, in bch2_dev_bucket_missing() 42 bucket, ca->name, ca->mi.first_bucket, ca->mi.nbuckets); in bch2_dev_bucket_missing() 408 for_each_member_device_rcu(c, ca, NULL) { in bch2_sb_members_from_cpu() 418 struct bch_fs *c = ca->fs; in bch2_dev_io_errors_to_text() 421 mutex_lock(&ca->fs->sb_lock); in bch2_dev_io_errors_to_text() 422 m = bch2_sb_member_get(c->disk_sb.sb, ca->dev_idx); in bch2_dev_io_errors_to_text() 423 mutex_unlock(&ca->fs->sb_lock); in bch2_dev_io_errors_to_text() 447 void bch2_dev_errors_reset(struct bch_dev *ca) in bch2_dev_errors_reset() argument 449 struct bch_fs *c = ca->fs; in bch2_dev_errors_reset() 473 struct bch_dev *ca = bch2_dev_rcu(c, ptr->dev); in bch2_dev_btree_bitmap_marked() local [all …]
|
| A D | movinggc.c | 74 struct bch_dev *ca = bch2_dev_bucket_tryget(c, k.k->p); in bch2_bucket_is_movable() local 75 if (!ca) in bch2_bucket_is_movable() 81 if (ca->mi.state != BCH_MEMBER_STATE_rw || in bch2_bucket_is_movable() 82 !bch2_dev_is_online(ca)) in bch2_bucket_is_movable() 89 u64 lru_idx = alloc_lru_idx_fragmentation(*a, ca); in bch2_bucket_is_movable() 93 bch2_dev_put(ca); in bch2_bucket_is_movable() 268 ca->mi.bucket_size) >> 1); in bch2_copygc_dev_wait_amount() 297 for_each_rw_member_rcu(c, ca) in bch2_copygc_wait_amount() 298 wait = min(wait, bch2_copygc_dev_wait_amount(ca)); in bch2_copygc_wait_amount() 326 for_each_rw_member_rcu(c, ca) { in bch2_copygc_wait_to_text() [all …]
|
| A D | btree_io.c | 518 struct bch_dev *ca, in btree_err_msg() argument 532 if (ca) in btree_err_msg() 567 if (ca) { in __btree_err() 737 c, ca, b, i, NULL, in validate_bset() 1147 c, ca, b, i, NULL, in bch2_btree_node_read_done() 1183 c, ca, b, i, NULL, in bch2_btree_node_read_done() 1191 if (ca && csum_bad) in bch2_btree_node_read_done() 1795 struct bch_dev *ca; in bch2_btree_node_read() local 1933 struct bch_dev *ca; member 2056 if (!ca) { in bch2_btree_node_scrub() [all …]
|
| A D | error.h | 222 static inline void bch2_latency_acct(struct bch_dev *ca, u64 submit_time, int rw) {} in bch2_latency_acct() argument 225 static inline void bch2_account_io_success_fail(struct bch_dev *ca, in bch2_account_io_success_fail() argument 231 ca->write_errors_start) in bch2_account_io_success_fail() 232 ca->write_errors_start = 0; in bch2_account_io_success_fail() 234 bch2_io_error(ca, type); in bch2_account_io_success_fail() 238 static inline void bch2_account_io_completion(struct bch_dev *ca, in bch2_account_io_completion() argument 242 if (unlikely(!ca)) in bch2_account_io_completion() 246 bch2_latency_acct(ca, submit_time, type); in bch2_account_io_completion() 248 bch2_account_io_success_fail(ca, type, success); in bch2_account_io_completion()
|
| A D | journal.c | 712 for_each_rw_member_rcu(c, ca) in max_dev_latency() 1121 struct bch_fs *c = ca->fs; in bch2_set_nr_journal_buckets_iter() 1310 struct bch_fs *c = ca->fs; in bch2_dev_journal_bucket_delete() 1370 struct bch_fs *c = ca->fs; in bch2_dev_journal_alloc() 1389 nr = ca->mi.nbuckets >> 7; in bch2_dev_journal_alloc() 1398 (1 << 24) / ca->mi.bucket_size)); in bch2_dev_journal_alloc() 1402 bch_err_fn(ca, ret); in bch2_dev_journal_alloc() 1409 if (ca->journal.nr) in bch2_fs_journal_alloc() 1605 struct bch_fs *c = ca->fs; in bch2_dev_journal_init() 1635 ja->bio[i]->ca = ca; in bch2_dev_journal_init() [all …]
|
| A D | ec.c | 106 struct bch_dev *ca; member 342 bch2_dev_put(ca); in mark_stripe_bucket() 634 if (ca) { in ec_validate_checksums() 702 struct bch_dev *ca = ec_bio->ca; in ec_block_endio() local 748 if (!ca) { in ec_block_io() 780 ec_bio->ca = ca; in ec_block_io() 1198 if (!ca) in ec_stripe_update_bucket() 1228 bch2_dev_put(ca); in ec_stripe_update_bucket() 1259 if (!ca) { in zero_out_rest_of_ec_bucket() 2152 nr_good += ca && ca->mi.state != BCH_MEMBER_STATE_failed; in bch2_invalidate_stripe_to_dev() [all …]
|
| A D | journal_reclaim.c | 87 struct journal_device *ja = &ca->journal; in journal_dev_space_available() 152 if (!ca->journal.nr || in __journal_space_available() 153 !ca->mi.durability) in __journal_space_available() 201 struct journal_device *ja = &ca->journal; in bch2_journal_space_available() 230 prt_printf(&buf, " %s", ca->name); in bch2_journal_space_available() 301 struct journal_device *ja = &ca->journal; in bch2_journal_do_discards() 305 bch2_discard_opt_enabled(c, ca) && in bch2_journal_do_discards() 307 blkdev_issue_discard(ca->disk_sb.bdev, in bch2_journal_do_discards() 308 bucket_to_sector(ca, in bch2_journal_do_discards() 310 ca->mi.bucket_size, GFP_NOFS); in bch2_journal_do_discards() [all …]
|
| /fs/xfs/scrub/ |
| A D | alloc.c | 118 struct xchk_alloc *ca, in xchk_allocbt_mergeable() argument 124 if (ca->prev.ar_blockcount > 0 && in xchk_allocbt_mergeable() 125 ca->prev.ar_startblock + ca->prev.ar_blockcount == irec->ar_startblock && in xchk_allocbt_mergeable() 126 ca->prev.ar_blockcount + irec->ar_blockcount < (uint32_t)~0U) in xchk_allocbt_mergeable() 129 memcpy(&ca->prev, irec, sizeof(*irec)); in xchk_allocbt_mergeable() 139 struct xchk_alloc *ca = bs->private; in xchk_allocbt_rec() local 147 xchk_allocbt_mergeable(bs, ca, &irec); in xchk_allocbt_rec() 158 struct xchk_alloc ca = { }; in xchk_allocbt() local 173 return xchk_btree(sc, cur, xchk_allocbt_rec, &XFS_RMAP_OINFO_AG, &ca); in xchk_allocbt()
|