summaryrefslogtreecommitdiff
path: root/fs/bcachefs/btree_update_leaf.c
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@gmail.com>2022-02-19 02:40:45 -0500
committerKent Overstreet <kent.overstreet@gmail.com>2022-04-17 15:44:22 -0400
commitb5b09ccd3ccba4c747454aafa7730c9e785cdbe0 (patch)
tree7facddbe49a65b6192b12112e01f55bcba1ba33b /fs/bcachefs/btree_update_leaf.c
parentcae0fe7ac2623674eff3ec7e8c48c8bf9733dc91 (diff)
bcachefs: Change __bch2_trans_commit() to run triggers then get RW
This is prep work for the next patch, which is going to change __bch2_trans_commit() to use bch2_journal_key_insert() when very early in the recovery process, so that we have a unified interface for doing btree updates. Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
Diffstat (limited to 'fs/bcachefs/btree_update_leaf.c')
-rw-r--r--fs/bcachefs/btree_update_leaf.c22
1 files changed, 11 insertions, 11 deletions
diff --git a/fs/bcachefs/btree_update_leaf.c b/fs/bcachefs/btree_update_leaf.c
index 5530941c772b..a08d36c0dc8d 100644
--- a/fs/bcachefs/btree_update_leaf.c
+++ b/fs/bcachefs/btree_update_leaf.c
@@ -987,6 +987,17 @@ int __bch2_trans_commit(struct btree_trans *trans)
if (trans->flags & BTREE_INSERT_GC_LOCK_HELD)
lockdep_assert_held(&c->gc_lock);
+ ret = bch2_trans_commit_run_triggers(trans);
+ if (ret)
+ goto out_reset;
+
+ if (!(trans->flags & BTREE_INSERT_NOCHECK_RW) &&
+ unlikely(!percpu_ref_tryget(&c->writes))) {
+ ret = bch2_trans_commit_get_rw_cold(trans);
+ if (ret)
+ goto out_reset;
+ }
+
memset(&trans->journal_preres, 0, sizeof(trans->journal_preres));
trans->journal_u64s = trans->extra_journal_entry_u64s;
@@ -997,17 +1008,6 @@ int __bch2_trans_commit(struct btree_trans *trans)
if (trans->journal_transaction_names)
trans->journal_u64s += JSET_ENTRY_LOG_U64s;
- if (!(trans->flags & BTREE_INSERT_NOCHECK_RW) &&
- unlikely(!percpu_ref_tryget(&c->writes))) {
- ret = bch2_trans_commit_get_rw_cold(trans);
- if (ret)
- goto out_reset;
- }
-
- ret = bch2_trans_commit_run_triggers(trans);
- if (ret)
- goto out;
-
trans_for_each_update(trans, i) {
BUG_ON(!i->path->should_be_locked);