From: David Sterba <dsterba@suse.com>
To: linux-btrfs@vger.kernel.org
Cc: David Sterba <dsterba@suse.com>
Subject: [PATCH v2] btrfs: move transaction abort message to __btrfs_abort_transaction()
Date: Wed, 29 Apr 2026 16:32:53 +0200 [thread overview]
Message-ID: <20260429143253.2236286-1-dsterba@suse.com> (raw)
In-Reply-To: <20260428155148.2399-1-dsterba@suse.com>
The btrfs_abort_transaction() is called at the location where we want to
report the abort. It must be a macro so we get the correct line and
stack trace. This inlines the necessary code and the rest is pushed to
__btrfs_abort_transaction().
There's a possibility to reduce the inlined code if we move the message
to the helper function as well, without loss of information. The
difference is only that the WARN will not print it inside the stack
report but after:
--[ cut here ]--
WARNING: fs/btrfs/transaction.c:2045 at btrfs_commit_transaction+0xa21/0xd30 [btrfs], CPU#11: bonnie++/3377975
...
--[ end trace ] --
BTRFS error (device dm-0 state A): Transaction aborted (error -28)
While previously there would be one more line like:
--[ cut here ]--
BTRFS: Transaction aborted (error -28)
WARNING: fs/btrfs/transaction.c:2045 at btrfs_commit_transaction+0xa21/0xd30 [btrfs], CPU#11: bonnie++/3377975
...
--[ end trace ] --
This removes about 20KiB of btrfs.ko on a release config.
Signed-off-by: David Sterba <dsterba@suse.com>
---
v2:
- move message in __btrfs_abort_transaction() under 'first_hit', also to
make the WRITE_ONCE() assignments immediate
- savings updated to 20K, it depends on the config and compiler, use an
average of a few setups
fs/btrfs/transaction.c | 8 ++++++--
fs/btrfs/transaction.h | 11 +----------
2 files changed, 7 insertions(+), 12 deletions(-)
diff --git a/fs/btrfs/transaction.c b/fs/btrfs/transaction.c
index 194f581b36f3..184fe976450e 100644
--- a/fs/btrfs/transaction.c
+++ b/fs/btrfs/transaction.c
@@ -2731,8 +2731,12 @@ void __cold __btrfs_abort_transaction(struct btrfs_trans_handle *trans,
WRITE_ONCE(trans->aborted, error);
WRITE_ONCE(trans->transaction->aborted, error);
- if (first_hit && error == -ENOSPC)
- btrfs_dump_space_info_for_trans_abort(fs_info);
+ if (first_hit) {
+ btrfs_err(trans->fs_info, "Transaction %llu aborted (error %d)",
+ trans->transid, error);
+ if (error == -ENOSPC)
+ btrfs_dump_space_info_for_trans_abort(fs_info);
+ }
/* Wake up anybody who may be waiting on this transaction */
wake_up(&fs_info->transaction_wait);
wake_up(&fs_info->transaction_blocked_wait);
diff --git a/fs/btrfs/transaction.h b/fs/btrfs/transaction.h
index 7d70fe486758..f1cb05460cec 100644
--- a/fs/btrfs/transaction.h
+++ b/fs/btrfs/transaction.h
@@ -253,16 +253,7 @@ do { \
if (!test_and_set_bit(BTRFS_FS_STATE_TRANS_ABORTED, \
&((trans)->fs_info->fs_state))) { \
__first = true; \
- if (WARN(btrfs_abort_should_print_stack(error), \
- KERN_ERR \
- "BTRFS: Transaction aborted (error %d)\n", \
- (error))) { \
- /* Stack trace printed. */ \
- } else { \
- btrfs_err((trans)->fs_info, \
- "Transaction aborted (error %d)", \
- (error)); \
- } \
+ WARN_ON(btrfs_abort_should_print_stack(error)); \
} \
__btrfs_abort_transaction((trans), __func__, \
__LINE__, (error), __first); \
--
2.53.0
next prev parent reply other threads:[~2026-04-29 14:33 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-04-28 15:51 [PATCH] btrfs: move transaction abort message to __btrfs_abort_transaction() David Sterba
2026-04-28 22:45 ` Qu Wenruo
2026-04-29 14:19 ` David Sterba
2026-04-29 14:32 ` David Sterba [this message]
2026-04-29 14:35 ` [PATCH v2] " Filipe Manana
2026-04-29 14:59 ` David Sterba
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260429143253.2236286-1-dsterba@suse.com \
--to=dsterba@suse.com \
--cc=linux-btrfs@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox