Re: [PATCH] jbd2: stop waiting for space when jbd2_cleanup_journal_tail() returns error

From: Theodore Ts'o
Date: Tue Aug 27 2024 - 08:50:58 EST



On Thu, 18 Jul 2024 19:53:36 +0800, libaokun@xxxxxxxxxxxxxxx wrote:
> In __jbd2_log_wait_for_space(), we might call jbd2_cleanup_journal_tail()
> to recover some journal space. But if an error occurs while executing
> jbd2_cleanup_journal_tail() (e.g., an EIO), we don't stop waiting for free
> space right away, we try other branches, and if j_committing_transaction
> is NULL (i.e., the tid is 0), we will get the following complain:
>
> ============================================
> JBD2: I/O error when updating journal superblock for sdd-8.
> __jbd2_log_wait_for_space: needed 256 blocks and only had 217 space available
> __jbd2_log_wait_for_space: no way to get more journal space in sdd-8
> ------------[ cut here ]------------
> WARNING: CPU: 2 PID: 139804 at fs/jbd2/checkpoint.c:109 __jbd2_log_wait_for_space+0x251/0x2e0
> Modules linked in:
> CPU: 2 PID: 139804 Comm: kworker/u8:3 Not tainted 6.6.0+ #1
> RIP: 0010:__jbd2_log_wait_for_space+0x251/0x2e0
> Call Trace:
> <TASK>
> add_transaction_credits+0x5d1/0x5e0
> start_this_handle+0x1ef/0x6a0
> jbd2__journal_start+0x18b/0x340
> ext4_dirty_inode+0x5d/0xb0
> __mark_inode_dirty+0xe4/0x5d0
> generic_update_time+0x60/0x70
> [...]
> ============================================
>
> [...]

Applied, thanks!

[1/1] jbd2: stop waiting for space when jbd2_cleanup_journal_tail() returns error
commit: f5cacdc6f2bb2a9bf214469dd7112b43dd2dd68a

Best regards,
--
Theodore Ts'o <tytso@xxxxxxx>