I appreciate Joseph's thorough review and his patience with my oversight.
For easier merging, this patch is based on Joseph's patch [1].
v7->v8:
Per Joseph's review, add a check for 'handle' before calling
ocfs2_start_trans().
v6->v7:
fix logic error regarding "handle == NULL".
v5->v6:
add a check for handle before updating i_size.
v4->v5:
change update inode size and remove orphan logic.
add above change in commit log.
v3->v4:
Remove [patch 2/2] as the revert operation is incorrect.
v2->v3:
Following the discussion, use 'batch' and 'handle' to control
restarting the jbd2 transaction.
v1->v2:
following the review comments, restore the i_size update code in
ocfs2_dio_end_io_write().
the runtime of the test script [2].
real 1m49.387s
user 0m0.325s
sys 0m23.006s
[1]:
https://lore.kernel.org/ocfs2-devel/46yilbaq5z5x6gdfdpoa6lprf6sf3gbxriuku2odje4kx4bovf@jd735cphfutz/T/#t
[2]:
https://lore.kernel.org/ocfs2-devel/75f89a17-213b-42a0-a30e-d52fb2d077a6@linux.alibaba.com/T/#mbe2b5f52ee249178e1ad4c76d964de2dc818eb32
Heming Zhao (1):
ocfs2: split transactions in dio completion to avoid credit exhaustion
fs/ocfs2/aops.c | 74 ++++++++++++++++++++++++++++++-------------------
1 file changed, 45 insertions(+), 29 deletions(-)
--
2.43.0