summaryrefslogtreecommitdiff
path: root/libbcachefs/tests.c
diff options
context:
space:
mode:
Diffstat (limited to 'libbcachefs/tests.c')
-rw-r--r--libbcachefs/tests.c198
1 files changed, 87 insertions, 111 deletions
diff --git a/libbcachefs/tests.c b/libbcachefs/tests.c
index 782a05fe..ea27df30 100644
--- a/libbcachefs/tests.c
+++ b/libbcachefs/tests.c
@@ -31,7 +31,7 @@ static void delete_test_keys(struct bch_fs *c)
static int test_delete(struct bch_fs *c, u64 nr)
{
- struct btree_trans *trans = bch2_trans_get(c);
+ CLASS(btree_trans, trans)(c);
struct btree_iter iter;
struct bkey_i_cookie k;
int ret;
@@ -66,13 +66,12 @@ static int test_delete(struct bch_fs *c, u64 nr)
goto err;
err:
bch2_trans_iter_exit(trans, &iter);
- bch2_trans_put(trans);
return ret;
}
static int test_delete_written(struct bch_fs *c, u64 nr)
{
- struct btree_trans *trans = bch2_trans_get(c);
+ CLASS(btree_trans, trans)(c);
struct btree_iter iter;
struct bkey_i_cookie k;
int ret;
@@ -101,7 +100,6 @@ static int test_delete_written(struct bch_fs *c, u64 nr)
goto err;
err:
bch2_trans_iter_exit(trans, &iter);
- bch2_trans_put(trans);
return ret;
}
@@ -130,13 +128,14 @@ static int test_iterate(struct bch_fs *c, u64 nr)
pr_info("iterating forwards");
i = 0;
- ret = bch2_trans_run(c,
- for_each_btree_key_max(trans, iter, BTREE_ID_xattrs,
- SPOS(0, 0, U32_MAX), POS(0, U64_MAX),
- 0, k, ({
+ CLASS(btree_trans, trans)(c);
+
+ ret = for_each_btree_key_max(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)
return ret;
@@ -145,12 +144,11 @@ static int test_iterate(struct bch_fs *c, u64 nr)
pr_info("iterating backwards");
- ret = bch2_trans_run(c,
- for_each_btree_key_reverse(trans, iter, BTREE_ID_xattrs,
+ ret = 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)
return ret;
@@ -185,14 +183,15 @@ static int test_iterate_extents(struct bch_fs *c, u64 nr)
pr_info("iterating forwards");
i = 0;
- ret = bch2_trans_run(c,
- for_each_btree_key_max(trans, iter, BTREE_ID_extents,
- SPOS(0, 0, U32_MAX), POS(0, U64_MAX),
- 0, k, ({
+ CLASS(btree_trans, trans)(c);
+
+ ret = for_each_btree_key_max(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)
return ret;
@@ -201,13 +200,12 @@ static int test_iterate_extents(struct bch_fs *c, u64 nr)
pr_info("iterating backwards");
- ret = bch2_trans_run(c,
- for_each_btree_key_reverse(trans, iter, BTREE_ID_extents,
+ ret = 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)
return ret;
@@ -241,14 +239,15 @@ static int test_iterate_slots(struct bch_fs *c, u64 nr)
pr_info("iterating forwards");
i = 0;
- ret = bch2_trans_run(c,
- for_each_btree_key_max(trans, iter, BTREE_ID_xattrs,
- SPOS(0, 0, U32_MAX), POS(0, U64_MAX),
- 0, k, ({
+ CLASS(btree_trans, trans)(c);
+
+ ret = for_each_btree_key_max(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)
return ret;
@@ -258,10 +257,9 @@ static int test_iterate_slots(struct bch_fs *c, u64 nr)
pr_info("iterating forwards by slots");
i = 0;
- ret = bch2_trans_run(c,
- for_each_btree_key_max(trans, iter, BTREE_ID_xattrs,
- SPOS(0, 0, U32_MAX), POS(0, U64_MAX),
- BTREE_ITER_slots, k, ({
+ ret = for_each_btree_key_max(trans, iter, BTREE_ID_xattrs,
+ SPOS(0, 0, U32_MAX), POS(0, U64_MAX),
+ BTREE_ITER_slots, k, ({
if (i >= nr * 2)
break;
@@ -270,7 +268,7 @@ static int test_iterate_slots(struct bch_fs *c, u64 nr)
i++;
0;
- })));
+ }));
bch_err_msg(c, ret, "error iterating forwards by slots");
return ret;
}
@@ -301,15 +299,16 @@ static int test_iterate_slots_extents(struct bch_fs *c, u64 nr)
pr_info("iterating forwards");
i = 0;
- ret = bch2_trans_run(c,
- for_each_btree_key_max(trans, iter, BTREE_ID_extents,
- SPOS(0, 0, U32_MAX), POS(0, U64_MAX),
- 0, k, ({
+ CLASS(btree_trans, trans)(c);
+
+ ret = for_each_btree_key_max(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)
return ret;
@@ -319,10 +318,9 @@ static int test_iterate_slots_extents(struct bch_fs *c, u64 nr)
pr_info("iterating forwards by slots");
i = 0;
- ret = bch2_trans_run(c,
- for_each_btree_key_max(trans, iter, BTREE_ID_extents,
- SPOS(0, 0, U32_MAX), POS(0, U64_MAX),
- BTREE_ITER_slots, k, ({
+ ret = for_each_btree_key_max(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));
@@ -331,7 +329,7 @@ static int test_iterate_slots_extents(struct bch_fs *c, u64 nr)
BUG_ON(k.k->size != 8);
i = k.k->p.offset;
0;
- })));
+ }));
bch_err_msg(c, ret, "error iterating forwards by slots");
return ret;
}
@@ -344,7 +342,7 @@ static int test_peek_end(struct bch_fs *c, u64 nr)
{
delete_test_keys(c);
- struct btree_trans *trans = bch2_trans_get(c);
+ CLASS(btree_trans, trans)(c);
struct btree_iter iter;
struct bkey_s_c k;
@@ -358,7 +356,6 @@ static int test_peek_end(struct bch_fs *c, u64 nr)
BUG_ON(k.k);
bch2_trans_iter_exit(trans, &iter);
- bch2_trans_put(trans);
return 0;
}
@@ -366,7 +363,7 @@ static int test_peek_end_extents(struct bch_fs *c, u64 nr)
{
delete_test_keys(c);
- struct btree_trans *trans = bch2_trans_get(c);
+ CLASS(btree_trans, trans)(c);
struct btree_iter iter;
struct bkey_s_c k;
@@ -380,7 +377,6 @@ static int test_peek_end_extents(struct bch_fs *c, u64 nr)
BUG_ON(k.k);
bch2_trans_iter_exit(trans, &iter);
- bch2_trans_put(trans);
return 0;
}
@@ -392,15 +388,13 @@ static int insert_test_extent(struct bch_fs *c,
u64 start, u64 end)
{
struct bkey_i_cookie k;
- int ret;
-
bkey_cookie_init(&k.k_i);
k.k_i.k.p.offset = end;
k.k_i.k.p.snapshot = U32_MAX;
k.k_i.k.size = end - start;
k.k_i.k.bversion.lo = test_version++;
- ret = bch2_btree_insert(c, BTREE_ID_extents, &k.k_i, NULL, 0, 0);
+ int ret = bch2_btree_insert(c, BTREE_ID_extents, &k.k_i, NULL, 0, 0);
bch_err_fn(c, ret);
return ret;
}
@@ -446,15 +440,14 @@ static int test_extent_overwrite_all(struct bch_fs *c, u64 nr)
static int insert_test_overlapping_extent(struct bch_fs *c, u64 inum, u64 start, u32 len, u32 snapid)
{
struct bkey_i_cookie k;
- int ret;
-
bkey_cookie_init(&k.k_i);
k.k_i.k.p.inode = inum;
k.k_i.k.p.offset = start + len;
k.k_i.k.p.snapshot = snapid;
k.k_i.k.size = len;
- ret = bch2_trans_commit_do(c, NULL, NULL, 0,
+ CLASS(btree_trans, trans)(c);
+ int ret = commit_do(trans, NULL, NULL, 0,
bch2_btree_insert_nonextent(trans, BTREE_ID_extents, &k.k_i,
BTREE_UPDATE_internal_snapshot_node));
bch_err_fn(c, ret);
@@ -477,7 +470,6 @@ static int test_extent_create_overlapping(struct bch_fs *c, u64 inum)
/* Test skipping over keys in unrelated snapshots: */
static int test_snapshot_filter(struct bch_fs *c, u32 snapid_lo, u32 snapid_hi)
{
- struct btree_trans *trans;
struct btree_iter iter;
struct bkey_s_c k;
struct bkey_i_cookie cookie;
@@ -489,7 +481,7 @@ static int test_snapshot_filter(struct bch_fs *c, u32 snapid_lo, u32 snapid_hi)
if (ret)
return ret;
- trans = bch2_trans_get(c);
+ CLASS(btree_trans, trans)(c);
bch2_trans_iter_init(trans, &iter, BTREE_ID_xattrs,
SPOS(0, 0, snapid_lo), 0);
lockrestart_do(trans, bkey_err(k = bch2_btree_iter_peek_max(trans, &iter, POS(0, U64_MAX))));
@@ -497,28 +489,28 @@ static int test_snapshot_filter(struct bch_fs *c, u32 snapid_lo, u32 snapid_hi)
BUG_ON(k.k->p.snapshot != U32_MAX);
bch2_trans_iter_exit(trans, &iter);
- bch2_trans_put(trans);
return ret;
}
static int test_snapshots(struct bch_fs *c, u64 nr)
{
struct bkey_i_cookie cookie;
- u32 snapids[2];
- u32 snapid_subvols[2] = { 1, 1 };
- int ret;
-
bkey_cookie_init(&cookie.k_i);
cookie.k.p.snapshot = U32_MAX;
- ret = bch2_btree_insert(c, BTREE_ID_xattrs, &cookie.k_i, NULL, 0, 0);
+
+ int ret = bch2_btree_insert(c, BTREE_ID_xattrs, &cookie.k_i, NULL, 0, 0);
if (ret)
return ret;
- ret = bch2_trans_commit_do(c, NULL, NULL, 0,
- bch2_snapshot_node_create(trans, U32_MAX,
- snapids,
- snapid_subvols,
- 2));
+ u32 snapids[2];
+ u32 snapid_subvols[2] = { 1, 1 };
+
+ CLASS(btree_trans, trans)(c);
+ ret = commit_do(trans, NULL, NULL, 0,
+ bch2_snapshot_node_create(trans, U32_MAX,
+ snapids,
+ snapid_subvols,
+ 2));
if (ret)
return ret;
@@ -542,42 +534,37 @@ static u64 test_rand(void)
static int rand_insert(struct bch_fs *c, u64 nr)
{
- struct btree_trans *trans = bch2_trans_get(c);
- struct bkey_i_cookie k;
- int ret = 0;
- u64 i;
+ CLASS(btree_trans, trans)(c);
- for (i = 0; i < nr; i++) {
+ for (u64 i = 0; i < nr; i++) {
+ struct bkey_i_cookie k;
bkey_cookie_init(&k.k_i);
k.k.p.offset = test_rand();
k.k.p.snapshot = U32_MAX;
- ret = commit_do(trans, NULL, NULL, 0,
+ int ret = commit_do(trans, NULL, NULL, 0,
bch2_btree_insert_trans(trans, BTREE_ID_xattrs, &k.k_i, 0));
if (ret)
- break;
+ return ret;
}
- bch2_trans_put(trans);
- return ret;
+ return 0;
}
static int rand_insert_multi(struct bch_fs *c, u64 nr)
{
- struct btree_trans *trans = bch2_trans_get(c);
+ CLASS(btree_trans, trans)(c);
struct bkey_i_cookie k[8];
- int ret = 0;
unsigned j;
- u64 i;
- for (i = 0; i < nr; i += ARRAY_SIZE(k)) {
+ for (u64 i = 0; i < nr; i += ARRAY_SIZE(k)) {
for (j = 0; j < ARRAY_SIZE(k); j++) {
bkey_cookie_init(&k[j].k_i);
k[j].k.p.offset = test_rand();
k[j].k.p.snapshot = U32_MAX;
}
- ret = commit_do(trans, NULL, NULL, 0,
+ int ret = commit_do(trans, NULL, NULL, 0,
bch2_btree_insert_trans(trans, BTREE_ID_xattrs, &k[0].k_i, 0) ?:
bch2_btree_insert_trans(trans, BTREE_ID_xattrs, &k[1].k_i, 0) ?:
bch2_btree_insert_trans(trans, BTREE_ID_xattrs, &k[2].k_i, 0) ?:
@@ -587,25 +574,23 @@ static int rand_insert_multi(struct bch_fs *c, u64 nr)
bch2_btree_insert_trans(trans, BTREE_ID_xattrs, &k[6].k_i, 0) ?:
bch2_btree_insert_trans(trans, BTREE_ID_xattrs, &k[7].k_i, 0));
if (ret)
- break;
+ return ret;
}
- bch2_trans_put(trans);
- return ret;
+ return 0;
}
static int rand_lookup(struct bch_fs *c, u64 nr)
{
- struct btree_trans *trans = bch2_trans_get(c);
+ CLASS(btree_trans, trans)(c);
struct btree_iter iter;
struct bkey_s_c k;
int ret = 0;
- u64 i;
bch2_trans_iter_init(trans, &iter, BTREE_ID_xattrs,
SPOS(0, 0, U32_MAX), 0);
- for (i = 0; i < nr; i++) {
+ for (u64 i = 0; i < nr; i++) {
bch2_btree_iter_set_pos(trans, &iter, SPOS(0, test_rand(), U32_MAX));
lockrestart_do(trans, bkey_err(k = bch2_btree_iter_peek(trans, &iter)));
@@ -615,7 +600,6 @@ static int rand_lookup(struct bch_fs *c, u64 nr)
}
bch2_trans_iter_exit(trans, &iter);
- bch2_trans_put(trans);
return ret;
}
@@ -646,17 +630,16 @@ static int rand_mixed_trans(struct btree_trans *trans,
static int rand_mixed(struct bch_fs *c, u64 nr)
{
- struct btree_trans *trans = bch2_trans_get(c);
+ CLASS(btree_trans, trans)(c);
struct btree_iter iter;
struct bkey_i_cookie cookie;
int ret = 0;
- u64 i, rand;
bch2_trans_iter_init(trans, &iter, BTREE_ID_xattrs,
SPOS(0, 0, U32_MAX), 0);
- for (i = 0; i < nr; i++) {
- rand = test_rand();
+ for (u64 i = 0; i < nr; i++) {
+ u64 rand = test_rand();
ret = commit_do(trans, NULL, NULL, 0,
rand_mixed_trans(trans, &iter, &cookie, i, rand));
if (ret)
@@ -664,7 +647,6 @@ static int rand_mixed(struct bch_fs *c, u64 nr)
}
bch2_trans_iter_exit(trans, &iter);
- bch2_trans_put(trans);
return ret;
}
@@ -692,31 +674,27 @@ err:
static int rand_delete(struct bch_fs *c, u64 nr)
{
- struct btree_trans *trans = bch2_trans_get(c);
- int ret = 0;
- u64 i;
+ CLASS(btree_trans, trans)(c);
- for (i = 0; i < nr; i++) {
+ for (u64 i = 0; i < nr; i++) {
struct bpos pos = SPOS(0, test_rand(), U32_MAX);
- ret = commit_do(trans, NULL, NULL, 0,
+ int ret = commit_do(trans, NULL, NULL, 0,
__do_delete(trans, pos));
if (ret)
- break;
+ return ret;
}
- bch2_trans_put(trans);
- return ret;
+ return 0;
}
static int seq_insert(struct bch_fs *c, u64 nr)
{
struct bkey_i_cookie insert;
-
bkey_cookie_init(&insert.k_i);
- return bch2_trans_run(c,
- for_each_btree_key_commit(trans, iter, BTREE_ID_xattrs,
+ CLASS(btree_trans, trans)(c);
+ return for_each_btree_key_commit(trans, iter, BTREE_ID_xattrs,
SPOS(0, 0, U32_MAX),
BTREE_ITER_slots|BTREE_ITER_intent, k,
NULL, NULL, 0, ({
@@ -724,22 +702,22 @@ static int seq_insert(struct bch_fs *c, u64 nr)
break;
insert.k.p = iter.pos;
bch2_trans_update(trans, &iter, &insert.k_i, 0);
- })));
+ }));
}
static int seq_lookup(struct bch_fs *c, u64 nr)
{
- return bch2_trans_run(c,
- for_each_btree_key_max(trans, iter, BTREE_ID_xattrs,
+ CLASS(btree_trans, trans)(c);
+ return for_each_btree_key_max(trans, iter, BTREE_ID_xattrs,
SPOS(0, 0, U32_MAX), POS(0, U64_MAX),
0, k,
- 0));
+ 0);
}
static int seq_overwrite(struct bch_fs *c, u64 nr)
{
- return bch2_trans_run(c,
- for_each_btree_key_commit(trans, iter, BTREE_ID_xattrs,
+ CLASS(btree_trans, trans)(c);
+ return for_each_btree_key_commit(trans, iter, BTREE_ID_xattrs,
SPOS(0, 0, U32_MAX),
BTREE_ITER_intent, k,
NULL, NULL, 0, ({
@@ -747,7 +725,7 @@ static int seq_overwrite(struct bch_fs *c, u64 nr)
bkey_reassemble(&u.k_i, k);
bch2_trans_update(trans, &iter, &u.k_i, 0);
- })));
+ }));
}
static int seq_delete(struct bch_fs *c, u64 nr)
@@ -808,8 +786,8 @@ int bch2_btree_perf_test(struct bch_fs *c, const char *testname,
{
struct test_job j = { .c = c, .nr = nr, .nr_threads = nr_threads };
char name_buf[20];
- struct printbuf nr_buf = PRINTBUF;
- struct printbuf per_sec_buf = PRINTBUF;
+ CLASS(printbuf, nr_buf)();
+ CLASS(printbuf, per_sec_buf)();
unsigned i;
u64 time;
@@ -883,8 +861,6 @@ int bch2_btree_perf_test(struct bch_fs *c, const char *testname,
div_u64(time, NSEC_PER_SEC),
div_u64(time * nr_threads, nr),
per_sec_buf.buf);
- printbuf_exit(&per_sec_buf);
- printbuf_exit(&nr_buf);
return j.ret;
}