public inbox for linux-ext4@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH v5 0/2] jbd2: audit and convert legacy J_ASSERT usage
@ 2026-03-04 17:20 Milos Nikic
  2026-03-04 17:20 ` [PATCH v5 1/2] jbd2: gracefully abort instead of panicking on unlocked buffer Milos Nikic
  2026-03-04 17:20 ` [PATCH v5 2/2] jbd2: gracefully abort on transaction state corruptions Milos Nikic
  0 siblings, 2 replies; 5+ messages in thread
From: Milos Nikic @ 2026-03-04 17:20 UTC (permalink / raw)
  To: jack; +Cc: tytso, linux-ext4, linux-kernel, Milos Nikic

Hello Jan and the ext4 team,

This patch series follows up on the previous discussion regarding
converting hard J_ASSERT panics into graceful journal aborts.

In v1, we addressed a specific panic on unlock. Per Jan's suggestion,
I have audited fs/jbd2/transaction.c for other low-hanging fruit
where state machine invariants are enforced by J_ASSERT inside
functions that natively support error returns.

Changes in v5:
    Patch 2: Folded a redundant if check into the WARN_ON_ONCE block in
    jbd2_journal_dirty_metadata per Andreas's suggestion.
    Carried over Reviewed-by tags from Jan, Andreas and Zhang.

Changes in v4:
    Patch 2: Fixed a build test WARNING by initializing a variable
    `journal` earlier in  jbd2_journal_dirty_metadata().

Changes in v3:

    Patch 2: Added pr_err() statements inside the ambiguous WARN_ON_ONCE()
    blocks (where multiple conditions are checked via logical OR/AND) to
    explicitly dump the b_transaction, b_next_transaction, and
    j_committing_transaction pointers. This provides necessary context for
    debugging state machine corruptions from the dmesg stack trace.

Changes in v2:

    Patch 1: Unmodified from v1. Collected Reviewed-by tags.

    Patch 2: New patch resulting from the broader audit. Systematically
    replaces J_ASSERTs with WARN_ON_ONCE and graceful -EINVAL returns
    across 6 core transaction lifecycle functions. Careful attention was
    paid to ensuring spinlocks are safely dropped before triggering
    jbd2_journal_abort(), and no memory is leaked on the error paths.

Milos Nikic (2):
  jbd2: gracefully abort instead of panicking on unlocked buffer
  jbd2: gracefully abort on transaction state corruptions

 fs/jbd2/transaction.c | 121 ++++++++++++++++++++++++++++++++----------
 1 file changed, 92 insertions(+), 29 deletions(-)

--
2.53.0


^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2026-03-24 13:52 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-03-04 17:20 [PATCH v5 0/2] jbd2: audit and convert legacy J_ASSERT usage Milos Nikic
2026-03-04 17:20 ` [PATCH v5 1/2] jbd2: gracefully abort instead of panicking on unlocked buffer Milos Nikic
2026-03-23 21:50   ` Milos Nikic
2026-03-24 13:52     ` Jan Kara
2026-03-04 17:20 ` [PATCH v5 2/2] jbd2: gracefully abort on transaction state corruptions Milos Nikic

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox