On Thu, 26 Jun 2025 08:48:54 +1000, Dave Chinner wrote: > Lock order of xfs_ifree_cluster() is cluster buffer -> try ILOCK > -> IFLUSHING, except for the last inode in the cluster that is > triggering the free. In that case, the lock order is ILOCK -> > cluster buffer -> IFLUSHING. > > xfs_iflush_cluster() uses cluster buffer -> try ILOCK -> IFLUSHING, > so this can safely run concurrently with xfs_ifree_cluster(). > > [...] Applied to for-next, thanks! [1/7] xfs: xfs_ifree_cluster vs xfs_iflush_shutdown_abort deadlock commit: 09234a632be42573d9743ac5ff6773622d233ad0 [2/7] xfs: catch stale AGF/AGF metadata commit: db6a2274162de615ff74b927d38942fe3134d298 [3/7] xfs: avoid dquot buffer pin deadlock commit: d62016b1a2df24c8608fe83cd3ae8090412881b3 [4/7] xfs: add tracepoints for stale pinned inode state debug commit: fc48627b9c22f4d18651ca72ba171952d7a26004 [5/7] xfs: rearrange code in xfs_buf_item.c commit: d2fe5c4c8d25999862d615f616aea7befdd62799 [6/7] xfs: factor out stale buffer item completion commit: 816c330b605c3f4813c0dc0ab5af5cce17ff06b3 [7/7] xfs: fix unmount hang with unflushable inodes stuck in the AIL commit: 7b5f775be14ac1532c049022feadcfe44769566d Best regards, -- Carlos Maiolino <cem@xxxxxxxxxx>