mbox series

[v5,0/5] xfs: support shrinking free space in the last AG

Message ID 20210118083700.2384277-1-hsiangkao@redhat.com (mailing list archive)
Headers show
Series xfs: support shrinking free space in the last AG | expand

Message

Gao Xiang Jan. 18, 2021, 8:36 a.m. UTC
Hi folks,

v4: https://lore.kernel.org/r/20210111132243.1180013-1-hsiangkao@redhat.com

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@redhat.com
xfstests: https://lore.kernel.org/r/20201028230909.639698-1-hsiangkao@redhat.com

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(-)