Re: [PATCH v8 1/1] ocfs2: split transactions in dio completion to avoid credit exhaustion
From: Andrew Morton
Date: Fri Apr 03 2026 - 15:38:31 EST
On Thu, 2 Apr 2026 21:43:27 +0800 Heming Zhao <heming.zhao@xxxxxxxx> wrote:
> During ocfs2 dio operations, JBD2 may report warnings via following
> call trace:
> ocfs2_dio_end_io_write
> ocfs2_mark_extent_written
> ocfs2_change_extent_flag
> ocfs2_split_extent
> ocfs2_try_to_merge_extent
> ocfs2_extend_rotate_transaction
> ocfs2_extend_trans
> jbd2__journal_restart
> start_this_handle
> output: JBD2: kworker/6:2 wants too many credits credits:5450 rsv_credits:0 max:5449
>
> To prevent exceeding the credits limit, modify ocfs2_dio_end_io_write() to
> handle extents in a batch of transaction.
>
> Additionally, relocate ocfs2_del_inode_from_orphan(). The orphan inode should
> only be removed from the orphan list after the extent tree update is complete.
> This ensures that if a crash occurs in the middle of extent tree updates, we
> won't leave stale blocks beyond EOF.
>
> This patch also changes the logic for updating the inode size and removing
> orphan, making it similar to ext4_dio_write_end_io(). Both operations are
> performed only when everything looks good.
>
> Finally, thanks to Jans and Joseph for providing the bug fix prototype and
> suggestions.
AI review has a question:
https://sashiko.dev/#/patchset/20260402134328.27334-2-heming.zhao@xxxxxxxx