]> git.sesse.net Git - bcachefs-tools-debian/blobdiff - libbcachefs/tests.c
Update bcachefs sources to 1a739db0b256 bcachefs; guard against overflow in btree...
[bcachefs-tools-debian] / libbcachefs / tests.c
index 2fc9e60c754b4914b9cd5b5b460c99e1f4b7c3a5..b3fe9fc577470ff14659df531959c9e7aa6c324b 100644 (file)
@@ -107,9 +107,6 @@ err:
 
 static int test_iterate(struct bch_fs *c, u64 nr)
 {
-       struct btree_trans *trans = bch2_trans_get(c);
-       struct btree_iter iter = { NULL };
-       struct bkey_s_c k;
        u64 i;
        int ret = 0;
 
@@ -127,49 +124,43 @@ static int test_iterate(struct bch_fs *c, u64 nr)
                ret = bch2_btree_insert(c, BTREE_ID_xattrs, &ck.k_i, NULL, 0);
                bch_err_msg(c, ret, "insert error");
                if (ret)
-                       goto err;
+                       return ret;
        }
 
        pr_info("iterating forwards");
-
        i = 0;
 
-       ret = for_each_btree_key2_upto(trans, iter, BTREE_ID_xattrs,
-                                 SPOS(0, 0, U32_MAX), POS(0, U64_MAX),
-                                 0, k, ({
-               BUG_ON(k.k->p.offset != i++);
-               0;
-       }));
+       ret = bch2_trans_run(c,
+               for_each_btree_key_upto(trans, iter, BTREE_ID_xattrs,
+                                       SPOS(0, 0, U32_MAX), POS(0, U64_MAX),
+                                       0, k, ({
+                       BUG_ON(k.k->p.offset != i++);
+                       0;
+               })));
        bch_err_msg(c, ret, "error iterating forwards");
        if (ret)
-               goto err;
+               return ret;
 
        BUG_ON(i != nr);
 
        pr_info("iterating backwards");
 
-       ret = for_each_btree_key_reverse(trans, iter, BTREE_ID_xattrs,
-                                        SPOS(0, U64_MAX, U32_MAX), 0, k,
-               ({
+       ret = bch2_trans_run(c,
+               for_each_btree_key_reverse(trans, iter, BTREE_ID_xattrs,
+                               SPOS(0, U64_MAX, U32_MAX), 0, k, ({
                        BUG_ON(k.k->p.offset != --i);
                        0;
-               }));
+               })));
        bch_err_msg(c, ret, "error iterating backwards");
        if (ret)
-               goto err;
+               return ret;
 
        BUG_ON(i);
-err:
-       bch2_trans_iter_exit(trans, &iter);
-       bch2_trans_put(trans);
-       return ret;
+       return 0;
 }
 
 static int test_iterate_extents(struct bch_fs *c, u64 nr)
 {
-       struct btree_trans *trans = bch2_trans_get(c);
-       struct btree_iter iter = { NULL };
-       struct bkey_s_c k;
        u64 i;
        int ret = 0;
 
@@ -188,51 +179,45 @@ static int test_iterate_extents(struct bch_fs *c, u64 nr)
                ret = bch2_btree_insert(c, BTREE_ID_extents, &ck.k_i, NULL, 0);
                bch_err_msg(c, ret, "insert error");
                if (ret)
-                       goto err;
+                       return ret;
        }
 
        pr_info("iterating forwards");
-
        i = 0;
 
-       ret = for_each_btree_key2_upto(trans, iter, BTREE_ID_extents,
-                                 SPOS(0, 0, U32_MAX), POS(0, U64_MAX),
-                                 0, k, ({
-               BUG_ON(bkey_start_offset(k.k) != i);
-               i = k.k->p.offset;
-               0;
-       }));
+       ret = bch2_trans_run(c,
+               for_each_btree_key_upto(trans, iter, BTREE_ID_extents,
+                                       SPOS(0, 0, U32_MAX), POS(0, U64_MAX),
+                                       0, k, ({
+                       BUG_ON(bkey_start_offset(k.k) != i);
+                       i = k.k->p.offset;
+                       0;
+               })));
        bch_err_msg(c, ret, "error iterating forwards");
        if (ret)
-               goto err;
+               return ret;
 
        BUG_ON(i != nr);
 
        pr_info("iterating backwards");
 
-       ret = for_each_btree_key_reverse(trans, iter, BTREE_ID_extents,
-                                        SPOS(0, U64_MAX, U32_MAX), 0, k,
-               ({
+       ret = bch2_trans_run(c,
+               for_each_btree_key_reverse(trans, iter, BTREE_ID_extents,
+                               SPOS(0, U64_MAX, U32_MAX), 0, k, ({
                        BUG_ON(k.k->p.offset != i);
                        i = bkey_start_offset(k.k);
                        0;
-               }));
+               })));
        bch_err_msg(c, ret, "error iterating backwards");
        if (ret)
-               goto err;
+               return ret;
 
        BUG_ON(i);
-err:
-       bch2_trans_iter_exit(trans, &iter);
-       bch2_trans_put(trans);
-       return ret;
+       return 0;
 }
 
 static int test_iterate_slots(struct bch_fs *c, u64 nr)
 {
-       struct btree_trans *trans = bch2_trans_get(c);
-       struct btree_iter iter = { NULL };
-       struct bkey_s_c k;
        u64 i;
        int ret = 0;
 
@@ -250,57 +235,48 @@ static int test_iterate_slots(struct bch_fs *c, u64 nr)
                ret = bch2_btree_insert(c, BTREE_ID_xattrs, &ck.k_i, NULL, 0);
                bch_err_msg(c, ret, "insert error");
                if (ret)
-                       goto err;
+                       return ret;
        }
 
        pr_info("iterating forwards");
-
        i = 0;
 
-       ret = for_each_btree_key2_upto(trans, iter, BTREE_ID_xattrs,
-                                 SPOS(0, 0, U32_MAX), POS(0, U64_MAX),
-                                 0, k, ({
-               BUG_ON(k.k->p.offset != i);
-               i += 2;
-               0;
-       }));
+       ret = bch2_trans_run(c,
+               for_each_btree_key_upto(trans, iter, BTREE_ID_xattrs,
+                                         SPOS(0, 0, U32_MAX), POS(0, U64_MAX),
+                                         0, k, ({
+                       BUG_ON(k.k->p.offset != i);
+                       i += 2;
+                       0;
+               })));
        bch_err_msg(c, ret, "error iterating forwards");
        if (ret)
-               goto err;
+               return ret;
 
        BUG_ON(i != nr * 2);
 
        pr_info("iterating forwards by slots");
-
        i = 0;
 
-       ret = for_each_btree_key2_upto(trans, iter, BTREE_ID_xattrs,
-                                 SPOS(0, 0, U32_MAX), POS(0, U64_MAX),
-                                 BTREE_ITER_SLOTS, k, ({
-               if (i >= nr * 2)
-                       break;
+       ret = bch2_trans_run(c,
+               for_each_btree_key_upto(trans, iter, BTREE_ID_xattrs,
+                                       SPOS(0, 0, U32_MAX), POS(0, U64_MAX),
+                                       BTREE_ITER_SLOTS, k, ({
+                       if (i >= nr * 2)
+                               break;
 
-               BUG_ON(k.k->p.offset != i);
-               BUG_ON(bkey_deleted(k.k) != (i & 1));
+                       BUG_ON(k.k->p.offset != i);
+                       BUG_ON(bkey_deleted(k.k) != (i & 1));
 
-               i++;
-               0;
-       }));
-       if (ret < 0) {
-               bch_err_msg(c, ret, "error iterating forwards by slots");
-               goto err;
-       }
-       ret = 0;
-err:
-       bch2_trans_put(trans);
+                       i++;
+                       0;
+               })));
+       bch_err_msg(c, ret, "error iterating forwards by slots");
        return ret;
 }
 
 static int test_iterate_slots_extents(struct bch_fs *c, u64 nr)
 {
-       struct btree_trans *trans = bch2_trans_get(c);
-       struct btree_iter iter = { NULL };
-       struct bkey_s_c k;
        u64 i;
        int ret = 0;
 
@@ -319,50 +295,45 @@ static int test_iterate_slots_extents(struct bch_fs *c, u64 nr)
                ret = bch2_btree_insert(c, BTREE_ID_extents, &ck.k_i, NULL, 0);
                bch_err_msg(c, ret, "insert error");
                if (ret)
-                       goto err;
+                       return ret;
        }
 
        pr_info("iterating forwards");
-
        i = 0;
 
-       ret = for_each_btree_key2_upto(trans, iter, BTREE_ID_extents,
-                                 SPOS(0, 0, U32_MAX), POS(0, U64_MAX),
-                                 0, k, ({
-               BUG_ON(bkey_start_offset(k.k) != i + 8);
-               BUG_ON(k.k->size != 8);
-               i += 16;
-               0;
-       }));
+       ret = bch2_trans_run(c,
+               for_each_btree_key_upto(trans, iter, BTREE_ID_extents,
+                                       SPOS(0, 0, U32_MAX), POS(0, U64_MAX),
+                                       0, k, ({
+                       BUG_ON(bkey_start_offset(k.k) != i + 8);
+                       BUG_ON(k.k->size != 8);
+                       i += 16;
+                       0;
+               })));
        bch_err_msg(c, ret, "error iterating forwards");
        if (ret)
-               goto err;
+               return ret;
 
        BUG_ON(i != nr);
 
        pr_info("iterating forwards by slots");
-
        i = 0;
 
-       ret = for_each_btree_key2_upto(trans, iter, BTREE_ID_extents,
-                                SPOS(0, 0, U32_MAX), POS(0, U64_MAX),
-                                BTREE_ITER_SLOTS, k, ({
-               if (i == nr)
-                       break;
-               BUG_ON(bkey_deleted(k.k) != !(i % 16));
+       ret = bch2_trans_run(c,
+               for_each_btree_key_upto(trans, iter, BTREE_ID_extents,
+                                       SPOS(0, 0, U32_MAX), POS(0, U64_MAX),
+                                       BTREE_ITER_SLOTS, k, ({
+                       if (i == nr)
+                               break;
+                       BUG_ON(bkey_deleted(k.k) != !(i % 16));
 
-               BUG_ON(bkey_start_offset(k.k) != i);
-               BUG_ON(k.k->size != 8);
-               i = k.k->p.offset;
-               0;
-       }));
+                       BUG_ON(bkey_start_offset(k.k) != i);
+                       BUG_ON(k.k->size != 8);
+                       i = k.k->p.offset;
+                       0;
+               })));
        bch_err_msg(c, ret, "error iterating forwards by slots");
-       if (ret)
-               goto err;
-       ret = 0;
-err:
-       bch2_trans_put(trans);
-       return 0;
+       return ret;
 }
 
 /*
@@ -736,8 +707,6 @@ static int rand_delete(struct bch_fs *c, u64 nr)
 
 static int seq_insert(struct bch_fs *c, u64 nr)
 {
-       struct btree_iter iter;
-       struct bkey_s_c k;
        struct bkey_i_cookie insert;
 
        bkey_cookie_init(&insert.k_i);
@@ -756,11 +725,8 @@ static int seq_insert(struct bch_fs *c, u64 nr)
 
 static int seq_lookup(struct bch_fs *c, u64 nr)
 {
-       struct btree_iter iter;
-       struct bkey_s_c k;
-
        return bch2_trans_run(c,
-               for_each_btree_key2_upto(trans, iter, BTREE_ID_xattrs,
+               for_each_btree_key_upto(trans, iter, BTREE_ID_xattrs,
                                  SPOS(0, 0, U32_MAX), POS(0, U64_MAX),
                                  0, k,
                0));
@@ -768,9 +734,6 @@ static int seq_lookup(struct bch_fs *c, u64 nr)
 
 static int seq_overwrite(struct bch_fs *c, u64 nr)
 {
-       struct btree_iter iter;
-       struct bkey_s_c k;
-
        return bch2_trans_run(c,
                for_each_btree_key_commit(trans, iter, BTREE_ID_xattrs,
                                        SPOS(0, 0, U32_MAX),