summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@linux.dev>2025-06-19 14:17:07 -0400
committerKent Overstreet <kent.overstreet@linux.dev>2025-06-30 17:52:45 -0400
commit6bd0a3ec1fff38fa320cd447a7eae19a2ca718ba (patch)
tree22d3f69b47fdb143b31eac7adfaa044dd4d6e247
parent0b104cd5e470999d3c5d31af7b3dc2481202ef6c (diff)
bcachefs: bch2_trans_has_updates()
new helper Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
-rw-r--r--fs/bcachefs/btree_gc.c2
-rw-r--r--fs/bcachefs/btree_trans_commit.c4
-rw-r--r--fs/bcachefs/btree_update.h7
3 files changed, 9 insertions, 4 deletions
diff --git a/fs/bcachefs/btree_gc.c b/fs/bcachefs/btree_gc.c
index bac108e93823..7269490a5d9a 100644
--- a/fs/bcachefs/btree_gc.c
+++ b/fs/bcachefs/btree_gc.c
@@ -693,7 +693,7 @@ static int bch2_gc_mark_key(struct btree_trans *trans, enum btree_id btree_id,
if (ret)
goto out;
- if (trans->nr_updates) {
+ if (bch2_trans_has_updates(trans)) {
ret = bch2_trans_commit(trans, NULL, NULL, 0) ?:
-BCH_ERR_transaction_restart_nested;
goto out;
diff --git a/fs/bcachefs/btree_trans_commit.c b/fs/bcachefs/btree_trans_commit.c
index 639ef75b3dbd..454b4c5c1808 100644
--- a/fs/bcachefs/btree_trans_commit.c
+++ b/fs/bcachefs/btree_trans_commit.c
@@ -1015,9 +1015,7 @@ int __bch2_trans_commit(struct btree_trans *trans, unsigned flags)
if (unlikely(ret))
goto out_reset;
- if (!trans->nr_updates &&
- !trans->journal_entries.u64s &&
- !trans->accounting.u64s)
+ if (!bch2_trans_has_updates(trans))
goto out_reset;
ret = bch2_trans_commit_run_triggers(trans);
diff --git a/fs/bcachefs/btree_update.h b/fs/bcachefs/btree_update.h
index 17a6abd7d9cb..2c6f9b44d888 100644
--- a/fs/bcachefs/btree_update.h
+++ b/fs/bcachefs/btree_update.h
@@ -271,6 +271,13 @@ static inline int bch2_trans_commit(struct btree_trans *trans,
(_i) < (_trans)->updates + (_trans)->nr_updates; \
(_i)++)
+static inline bool bch2_trans_has_updates(struct btree_trans *trans)
+{
+ return trans->nr_updates ||
+ trans->journal_entries.u64s ||
+ trans->accounting.u64s;
+}
+
static inline void bch2_trans_reset_updates(struct btree_trans *trans)
{
trans_for_each_update(trans, i)