Hi folks, v4: https://lore.kernel.org/r/20210111132243.1180013-1-hsiangkao@xxxxxxxxxx This patchset attempts to support shrinking free space in the last AG. This version mainly updates the per-ag reservation fail case mentioned by Darrick, also add error injection point to observe such path... If I'm still missing something (e.g. not sure of the log reservation calculation due to another free extent dfop) or something goes wrong, please kindly point out... xfsprogs: https://lore.kernel.org/r/20201028114010.545331-1-hsiangkao@xxxxxxxxxx xfstests: https://lore.kernel.org/r/20201028230909.639698-1-hsiangkao@xxxxxxxxxx Changes since v4: - [3/5] update a missing typedef case and move the comment to the top of the whole function (Christoph); - [4/5] put onstack structs at the top of the declaration list; handling the per-ag reservation fail case; do agf->agf_length, agi->agi_length sanity check; leave a comment in the error handing path above xfs_trans_commit() (Darrick); - [5/5] add an error injection path to observe the per-ag reservation fail path (Darrick). Thanks, Gao Xiang Gao Xiang (5): xfs: rename `new' to `delta' in xfs_growfs_data_private() xfs: get rid of xfs_growfs_{data,log}_t xfs: hoist out xfs_resizefs_init_new_ags() xfs: support shrinking unused space in the last AG xfs: add error injection for per-AG resv failure when shrinkfs fs/xfs/libxfs/xfs_ag.c | 93 +++++++++++++++++++ fs/xfs/libxfs/xfs_ag.h | 2 + fs/xfs/libxfs/xfs_errortag.h | 2 + fs/xfs/xfs_error.c | 2 + fs/xfs/xfs_fsops.c | 167 ++++++++++++++++++++++------------- fs/xfs/xfs_fsops.h | 4 +- fs/xfs/xfs_ioctl.c | 4 +- fs/xfs/xfs_trans.c | 1 - 8 files changed, 211 insertions(+), 64 deletions(-) -- 2.27.0