summaryrefslogtreecommitdiff
path: root/fs/bcachefs/tests.c
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@gmail.com>2020-02-26 23:39:46 +0300
committerKent Overstreet <kent.overstreet@linux.dev>2023-10-23 00:08:35 +0300
commit163e885a0aee99657b3819ead6c3390271ed0980 (patch)
tree6656ed38b87b7d7b27f716d0de2ca62c09faa9fe /fs/bcachefs/tests.c
parentac7c51b2180e757feaaabcb84794bcc9912a4edf (diff)
downloadlinux-163e885a0aee99657b3819ead6c3390271ed0980.tar.xz
bcachefs: Kill TRANS_RESET_MEM|TRANS_RESET_ITERS
All iterators should be released now with bch2_trans_iter_put(), so TRANS_RESET_ITERS shouldn't be needed anymore, and TRANS_RESET_MEM is always used. Also convert more code to __bch2_trans_do(). Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com> Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
Diffstat (limited to 'fs/bcachefs/tests.c')
-rw-r--r--fs/bcachefs/tests.c73
1 files changed, 56 insertions, 17 deletions
diff --git a/fs/bcachefs/tests.c b/fs/bcachefs/tests.c
index 8ef7bc8098d7..876d64bfca20 100644
--- a/fs/bcachefs/tests.c
+++ b/fs/bcachefs/tests.c
@@ -43,8 +43,8 @@ static void test_delete(struct bch_fs *c, u64 nr)
ret = bch2_btree_iter_traverse(iter);
BUG_ON(ret);
- bch2_trans_update(&trans, iter, &k.k_i, 0);
- ret = bch2_trans_commit(&trans, NULL, NULL, 0);
+ ret = __bch2_trans_do(&trans, NULL, NULL, 0,
+ bch2_trans_update(&trans, iter, &k.k_i, 0));
BUG_ON(ret);
pr_info("deleting once");
@@ -75,8 +75,8 @@ static void test_delete_written(struct bch_fs *c, u64 nr)
ret = bch2_btree_iter_traverse(iter);
BUG_ON(ret);
- bch2_trans_update(&trans, iter, &k.k_i, 0);
- ret = bch2_trans_commit(&trans, NULL, NULL, 0);
+ ret = __bch2_trans_do(&trans, NULL, NULL, 0,
+ bch2_trans_update(&trans, iter, &k.k_i, 0));
BUG_ON(ret);
bch2_journal_flush_all_pins(&c->journal);
@@ -409,18 +409,24 @@ static u64 test_rand(void)
static void rand_insert(struct bch_fs *c, u64 nr)
{
+ struct btree_trans trans;
struct bkey_i_cookie k;
int ret;
u64 i;
+ bch2_trans_init(&trans, c, 0, 0);
+
for (i = 0; i < nr; i++) {
bkey_cookie_init(&k.k_i);
k.k.p.offset = test_rand();
- ret = bch2_btree_insert(c, BTREE_ID_DIRENTS, &k.k_i,
- NULL, NULL, 0);
+ ret = __bch2_trans_do(&trans, NULL, NULL, 0,
+ __bch2_btree_insert(&trans, BTREE_ID_DIRENTS, &k.k_i));
+
BUG_ON(ret);
}
+
+ bch2_trans_exit(&trans);
}
static void rand_lookup(struct bch_fs *c, u64 nr)
@@ -465,8 +471,9 @@ static void rand_mixed(struct bch_fs *c, u64 nr)
bkey_cookie_init(&k.k_i);
k.k.p = iter->pos;
- bch2_trans_update(&trans, iter, &k.k_i, 0);
- ret = bch2_trans_commit(&trans, NULL, NULL, 0);
+ ret = __bch2_trans_do(&trans, NULL, NULL, 0,
+ bch2_trans_update(&trans, iter, &k.k_i, 0));
+
BUG_ON(ret);
}
@@ -476,20 +483,50 @@ static void rand_mixed(struct bch_fs *c, u64 nr)
bch2_trans_exit(&trans);
}
+static int __do_delete(struct btree_trans *trans, struct bpos pos)
+{
+ struct btree_iter *iter;
+ struct bkey_i delete;
+ struct bkey_s_c k;
+ int ret = 0;
+
+ iter = bch2_trans_get_iter(trans, BTREE_ID_DIRENTS, pos,
+ BTREE_ITER_INTENT);
+ ret = PTR_ERR_OR_ZERO(iter);
+ if (ret)
+ goto err;
+
+ k = bch2_btree_iter_peek(iter);
+ ret = bkey_err(k);
+ if (ret)
+ goto err;
+
+ bkey_init(&delete.k);
+ delete.k.p = k.k->p;
+
+ bch2_trans_update(trans, iter, &delete, 0);
+err:
+ bch2_trans_iter_put(trans, iter);
+ return ret;
+}
+
static void rand_delete(struct bch_fs *c, u64 nr)
{
- struct bkey_i k;
+ struct btree_trans trans;
int ret;
u64 i;
+ bch2_trans_init(&trans, c, 0, 0);
+
for (i = 0; i < nr; i++) {
- bkey_init(&k.k);
- k.k.p.offset = test_rand();
+ struct bpos pos = POS(0, test_rand());
- ret = bch2_btree_insert(c, BTREE_ID_DIRENTS, &k,
- NULL, NULL, 0);
+ ret = __bch2_trans_do(&trans, NULL, NULL, 0,
+ __do_delete(&trans, pos));
BUG_ON(ret);
}
+
+ bch2_trans_exit(&trans);
}
static void seq_insert(struct bch_fs *c, u64 nr)
@@ -509,8 +546,9 @@ static void seq_insert(struct bch_fs *c, u64 nr)
BTREE_ITER_SLOTS|BTREE_ITER_INTENT, k, ret) {
insert.k.p = iter->pos;
- bch2_trans_update(&trans, iter, &insert.k_i, 0);
- ret = bch2_trans_commit(&trans, NULL, NULL, 0);
+ ret = __bch2_trans_do(&trans, NULL, NULL, 0,
+ bch2_trans_update(&trans, iter, &insert.k_i, 0));
+
BUG_ON(ret);
if (++i == nr)
@@ -548,8 +586,9 @@ static void seq_overwrite(struct bch_fs *c, u64 nr)
bkey_reassemble(&u.k_i, k);
- bch2_trans_update(&trans, iter, &u.k_i, 0);
- ret = bch2_trans_commit(&trans, NULL, NULL, 0);
+ ret = __bch2_trans_do(&trans, NULL, NULL, 0,
+ bch2_trans_update(&trans, iter, &u.k_i, 0));
+
BUG_ON(ret);
}
bch2_trans_exit(&trans);