We are hitting the deadlock described in patch 1. This patchset doesn't want to disturb the existing block allocation routine, that would make the allocation routime even complex. Instead, this patch avoids doing AGFL block allocation holding busy extents in current memory transaction. Patch 1 fixes the IO path and Patch 2 takes care of log recovery. Wengang Wang (2): xfs: IO time one extent per EFI xfs: log recovery stage split EFIs with multiple extents fs/xfs/xfs_extfree_item.c | 104 ++++++++++++++++++++++++++++++++++---- fs/xfs/xfs_extfree_item.h | 9 +++- 2 files changed, 101 insertions(+), 12 deletions(-) -- 2.21.0 (Apple Git-122.2)