From: Kent Overstreet Date: Sat, 31 Dec 2022 05:15:23 +0000 (-0500) Subject: bcachefs: BTREE_UPDATE_NOJOURNAL X-Git-Tag: v6.7-rc1~201^2~1312 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=34d74830b25c7d0b4f6affda90225e4849296255;p=thirdparty%2Fkernel%2Flinux.git 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 --- 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) {