From 34d74830b25c7d0b4f6affda90225e4849296255 Mon Sep 17 00:00:00 2001 From: Kent Overstreet Date: Sat, 31 Dec 2022 00:15:23 -0500 Subject: [PATCH] bcachefs: BTREE_UPDATE_NOJOURNAL We're going to have btree updates that don't need to be journalled; add a flag for that. Signed-off-by: Kent Overstreet --- fs/bcachefs/btree_types.h | 2 ++ fs/bcachefs/btree_update_leaf.c | 7 +++++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/fs/bcachefs/btree_types.h b/fs/bcachefs/btree_types.h index 14acbdf34f7b5..d8c35ba9ec893 100644 --- a/fs/bcachefs/btree_types.h +++ b/fs/bcachefs/btree_types.h @@ -630,6 +630,7 @@ static inline bool btree_type_has_snapshots(enum btree_id id) enum btree_update_flags { __BTREE_UPDATE_INTERNAL_SNAPSHOT_NODE, + __BTREE_UPDATE_NOJOURNAL, __BTREE_TRIGGER_NORUN, /* Don't run triggers at all */ @@ -642,6 +643,7 @@ enum btree_update_flags { }; #define BTREE_UPDATE_INTERNAL_SNAPSHOT_NODE (1U << __BTREE_UPDATE_INTERNAL_SNAPSHOT_NODE) +#define BTREE_UPDATE_NOJOURNAL (1U << __BTREE_UPDATE_NOJOURNAL) #define BTREE_TRIGGER_NORUN (1U << __BTREE_TRIGGER_NORUN) diff --git a/fs/bcachefs/btree_update_leaf.c b/fs/bcachefs/btree_update_leaf.c index fa6ba018378b1..b9c93182f2de5 100644 --- a/fs/bcachefs/btree_update_leaf.c +++ b/fs/bcachefs/btree_update_leaf.c @@ -356,7 +356,8 @@ static inline void do_btree_insert_one(struct btree_trans *trans, if (!did_work) return; - if (likely(!(trans->flags & BTREE_INSERT_JOURNAL_REPLAY))) { + if (likely(!(trans->flags & BTREE_INSERT_JOURNAL_REPLAY)) && + !(i->flags & BTREE_UPDATE_NOJOURNAL)) { bch2_journal_add_keys(j, &trans->journal_res, i->btree_id, i->level, @@ -897,7 +898,9 @@ int __bch2_trans_commit(struct btree_trans *trans) if (i->cached && likely(!(trans->flags & BTREE_INSERT_JOURNAL_REPLAY))) trans->journal_preres_u64s += u64s; - trans->journal_u64s += u64s; + + if (!(i->flags & BTREE_UPDATE_NOJOURNAL)) + trans->journal_u64s += u64s; } if (trans->extra_journal_res) { -- 2.30.2