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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.