Loading fs/bcachefs/alloc_background.c +2 −2 Original line number Diff line number Diff line Loading @@ -1679,7 +1679,7 @@ static int bch2_discard_one_bucket(struct btree_trans *trans, struct bch_dev *ca = s->ca && s->ca->dev_idx == pos.inode ? s->ca : bch2_dev_get_ioref2(c, pos.inode, WRITE); : bch2_dev_get_ioref(c, pos.inode, WRITE); if (!ca) { bch2_btree_iter_set_pos(need_discard_iter, POS(pos.inode + 1, 0)); return 0; Loading Loading @@ -1860,7 +1860,7 @@ static void bch2_do_discards_fast_work(struct work_struct *work) if (i->snapshot) continue; ca = bch2_dev_get_ioref2(c, i->inode, WRITE); ca = bch2_dev_get_ioref(c, i->inode, WRITE); if (!ca) { darray_remove_item(&c->discard_buckets_in_flight, i); continue; Loading fs/bcachefs/backpointers.c +1 −1 Original line number Diff line number Diff line Loading @@ -486,7 +486,7 @@ static int check_extent_checksum(struct btree_trans *trans, bytes = p.crc.compressed_size << 9; struct bch_dev *ca = bch2_dev_get_ioref2(c, dev, READ); struct bch_dev *ca = bch2_dev_get_ioref(c, dev, READ); if (!ca) return false; Loading fs/bcachefs/btree_io.c +3 −3 Original line number Diff line number Diff line Loading @@ -1308,7 +1308,7 @@ static void btree_node_read_work(struct work_struct *work) while (1) { retry = true; bch_info(c, "retrying read"); ca = bch2_dev_get_ioref2(c, rb->pick.ptr.dev, READ); ca = bch2_dev_get_ioref(c, rb->pick.ptr.dev, READ); rb->have_ioref = ca != NULL; bio_reset(bio, NULL, REQ_OP_READ|REQ_SYNC|REQ_META); bio->bi_iter.bi_sector = rb->pick.ptr.offset; Loading Loading @@ -1618,7 +1618,7 @@ static int btree_node_read_all_replicas(struct bch_fs *c, struct btree *b, bool i = 0; bkey_for_each_ptr_decode(k.k, ptrs, pick, entry) { struct bch_dev *ca = bch2_dev_get_ioref2(c, pick.ptr.dev, READ); struct bch_dev *ca = bch2_dev_get_ioref(c, pick.ptr.dev, READ); struct btree_read_bio *rb = container_of(ra->bio[i], struct btree_read_bio, bio); rb->c = c; Loading Loading @@ -1695,7 +1695,7 @@ void bch2_btree_node_read(struct btree_trans *trans, struct btree *b, return; } ca = bch2_dev_get_ioref2(c, pick.ptr.dev, READ); ca = bch2_dev_get_ioref(c, pick.ptr.dev, READ); bio = bio_alloc_bioset(NULL, buf_pages(b->data, btree_buf_bytes(b)), Loading fs/bcachefs/debug.c +2 −2 Original line number Diff line number Diff line Loading @@ -40,7 +40,7 @@ static bool bch2_btree_verify_replica(struct bch_fs *c, struct btree *b, struct bio *bio; bool failed = false, saw_error = false; struct bch_dev *ca = bch2_dev_get_ioref2(c, pick.ptr.dev, READ); struct bch_dev *ca = bch2_dev_get_ioref(c, pick.ptr.dev, READ); if (!ca) return false; Loading Loading @@ -194,7 +194,7 @@ void bch2_btree_node_ondisk_to_text(struct printbuf *out, struct bch_fs *c, return; } ca = bch2_dev_get_ioref2(c, pick.ptr.dev, READ); ca = bch2_dev_get_ioref(c, pick.ptr.dev, READ); if (!ca) { prt_printf(out, "error getting device to read from: not online\n"); return; Loading fs/bcachefs/ec.c +10 −11 Original line number Diff line number Diff line Loading @@ -732,12 +732,17 @@ static void ec_block_io(struct bch_fs *c, struct ec_stripe_buf *buf, struct bch_stripe *v = &bkey_i_to_stripe(&buf->key)->v; unsigned offset = 0, bytes = buf->size << 9; struct bch_extent_ptr *ptr = &v->ptrs[idx]; struct bch_dev *ca = bch2_dev_bkey_exists(c, ptr->dev); enum bch_data_type data_type = idx < v->nr_blocks - v->nr_redundant ? BCH_DATA_user : BCH_DATA_parity; int rw = op_is_write(opf); struct bch_dev *ca = bch2_dev_get_ioref(c, ptr->dev, rw); if (!ca) { clear_bit(idx, buf->valid); return; } if (dev_ptr_stale(ca, ptr)) { bch_err_ratelimited(c, "error %s stripe: stale pointer", Loading @@ -746,10 +751,6 @@ static void ec_block_io(struct bch_fs *c, struct ec_stripe_buf *buf, return; } if (!bch2_dev_get_ioref(ca, rw)) { clear_bit(idx, buf->valid); return; } this_cpu_add(ca->io_done->sectors[rw][data_type], buf->size); Loading Loading @@ -1354,20 +1355,18 @@ static void zero_out_rest_of_ec_bucket(struct bch_fs *c, unsigned block, struct open_bucket *ob) { struct bch_dev *ca = bch2_dev_bkey_exists(c, ob->dev); unsigned offset = ca->mi.bucket_size - ob->sectors_free; int ret; if (!bch2_dev_get_ioref(ca, WRITE)) { struct bch_dev *ca = bch2_dev_get_ioref(c, ob->dev, WRITE); if (!ca) { s->err = -BCH_ERR_erofs_no_writes; return; } unsigned offset = ca->mi.bucket_size - ob->sectors_free; memset(s->new_stripe.data[block] + (offset << 9), 0, ob->sectors_free << 9); ret = blkdev_issue_zeroout(ca->disk_sb.bdev, int ret = blkdev_issue_zeroout(ca->disk_sb.bdev, ob->bucket * ca->mi.bucket_size + offset, ob->sectors_free, GFP_KERNEL, 0); Loading Loading
fs/bcachefs/alloc_background.c +2 −2 Original line number Diff line number Diff line Loading @@ -1679,7 +1679,7 @@ static int bch2_discard_one_bucket(struct btree_trans *trans, struct bch_dev *ca = s->ca && s->ca->dev_idx == pos.inode ? s->ca : bch2_dev_get_ioref2(c, pos.inode, WRITE); : bch2_dev_get_ioref(c, pos.inode, WRITE); if (!ca) { bch2_btree_iter_set_pos(need_discard_iter, POS(pos.inode + 1, 0)); return 0; Loading Loading @@ -1860,7 +1860,7 @@ static void bch2_do_discards_fast_work(struct work_struct *work) if (i->snapshot) continue; ca = bch2_dev_get_ioref2(c, i->inode, WRITE); ca = bch2_dev_get_ioref(c, i->inode, WRITE); if (!ca) { darray_remove_item(&c->discard_buckets_in_flight, i); continue; Loading
fs/bcachefs/backpointers.c +1 −1 Original line number Diff line number Diff line Loading @@ -486,7 +486,7 @@ static int check_extent_checksum(struct btree_trans *trans, bytes = p.crc.compressed_size << 9; struct bch_dev *ca = bch2_dev_get_ioref2(c, dev, READ); struct bch_dev *ca = bch2_dev_get_ioref(c, dev, READ); if (!ca) return false; Loading
fs/bcachefs/btree_io.c +3 −3 Original line number Diff line number Diff line Loading @@ -1308,7 +1308,7 @@ static void btree_node_read_work(struct work_struct *work) while (1) { retry = true; bch_info(c, "retrying read"); ca = bch2_dev_get_ioref2(c, rb->pick.ptr.dev, READ); ca = bch2_dev_get_ioref(c, rb->pick.ptr.dev, READ); rb->have_ioref = ca != NULL; bio_reset(bio, NULL, REQ_OP_READ|REQ_SYNC|REQ_META); bio->bi_iter.bi_sector = rb->pick.ptr.offset; Loading Loading @@ -1618,7 +1618,7 @@ static int btree_node_read_all_replicas(struct bch_fs *c, struct btree *b, bool i = 0; bkey_for_each_ptr_decode(k.k, ptrs, pick, entry) { struct bch_dev *ca = bch2_dev_get_ioref2(c, pick.ptr.dev, READ); struct bch_dev *ca = bch2_dev_get_ioref(c, pick.ptr.dev, READ); struct btree_read_bio *rb = container_of(ra->bio[i], struct btree_read_bio, bio); rb->c = c; Loading Loading @@ -1695,7 +1695,7 @@ void bch2_btree_node_read(struct btree_trans *trans, struct btree *b, return; } ca = bch2_dev_get_ioref2(c, pick.ptr.dev, READ); ca = bch2_dev_get_ioref(c, pick.ptr.dev, READ); bio = bio_alloc_bioset(NULL, buf_pages(b->data, btree_buf_bytes(b)), Loading
fs/bcachefs/debug.c +2 −2 Original line number Diff line number Diff line Loading @@ -40,7 +40,7 @@ static bool bch2_btree_verify_replica(struct bch_fs *c, struct btree *b, struct bio *bio; bool failed = false, saw_error = false; struct bch_dev *ca = bch2_dev_get_ioref2(c, pick.ptr.dev, READ); struct bch_dev *ca = bch2_dev_get_ioref(c, pick.ptr.dev, READ); if (!ca) return false; Loading Loading @@ -194,7 +194,7 @@ void bch2_btree_node_ondisk_to_text(struct printbuf *out, struct bch_fs *c, return; } ca = bch2_dev_get_ioref2(c, pick.ptr.dev, READ); ca = bch2_dev_get_ioref(c, pick.ptr.dev, READ); if (!ca) { prt_printf(out, "error getting device to read from: not online\n"); return; Loading
fs/bcachefs/ec.c +10 −11 Original line number Diff line number Diff line Loading @@ -732,12 +732,17 @@ static void ec_block_io(struct bch_fs *c, struct ec_stripe_buf *buf, struct bch_stripe *v = &bkey_i_to_stripe(&buf->key)->v; unsigned offset = 0, bytes = buf->size << 9; struct bch_extent_ptr *ptr = &v->ptrs[idx]; struct bch_dev *ca = bch2_dev_bkey_exists(c, ptr->dev); enum bch_data_type data_type = idx < v->nr_blocks - v->nr_redundant ? BCH_DATA_user : BCH_DATA_parity; int rw = op_is_write(opf); struct bch_dev *ca = bch2_dev_get_ioref(c, ptr->dev, rw); if (!ca) { clear_bit(idx, buf->valid); return; } if (dev_ptr_stale(ca, ptr)) { bch_err_ratelimited(c, "error %s stripe: stale pointer", Loading @@ -746,10 +751,6 @@ static void ec_block_io(struct bch_fs *c, struct ec_stripe_buf *buf, return; } if (!bch2_dev_get_ioref(ca, rw)) { clear_bit(idx, buf->valid); return; } this_cpu_add(ca->io_done->sectors[rw][data_type], buf->size); Loading Loading @@ -1354,20 +1355,18 @@ static void zero_out_rest_of_ec_bucket(struct bch_fs *c, unsigned block, struct open_bucket *ob) { struct bch_dev *ca = bch2_dev_bkey_exists(c, ob->dev); unsigned offset = ca->mi.bucket_size - ob->sectors_free; int ret; if (!bch2_dev_get_ioref(ca, WRITE)) { struct bch_dev *ca = bch2_dev_get_ioref(c, ob->dev, WRITE); if (!ca) { s->err = -BCH_ERR_erofs_no_writes; return; } unsigned offset = ca->mi.bucket_size - ob->sectors_free; memset(s->new_stripe.data[block] + (offset << 9), 0, ob->sectors_free << 9); ret = blkdev_issue_zeroout(ca->disk_sb.bdev, int ret = blkdev_issue_zeroout(ca->disk_sb.bdev, ob->bucket * ca->mi.bucket_size + offset, ob->sectors_free, GFP_KERNEL, 0); Loading