Hi folks, This patchset is largely a rework of the patch that Wengang posted here: https://lore.kernel.org/linux-xfs/20230519171829.4108-1-wen.gang.wang@xxxxxxxxxx/ Review has run aground because I simply don't have the time to explain every deep, subtle corner case on every issue that is raised before progress can be made fixing this issue. Indeed, this is the second attempt to get this bug fixed that has run aground like this. Hence I've decided that it's less time and effort to just take what we have, split it, clean it up, fixed it up, remove all the unnecessary bits and run it through testing and push it back out for further review. I split the alloc flags out as a separate variable that is passed down the stack; I renamed them all "alloc_flags" so that it's clear that the flags being used and passed between the functions are the XFS_ALLOC_FLAG* flag values. If we want to, it will now be trivial to pull these back into the struct xfs_alloc_arg if we so desire - there is no mix-and-match of args->flags and function paramter flags to confuse the issue as was in the original patch. The changes to xfs_extent_busy_flush() mean that it can now return -EFSCORRUPTED or -EIO from xfs_log_force(), not just -EAGAIN to indicate the transaction must be committed before the allocation is retried. This has been exercised by recoveryloop testing and it appears that the new corruption/error detection conditions do not introduce any new failures. Cheers, Dave.