diff options
author | Kent Overstreet <kent.overstreet@gmail.com> | 2020-02-26 23:39:46 +0300 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@linux.dev> | 2023-10-23 00:08:35 +0300 |
commit | 163e885a0aee99657b3819ead6c3390271ed0980 (patch) | |
tree | 6656ed38b87b7d7b27f716d0de2ca62c09faa9fe /fs/bcachefs/tests.c | |
parent | ac7c51b2180e757feaaabcb84794bcc9912a4edf (diff) | |
download | linux-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.c | 73 |
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); |