diff options
author | Kent Overstreet <kent.overstreet@gmail.com> | 2022-02-19 02:40:45 -0500 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@gmail.com> | 2022-04-17 15:44:22 -0400 |
commit | b5b09ccd3ccba4c747454aafa7730c9e785cdbe0 (patch) | |
tree | 7facddbe49a65b6192b12112e01f55bcba1ba33b /fs/bcachefs/btree_update_leaf.c | |
parent | cae0fe7ac2623674eff3ec7e8c48c8bf9733dc91 (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.c | 22 |
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); |