Hi all, This series reworks some of the internal quota APIs and cleans up some of the function calls so that we have a clean(er) place to start the space reclamation patchset. The first five patches clean up the existing quota transaction helpers. The next five patches create a common helper to allocate space, quota, and transaction to handle a file modification. The final three patches of the series create common helpers to do more or less the same thing for file creation and chown operations. The goal of these changes is to reduce open-coded idioms, which makes the job of the space reclamation patchset easier since we can now (mostly) hide the retry loops within single functions. v2: rework the xfs_quota_reserve_blkres calling conventions per hch v3: create new xfs_trans_alloc* helpers that will take care of free space and quota reservation all at once for block allocations, inode creation, and chown operations, to simplify the subsequent patches. If you're going to start using this mess, you probably ought to just pull from my git trees, which are linked below. This is an extraordinary way to destroy everything. Enjoy! Comments and questions are, as always, welcome. --D kernel git tree: https://git.kernel.org/cgit/linux/kernel/git/djwong/xfs-linux.git/log/?h=quota-function-cleanups-5.12 --- fs/xfs/libxfs/xfs_attr.c | 15 ----- fs/xfs/libxfs/xfs_bmap.c | 23 ++----- fs/xfs/xfs_bmap_util.c | 58 ++++-------------- fs/xfs/xfs_inode.c | 30 +++------ fs/xfs/xfs_ioctl.c | 4 + fs/xfs/xfs_iomap.c | 51 +++++----------- fs/xfs/xfs_iops.c | 5 +- fs/xfs/xfs_qm.c | 93 ----------------------------- fs/xfs/xfs_quota.h | 59 ++++++++++++++---- fs/xfs/xfs_reflink.c | 87 ++++++++++++++------------- fs/xfs/xfs_symlink.c | 15 +---- fs/xfs/xfs_trans.c | 83 ++++++++++++++++++++++++++ fs/xfs/xfs_trans.h | 10 +++ fs/xfs/xfs_trans_dquot.c | 149 +++++++++++++++++++++++++++++++++++++++++++--- 14 files changed, 373 insertions(+), 309 deletions(-)