]> git.sesse.net Git - bcachefs-tools-debian/blobdiff - libbcachefs/debug.c
Update bcachefs sources to 380885b0b8 bcachefs: Fix counting iterators for reflink...
[bcachefs-tools-debian] / libbcachefs / debug.c
index e8a671a1b8985e4ed600058e9c6a7e4e779976ee..69b123bad83b9e3e469f030b19c3dc2067bde0d6 100644 (file)
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
 /*
  * Assorted bcachefs debug code
  *
@@ -69,8 +70,7 @@ void __bch2_btree_verify(struct bch_fs *c, struct btree *b)
        bio_set_dev(bio, ca->disk_sb.bdev);
        bio->bi_opf             = REQ_OP_READ|REQ_META;
        bio->bi_iter.bi_sector  = pick.ptr.offset;
-       bio->bi_iter.bi_size    = btree_bytes(c);
-       bch2_bio_map(bio, n_sorted);
+       bch2_bio_map(bio, n_sorted, btree_bytes(c));
 
        submit_bio_wait(bio);
 
@@ -204,7 +204,8 @@ static ssize_t bch2_read_btree(struct file *file, char __user *buf,
                               size_t size, loff_t *ppos)
 {
        struct dump_iter *i = file->private_data;
-       struct btree_iter iter;
+       struct btree_trans trans;
+       struct btree_iter *iter;
        struct bkey_s_c k;
        int err;
 
@@ -219,18 +220,20 @@ static ssize_t bch2_read_btree(struct file *file, char __user *buf,
        if (!i->size)
                return i->ret;
 
-       bch2_btree_iter_init(&iter, i->c, i->id, i->from, BTREE_ITER_PREFETCH);
-       k = bch2_btree_iter_peek(&iter);
+       bch2_trans_init(&trans, i->c, 0, 0);
 
-       while (k.k && !(err = btree_iter_err(k))) {
+       iter = bch2_trans_get_iter(&trans, i->id, i->from, BTREE_ITER_PREFETCH);
+       k = bch2_btree_iter_peek(iter);
+
+       while (k.k && !(err = bkey_err(k))) {
                bch2_bkey_val_to_text(&PBUF(i->buf), i->c, k);
                i->bytes = strlen(i->buf);
                BUG_ON(i->bytes >= PAGE_SIZE);
                i->buf[i->bytes] = '\n';
                i->bytes++;
 
-               k = bch2_btree_iter_next(&iter);
-               i->from = iter.pos;
+               k = bch2_btree_iter_next(iter);
+               i->from = iter->pos;
 
                err = flush_buf(i);
                if (err)
@@ -239,7 +242,7 @@ static ssize_t bch2_read_btree(struct file *file, char __user *buf,
                if (!i->size)
                        break;
        }
-       bch2_btree_iter_unlock(&iter);
+       bch2_trans_exit(&trans);
 
        return err < 0 ? err : i->ret;
 }
@@ -255,7 +258,8 @@ static ssize_t bch2_read_btree_formats(struct file *file, char __user *buf,
                                       size_t size, loff_t *ppos)
 {
        struct dump_iter *i = file->private_data;
-       struct btree_iter iter;
+       struct btree_trans trans;
+       struct btree_iter *iter;
        struct btree *b;
        int err;
 
@@ -270,7 +274,9 @@ static ssize_t bch2_read_btree_formats(struct file *file, char __user *buf,
        if (!i->size || !bkey_cmp(POS_MAX, i->from))
                return i->ret;
 
-       for_each_btree_node(&iter, i->c, i->id, i->from, 0, b) {
+       bch2_trans_init(&trans, i->c, 0, 0);
+
+       for_each_btree_node(&trans, iter, i->id, i->from, 0, b) {
                bch2_btree_node_to_text(&PBUF(i->buf), i->c, b);
                i->bytes = strlen(i->buf);
                err = flush_buf(i);
@@ -288,7 +294,7 @@ static ssize_t bch2_read_btree_formats(struct file *file, char __user *buf,
                if (!i->size)
                        break;
        }
-       bch2_btree_iter_unlock(&iter);
+       bch2_trans_exit(&trans);
 
        return err < 0 ? err : i->ret;
 }
@@ -304,7 +310,8 @@ static ssize_t bch2_read_bfloat_failed(struct file *file, char __user *buf,
                                       size_t size, loff_t *ppos)
 {
        struct dump_iter *i = file->private_data;
-       struct btree_iter iter;
+       struct btree_trans trans;
+       struct btree_iter *iter;
        struct bkey_s_c k;
        struct btree *prev_node = NULL;
        int err;
@@ -320,11 +327,13 @@ static ssize_t bch2_read_bfloat_failed(struct file *file, char __user *buf,
        if (!i->size)
                return i->ret;
 
-       bch2_btree_iter_init(&iter, i->c, i->id, i->from, BTREE_ITER_PREFETCH);
+       bch2_trans_init(&trans, i->c, 0, 0);
+
+       iter = bch2_trans_get_iter(&trans, i->id, i->from, BTREE_ITER_PREFETCH);
 
-       while ((k = bch2_btree_iter_peek(&iter)).k &&
-              !(err = btree_iter_err(k))) {
-               struct btree_iter_level *l = &iter.l[0];
+       while ((k = bch2_btree_iter_peek(iter)).k &&
+              !(err = bkey_err(k))) {
+               struct btree_iter_level *l = &iter->l[0];
                struct bkey_packed *_k =
                        bch2_btree_node_iter_peek(&l->iter, l->b);
 
@@ -343,8 +352,8 @@ static ssize_t bch2_read_bfloat_failed(struct file *file, char __user *buf,
                if (err)
                        break;
 
-               bch2_btree_iter_next(&iter);
-               i->from = iter.pos;
+               bch2_btree_iter_next(iter);
+               i->from = iter->pos;
 
                err = flush_buf(i);
                if (err)
@@ -353,7 +362,7 @@ static ssize_t bch2_read_bfloat_failed(struct file *file, char __user *buf,
                if (!i->size)
                        break;
        }
-       bch2_btree_iter_unlock(&iter);
+       bch2_trans_exit(&trans);
 
        return err < 0 ? err : i->ret;
 }