66 lines
2.4 KiB
Diff
66 lines
2.4 KiB
Diff
From 50dd5a0edf33ff18f0672a3a2ab7b285161ec1ac Mon Sep 17 00:00:00 2001
|
|
From: Kent Overstreet <kent.overstreet@linux.dev>
|
|
Date: Thu, 12 Dec 2024 00:44:28 -0500
|
|
Subject: [PATCH 207/233] bcachefs: bch2_trans_log_msg()
|
|
Content-Type: text/plain; charset="utf-8"
|
|
Content-Transfer-Encoding: 8bit
|
|
|
|
Export a helper for logging to the journal when we're already in a
|
|
transaction context.
|
|
|
|
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
|
|
Signed-off-by: Alexander Miroshnichenko <alex@millerson.name>
|
|
---
|
|
fs/bcachefs/btree_update.c | 13 ++++++++++---
|
|
fs/bcachefs/btree_update.h | 1 +
|
|
2 files changed, 11 insertions(+), 3 deletions(-)
|
|
|
|
diff --git a/fs/bcachefs/btree_update.c b/fs/bcachefs/btree_update.c
|
|
index 06fd5aa62296..a4b70e3fe4c3 100644
|
|
--- a/fs/bcachefs/btree_update.c
|
|
+++ b/fs/bcachefs/btree_update.c
|
|
@@ -823,10 +823,17 @@ int bch2_btree_bit_mod_buffered(struct btree_trans *trans, enum btree_id btree,
|
|
return bch2_trans_update_buffered(trans, btree, &k);
|
|
}
|
|
|
|
-static int __bch2_trans_log_msg(struct btree_trans *trans, struct printbuf *buf, unsigned u64s)
|
|
+int bch2_trans_log_msg(struct btree_trans *trans, struct printbuf *buf)
|
|
{
|
|
+ unsigned u64s = DIV_ROUND_UP(buf->pos, sizeof(u64));
|
|
+ prt_chars(buf, '\0', u64s * sizeof(u64) - buf->pos);
|
|
+
|
|
+ int ret = buf->allocation_failure ? -BCH_ERR_ENOMEM_trans_log_msg : 0;
|
|
+ if (ret)
|
|
+ return ret;
|
|
+
|
|
struct jset_entry *e = bch2_trans_jset_entry_alloc(trans, jset_u64s(u64s));
|
|
- int ret = PTR_ERR_OR_ZERO(e);
|
|
+ ret = PTR_ERR_OR_ZERO(e);
|
|
if (ret)
|
|
return ret;
|
|
|
|
@@ -862,7 +869,7 @@ __bch2_fs_log_msg(struct bch_fs *c, unsigned commit_flags, const char *fmt,
|
|
c->journal.early_journal_entries.nr += jset_u64s(u64s);
|
|
} else {
|
|
ret = bch2_trans_commit_do(c, NULL, NULL, commit_flags,
|
|
- __bch2_trans_log_msg(trans, &buf, u64s));
|
|
+ bch2_trans_log_msg(trans, &buf));
|
|
}
|
|
err:
|
|
printbuf_exit(&buf);
|
|
diff --git a/fs/bcachefs/btree_update.h b/fs/bcachefs/btree_update.h
|
|
index 58df20194306..8f22ef9a7651 100644
|
|
--- a/fs/bcachefs/btree_update.h
|
|
+++ b/fs/bcachefs/btree_update.h
|
|
@@ -159,6 +159,7 @@ void bch2_trans_commit_hook(struct btree_trans *,
|
|
struct btree_trans_commit_hook *);
|
|
int __bch2_trans_commit(struct btree_trans *, unsigned);
|
|
|
|
+int bch2_trans_log_msg(struct btree_trans *, struct printbuf *);
|
|
__printf(2, 3) int bch2_fs_log_msg(struct bch_fs *, const char *, ...);
|
|
__printf(2, 3) int bch2_journal_log_msg(struct bch_fs *, const char *, ...);
|
|
|
|
--
|
|
2.45.2
|
|
|