Re: [PATCH v8 1/1] ocfs2: split transactions in dio completion to avoid credit exhaustion
Joseph Qi <[email protected]>
| Newsgroups | dev.linux.lists.ocfs2-devel,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <[email protected]> |
On 4/4/26 3:32 AM, Andrew Morton wrote: > On Thu, 2 Apr 2026 21:43:27 +0800 Heming Zhao <[email protected]> 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/[email protected] There are two paths to recover: 1. During next write to the same file, ocfs2_add_inode_to_orphan() will manually recover it first. 2. During next mount or node recover, ocfs2_recover_orphans() will also do the same recovery operations (truncate + delete from orphan). So I think it is false positive report. Thanks, Joseph