diff options
Diffstat (limited to 'libbcachefs/btree_io.c')
-rw-r--r-- | libbcachefs/btree_io.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/libbcachefs/btree_io.c b/libbcachefs/btree_io.c index d50e9e8e..38c373c6 100644 --- a/libbcachefs/btree_io.c +++ b/libbcachefs/btree_io.c @@ -146,9 +146,7 @@ static inline void sort_iter_advance(struct sort_iter *iter, sort_cmp_fn cmp) BUG_ON(iter->data->k > iter->data->end); if (iter->data->k == iter->data->end) - memmove(&iter->data[0], - &iter->data[1], - sizeof(iter->data[0]) * --iter->used); + array_remove_item(iter->data, iter->used, 0); else sort_iter_sift(iter, cmp); } @@ -1307,6 +1305,8 @@ static void btree_node_read_endio(struct bio *bio) struct btree_read_bio *rb = container_of(bio, struct btree_read_bio, bio); + bch2_latency_acct(rb->pick.ca, rb->start_time >> 10, READ); + INIT_WORK(&rb->work, btree_node_read_work); schedule_work(&rb->work); } @@ -1471,6 +1471,8 @@ static void btree_node_write_endio(struct bio *bio) struct bch_fs *c = wbio->c; struct bch_dev *ca = wbio->ca; + bch2_latency_acct(ca, wbio->submit_time_us, WRITE); + if (bch2_dev_io_err_on(bio->bi_error, ca, "btree write") || bch2_meta_write_fault("btree")) set_bit(wbio->ptr_idx, (unsigned long *) &orig->replicas_failed); |