Hi all, when testing with very small rtgroups I've seen relatively frequent failures in xfs/538 where an assert about the da block type triggers that should be entirely impossible to trigger by the expected code flow. It turns out for this two things had to come together: a bug in the attr code to uses ENOSPC to signal a condition that is not related to run out free blocks, but which can also be triggered when we actually run out of free blocks, and a debug in the DEBUG only xfs_bmap_exact_minlen_extent_alloc allocator trigger only by the specific error injection used in this and a few other tests. This series tries to fix both issues and clean up the surrounding code a bit to make it more obvious. Diffstat; xfs_attr.c | 178 ++++++++++++++++++++++---------------------------------- xfs_attr_leaf.c | 40 ++++++------ xfs_attr_leaf.h | 2 xfs_bmap.c | 134 +++++++++++++----------------------------- xfs_da_btree.c | 5 - 5 files changed, 143 insertions(+), 216 deletions(-)