bcachefs: Use bch2_trans_reset in bch2_trans_commit()
authorKent Overstreet <kent.overstreet@gmail.com>
Mon, 30 Dec 2019 17:43:19 +0000 (12:43 -0500)
committerKent Overstreet <kent.overstreet@linux.dev>
Sun, 22 Oct 2023 21:08:33 +0000 (17:08 -0400)
Clean up a bit of duplicated code.

Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
fs/bcachefs/btree_iter.c
fs/bcachefs/btree_iter.h
fs/bcachefs/btree_update_leaf.c

index 06a087b91e339c6d08a89e80a407c49375519e75..c002ac958899b2d61fee3c06d56be0bb26b669d9 100644 (file)
@@ -2104,7 +2104,16 @@ 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((void *) trans->fs_usage_deltas +
+                      offsetof(struct replicas_delta_list, 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,
index 2bbf714c96980e71d23657896faa910424f38334..86347bae9795c92544e81b355d3f41854cfda4e0 100644 (file)
@@ -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);
 
index 78f5674394dc7ce0d9c5603b363df135931f62f7..8d70e22decc737a4555609886541b951c7ecd3d6 100644 (file)
@@ -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,23 +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((void *) trans->fs_usage_deltas +
-                      offsetof(struct replicas_delta_list, 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: