summaryrefslogtreecommitdiff
path: root/libbcachefs/tests.c
diff options
context:
space:
mode:
Diffstat (limited to 'libbcachefs/tests.c')
-rw-r--r--libbcachefs/tests.c121
1 files changed, 74 insertions, 47 deletions
diff --git a/libbcachefs/tests.c b/libbcachefs/tests.c
index c9362af..a7b6fef 100644
--- a/libbcachefs/tests.c
+++ b/libbcachefs/tests.c
@@ -88,11 +88,14 @@ static void test_delete_written(struct bch_fs *c, u64 nr)
static void test_iterate(struct bch_fs *c, u64 nr)
{
- struct btree_iter iter;
+ struct btree_trans trans;
+ struct btree_iter *iter;
struct bkey_s_c k;
u64 i;
int ret;
+ bch2_trans_init(&trans, c);
+
delete_test_keys(c);
pr_info("inserting test keys");
@@ -112,28 +115,31 @@ static void test_iterate(struct bch_fs *c, u64 nr)
i = 0;
- for_each_btree_key(&iter, c, BTREE_ID_DIRENTS, POS(0, 0), 0, k)
+ for_each_btree_key(&trans, iter, BTREE_ID_DIRENTS, POS(0, 0), 0, k)
BUG_ON(k.k->p.offset != i++);
- bch2_btree_iter_unlock(&iter);
BUG_ON(i != nr);
pr_info("iterating backwards");
- while (!IS_ERR_OR_NULL((k = bch2_btree_iter_prev(&iter)).k))
+ while (!IS_ERR_OR_NULL((k = bch2_btree_iter_prev(iter)).k))
BUG_ON(k.k->p.offset != --i);
- bch2_btree_iter_unlock(&iter);
BUG_ON(i);
+
+ bch2_trans_exit(&trans);
}
static void test_iterate_extents(struct bch_fs *c, u64 nr)
{
- struct btree_iter iter;
+ struct btree_trans trans;
+ struct btree_iter *iter;
struct bkey_s_c k;
u64 i;
int ret;
+ bch2_trans_init(&trans, c);
+
delete_test_keys(c);
pr_info("inserting test extents");
@@ -154,32 +160,35 @@ static void test_iterate_extents(struct bch_fs *c, u64 nr)
i = 0;
- for_each_btree_key(&iter, c, BTREE_ID_EXTENTS, POS(0, 0), 0, k) {
+ for_each_btree_key(&trans, iter, BTREE_ID_EXTENTS, POS(0, 0), 0, k) {
BUG_ON(bkey_start_offset(k.k) != i);
i = k.k->p.offset;
}
- bch2_btree_iter_unlock(&iter);
BUG_ON(i != nr);
pr_info("iterating backwards");
- while (!IS_ERR_OR_NULL((k = bch2_btree_iter_prev(&iter)).k)) {
+ while (!IS_ERR_OR_NULL((k = bch2_btree_iter_prev(iter)).k)) {
BUG_ON(k.k->p.offset != i);
i = bkey_start_offset(k.k);
}
- bch2_btree_iter_unlock(&iter);
BUG_ON(i);
+
+ bch2_trans_exit(&trans);
}
static void test_iterate_slots(struct bch_fs *c, u64 nr)
{
- struct btree_iter iter;
+ struct btree_trans trans;
+ struct btree_iter *iter;
struct bkey_s_c k;
u64 i;
int ret;
+ bch2_trans_init(&trans, c);
+
delete_test_keys(c);
pr_info("inserting test keys");
@@ -199,11 +208,11 @@ static void test_iterate_slots(struct bch_fs *c, u64 nr)
i = 0;
- for_each_btree_key(&iter, c, BTREE_ID_DIRENTS, POS(0, 0), 0, k) {
+ for_each_btree_key(&trans, iter, BTREE_ID_DIRENTS, POS(0, 0), 0, k) {
BUG_ON(k.k->p.offset != i);
i += 2;
}
- bch2_btree_iter_unlock(&iter);
+ bch2_trans_iter_free(&trans, iter);
BUG_ON(i != nr * 2);
@@ -211,7 +220,7 @@ static void test_iterate_slots(struct bch_fs *c, u64 nr)
i = 0;
- for_each_btree_key(&iter, c, BTREE_ID_DIRENTS, POS(0, 0),
+ for_each_btree_key(&trans, iter, BTREE_ID_DIRENTS, POS(0, 0),
BTREE_ITER_SLOTS, k) {
BUG_ON(bkey_deleted(k.k) != (i & 1));
BUG_ON(k.k->p.offset != i++);
@@ -219,16 +228,20 @@ static void test_iterate_slots(struct bch_fs *c, u64 nr)
if (i == nr * 2)
break;
}
- bch2_btree_iter_unlock(&iter);
+
+ bch2_trans_exit(&trans);
}
static void test_iterate_slots_extents(struct bch_fs *c, u64 nr)
{
- struct btree_iter iter;
+ struct btree_trans trans;
+ struct btree_iter *iter;
struct bkey_s_c k;
u64 i;
int ret;
+ bch2_trans_init(&trans, c);
+
delete_test_keys(c);
pr_info("inserting test keys");
@@ -249,12 +262,12 @@ static void test_iterate_slots_extents(struct bch_fs *c, u64 nr)
i = 0;
- for_each_btree_key(&iter, c, BTREE_ID_EXTENTS, POS(0, 0), 0, k) {
+ for_each_btree_key(&trans, iter, BTREE_ID_EXTENTS, POS(0, 0), 0, k) {
BUG_ON(bkey_start_offset(k.k) != i + 8);
BUG_ON(k.k->size != 8);
i += 16;
}
- bch2_btree_iter_unlock(&iter);
+ bch2_trans_iter_free(&trans, iter);
BUG_ON(i != nr);
@@ -262,7 +275,7 @@ static void test_iterate_slots_extents(struct bch_fs *c, u64 nr)
i = 0;
- for_each_btree_key(&iter, c, BTREE_ID_EXTENTS, POS(0, 0),
+ for_each_btree_key(&trans, iter, BTREE_ID_EXTENTS, POS(0, 0),
BTREE_ITER_SLOTS, k) {
BUG_ON(bkey_deleted(k.k) != !(i % 16));
@@ -273,7 +286,8 @@ static void test_iterate_slots_extents(struct bch_fs *c, u64 nr)
if (i == nr)
break;
}
- bch2_btree_iter_unlock(&iter);
+
+ bch2_trans_exit(&trans);
}
/*
@@ -282,34 +296,40 @@ static void test_iterate_slots_extents(struct bch_fs *c, u64 nr)
*/
static void test_peek_end(struct bch_fs *c, u64 nr)
{
- struct btree_iter iter;
+ struct btree_trans trans;
+ struct btree_iter *iter;
struct bkey_s_c k;
- bch2_btree_iter_init(&iter, c, BTREE_ID_DIRENTS, POS_MIN, 0);
+ bch2_trans_init(&trans, c);
+
+ iter = bch2_trans_get_iter(&trans, BTREE_ID_DIRENTS, POS_MIN, 0);
- k = bch2_btree_iter_peek(&iter);
+ k = bch2_btree_iter_peek(iter);
BUG_ON(k.k);
- k = bch2_btree_iter_peek(&iter);
+ k = bch2_btree_iter_peek(iter);
BUG_ON(k.k);
- bch2_btree_iter_unlock(&iter);
+ bch2_trans_exit(&trans);
}
static void test_peek_end_extents(struct bch_fs *c, u64 nr)
{
- struct btree_iter iter;
+ struct btree_trans trans;
+ struct btree_iter *iter;
struct bkey_s_c k;
- bch2_btree_iter_init(&iter, c, BTREE_ID_EXTENTS, POS_MIN, 0);
+ bch2_trans_init(&trans, c);
+
+ iter = bch2_trans_get_iter(&trans, BTREE_ID_EXTENTS, POS_MIN, 0);
- k = bch2_btree_iter_peek(&iter);
+ k = bch2_btree_iter_peek(iter);
BUG_ON(k.k);
- k = bch2_btree_iter_peek(&iter);
+ k = bch2_btree_iter_peek(iter);
BUG_ON(k.k);
- bch2_btree_iter_unlock(&iter);
+ bch2_trans_exit(&trans);
}
/* extent unit tests */
@@ -400,32 +420,35 @@ static void rand_insert(struct bch_fs *c, u64 nr)
static void rand_lookup(struct bch_fs *c, u64 nr)
{
+ struct btree_trans trans;
+ struct btree_iter *iter;
+ struct bkey_s_c k;
u64 i;
- for (i = 0; i < nr; i++) {
- struct btree_iter iter;
- struct bkey_s_c k;
+ bch2_trans_init(&trans, c);
- bch2_btree_iter_init(&iter, c, BTREE_ID_DIRENTS,
- POS(0, test_rand()), 0);
+ for (i = 0; i < nr; i++) {
+ iter = bch2_trans_get_iter(&trans, BTREE_ID_DIRENTS,
+ POS(0, test_rand()), 0);
- k = bch2_btree_iter_peek(&iter);
- bch2_btree_iter_unlock(&iter);
+ k = bch2_btree_iter_peek(iter);
+ bch2_trans_iter_free(&trans, iter);
}
+
+ bch2_trans_exit(&trans);
}
static void rand_mixed(struct bch_fs *c, u64 nr)
{
+ struct btree_trans trans;
+ struct btree_iter *iter;
+ struct bkey_s_c k;
int ret;
u64 i;
- for (i = 0; i < nr; i++) {
- struct btree_trans trans;
- struct btree_iter *iter;
- struct bkey_s_c k;
-
- bch2_trans_init(&trans, c);
+ bch2_trans_init(&trans, c);
+ for (i = 0; i < nr; i++) {
iter = bch2_trans_get_iter(&trans, BTREE_ID_DIRENTS,
POS(0, test_rand()), 0);
@@ -442,9 +465,10 @@ static void rand_mixed(struct bch_fs *c, u64 nr)
BUG_ON(ret);
}
- bch2_trans_exit(&trans);
+ bch2_trans_iter_free(&trans, iter);
}
+ bch2_trans_exit(&trans);
}
static void rand_delete(struct bch_fs *c, u64 nr)
@@ -494,12 +518,15 @@ static void seq_insert(struct bch_fs *c, u64 nr)
static void seq_lookup(struct bch_fs *c, u64 nr)
{
- struct btree_iter iter;
+ struct btree_trans trans;
+ struct btree_iter *iter;
struct bkey_s_c k;
- for_each_btree_key(&iter, c, BTREE_ID_DIRENTS, POS_MIN, 0, k)
+ bch2_trans_init(&trans, c);
+
+ for_each_btree_key(&trans, iter, BTREE_ID_DIRENTS, POS_MIN, 0, k)
;
- bch2_btree_iter_unlock(&iter);
+ bch2_trans_exit(&trans);
}
static void seq_overwrite(struct bch_fs *c, u64 nr)