Hi all, Here's v4 of the proposed allocbt block set aside fix. The patches have been swizzled around a bit based on previous feedback to try and avoid confusion over what bits are perag res related and not. This hopefully facilitates analysis when it comes time to evaluate potential changes to remove the current perag res mount time AG header scan behavior on which this currently depends. Otherwise the actual code changes from v3 are fairly light and documented in the changelog below. Thoughts, reviews, flames appreciated. Brian v4: - Fix up perag res logic to not skip pagf init on partial res failure. - Split up set aside patch into separate counter mechanism and set aside policy patches. - Drop unnecessary ->m_has_agresv flag as pagf's are always initialized on filesystems with active reservations. v3: https://lore.kernel.org/linux-xfs/20210318161707.723742-1-bfoster@xxxxxxxxxx/ - Use a mount flag for easy detection of active perag reservation. - Filter rmapbt blocks from allocbt block accounting. v2: https://lore.kernel.org/linux-xfs/20210222152108.896178-1-bfoster@xxxxxxxxxx/ - Use an atomic counter instead of a percpu counter. v1: https://lore.kernel.org/linux-xfs/20210217132339.651020-1-bfoster@xxxxxxxxxx/ Brian Foster (3): xfs: unconditionally read all AGFs on mounts with perag reservation xfs: introduce in-core global counter of allocbt blocks xfs: set aside allocation btree blocks from block reservation fs/xfs/libxfs/xfs_ag_resv.c | 34 ++++++++++++++++++++++----------- fs/xfs/libxfs/xfs_alloc.c | 12 ++++++++++++ fs/xfs/libxfs/xfs_alloc_btree.c | 2 ++ fs/xfs/xfs_mount.c | 15 ++++++++++++++- fs/xfs/xfs_mount.h | 6 ++++++ 5 files changed, 57 insertions(+), 12 deletions(-) -- 2.26.3