Hi all, for a project with the pending RT group code in XFS that reuses the basic perag concepts I'd much prefer to use xarrays over the old radix tree for nicer iteration semantics. This series converts the perag code to xarrays to keep them in sync and throws in the use of kfree_rcu_mightsleep in the same area. To easily allow porting libxfs code to userspace this can't use xa_set which requires stealing bits from the pointer, and as part of investigating that I realized that the xa_set API is generally not so nice for callers for which a pre-existing entry in the xarray is always an error. Thus the first patch adds a new xa_set wrapper that treats an existing entry as an error and avoids the need to use of xa_err. It could also be used to clean up a significant number of existing callers. Diffstat: fs/xfs/libxfs/xfs_ag.c | 93 ++++--------------------------------------------- fs/xfs/libxfs/xfs_ag.h | 14 ------- fs/xfs/xfs_icache.c | 77 ++++++++++++++++++++++++++-------------- fs/xfs/xfs_mount.h | 3 - fs/xfs/xfs_super.c | 3 - fs/xfs/xfs_trace.h | 3 - include/linux/xarray.h | 1 lib/xarray.c | 33 +++++++++++++++++ 8 files changed, 96 insertions(+), 131 deletions(-)