summaryrefslogtreecommitdiff
path: root/fs
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@gmail.com>2019-12-30 12:43:19 -0500
committerKent Overstreet <kent.overstreet@gmail.com>2021-04-27 12:17:59 -0400
commit228e31063840db35e4741d9e7255306e12ffbb80 (patch)
tree903e36d1ce4a2aa1d5289284734d764a9cd56e5e /fs
parente3fcb8f7172bde4264ba85de2feb1c383a0524cb (diff)
bcachefs: Use bch2_trans_reset in bch2_trans_commit()
Clean up a bit of duplicated code. Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
Diffstat (limited to 'fs')
-rw-r--r--fs/bcachefs/btree_iter.c10
-rw-r--r--fs/bcachefs/btree_iter.h1
-rw-r--r--fs/bcachefs/btree_update_leaf.c18
3 files changed, 11 insertions, 18 deletions
diff --git a/fs/bcachefs/btree_iter.c b/fs/bcachefs/btree_iter.c
index 6f19304bb913..8c42d09fd050 100644
--- a/fs/bcachefs/btree_iter.c
+++ b/fs/bcachefs/btree_iter.c
@@ -2104,7 +2104,15 @@ void bch2_trans_reset(struct btree_trans *trans, unsigned flags)
if (flags & TRANS_RESET_MEM)
trans->mem_top = 0;
- bch2_btree_iter_traverse_all(trans);
+ if (trans->fs_usage_deltas) {
+ trans->fs_usage_deltas->used = 0;
+ memset(&trans->fs_usage_deltas->memset_start, 0,
+ (void *) &trans->fs_usage_deltas->memset_end -
+ (void *) &trans->fs_usage_deltas->memset_start);
+ }
+
+ if (!(flags & TRANS_RESET_NOTRAVERSE))
+ bch2_btree_iter_traverse_all(trans);
}
void bch2_trans_init(struct btree_trans *trans, struct bch_fs *c,
diff --git a/fs/bcachefs/btree_iter.h b/fs/bcachefs/btree_iter.h
index d750c4e5f18e..962380925511 100644
--- a/fs/bcachefs/btree_iter.h
+++ b/fs/bcachefs/btree_iter.h
@@ -291,6 +291,7 @@ struct btree_iter *bch2_trans_get_node_iter(struct btree_trans *,
#define TRANS_RESET_ITERS (1 << 0)
#define TRANS_RESET_MEM (1 << 1)
+#define TRANS_RESET_NOTRAVERSE (1 << 2)
void bch2_trans_reset(struct btree_trans *, unsigned);
diff --git a/fs/bcachefs/btree_update_leaf.c b/fs/bcachefs/btree_update_leaf.c
index 4ef290d96c89..415848dbedb1 100644
--- a/fs/bcachefs/btree_update_leaf.c
+++ b/fs/bcachefs/btree_update_leaf.c
@@ -715,7 +715,6 @@ bch2_trans_commit_get_rw_cold(struct btree_trans *trans)
int __bch2_trans_commit(struct btree_trans *trans)
{
struct btree_insert_entry *i = NULL;
- struct btree_iter *iter;
unsigned u64s;
int ret = 0;
@@ -782,22 +781,7 @@ out:
if (likely(!(trans->flags & BTREE_INSERT_NOCHECK_RW)))
percpu_ref_put(&trans->c->writes);
out_noupdates:
- trans_for_each_iter_all(trans, iter)
- iter->flags &= ~BTREE_ITER_KEEP_UNTIL_COMMIT;
-
- if (!ret) {
- bch2_trans_unlink_iters(trans);
- trans->iters_touched = 0;
- }
- trans->nr_updates = 0;
- trans->mem_top = 0;
-
- if (trans->fs_usage_deltas) {
- trans->fs_usage_deltas->used = 0;
- memset(&trans->fs_usage_deltas->memset_start, 0,
- (void *) &trans->fs_usage_deltas->memset_end -
- (void *) &trans->fs_usage_deltas->memset_start);
- }
+ bch2_trans_reset(trans, TRANS_RESET_MEM|TRANS_RESET_NOTRAVERSE);
return ret;
err: