mbox series

[GIT,PULL] xfs: per-ag conversions for 5.20

Message ID 20220707235935.GA3600936@dread.disaster.area (mailing list archive)
State New, archived
Headers show
Series [GIT,PULL] xfs: per-ag conversions for 5.20 | expand

Pull-request

git://git.kernel.org/pub/scm/linux/kernel/git/dgc/linux-xfs tags/xfs-perag-conv-5.20

Message

Dave Chinner July 7, 2022, 11:59 p.m. UTC
Hi Darrick,

Can you please pull the perag conversion changes from the tag listed
below? This branchis based on the linux-xfs/for-next tree as of two
days ago, so should merge cleanly with this. It also merges cleanly
with the xfs-cil-scalability-5.20 branch that I just posted a pull
request for, so you should be able to merge them in either order.

Cheers,

Dave.

The following changes since commit 7561cea5dbb97fecb952548a0fb74fb105bf4664:

  xfs: prevent a UAF when log IO errors race with unmount (2022-07-01 09:09:52 -0700)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/dgc/linux-xfs tags/xfs-perag-conv-5.20

for you to fetch changes up to 36029dee382a20cf515494376ce9f0d5949944eb:

  xfs: make is_log_ag() a first class helper (2022-07-07 19:13:21 +1000)

----------------------------------------------------------------
xfs: per-ag conversions for 5.20

This series drives the perag down into the AGI, AGF and AGFL access
routines and unifies the perag structure initialisation with the
high level AG header read functions. This largely replaces the
xfs_mount/agno pair that is passed to all these functions with a
perag, and in most places we already have a perag ready to pass in.
There are a few places where perags need to be grabbed before
reading the AG header buffers - some of these will need to be driven
to higher layers to ensure we can run operations on AGs without
getting stuck part way through waiting on a perag reference.

The latter section of this patchset moves some of the AG geometry
information from the xfs_mount to the xfs_perag, and starts
converting code that requires geometry validation to use a perag
instead of a mount and having to extract the AGNO from the object
location. This also allows us to store the AG size in the perag and
then we can stop having to compare the agno against sb_agcount to
determine if the AG is the last AG and so has a runt size.  This
greatly simplifies some of the type validity checking we do and
substantially reduces the CPU overhead of type validity checking. It
also cuts over 1.2kB out of the binary size.

Signed-off-by: Dave Chinner <dchinner@redhat.com>

----------------------------------------------------------------
Dave Chinner (14):
      xfs: make last AG grow/shrink perag centric
      xfs: kill xfs_ialloc_pagi_init()
      xfs: pass perag to xfs_ialloc_read_agi()
      xfs: kill xfs_alloc_pagf_init()
      xfs: pass perag to xfs_alloc_read_agf()
      xfs: pass perag to xfs_read_agi
      xfs: pass perag to xfs_read_agf
      xfs: pass perag to xfs_alloc_get_freelist
      xfs: pass perag to xfs_alloc_put_freelist
      xfs: pass perag to xfs_alloc_read_agfl
      xfs: Pre-calculate per-AG agbno geometry
      xfs: Pre-calculate per-AG agino geometry
      xfs: replace xfs_ag_block_count() with perag accesses
      xfs: make is_log_ag() a first class helper

 fs/xfs/libxfs/xfs_ag.c             | 163 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-----------------------------
 fs/xfs/libxfs/xfs_ag.h             |  69 +++++++++++++++++++++++++++++++++++----
 fs/xfs/libxfs/xfs_ag_resv.c        |   2 +-
 fs/xfs/libxfs/xfs_alloc.c          | 143 ++++++++++++++++++++++++++++++++++++--------------------------------------------
 fs/xfs/libxfs/xfs_alloc.h          |  58 +++++++--------------------------
 fs/xfs/libxfs/xfs_alloc_btree.c    |   9 +++---
 fs/xfs/libxfs/xfs_bmap.c           |   3 +-
 fs/xfs/libxfs/xfs_btree.c          |  25 ++++++--------
 fs/xfs/libxfs/xfs_ialloc.c         |  86 ++++++++++++++++++++-----------------------------
 fs/xfs/libxfs/xfs_ialloc.h         |  25 +++-----------
 fs/xfs/libxfs/xfs_ialloc_btree.c   |  20 ++++++------
 fs/xfs/libxfs/xfs_inode_buf.c      |   5 ++-
 fs/xfs/libxfs/xfs_refcount.c       |  19 ++++++-----
 fs/xfs/libxfs/xfs_refcount_btree.c |   5 ++-
 fs/xfs/libxfs/xfs_rmap.c           |   8 ++---
 fs/xfs/libxfs/xfs_rmap_btree.c     |   9 +++---
 fs/xfs/libxfs/xfs_types.c          |  73 +++++------------------------------------
 fs/xfs/libxfs/xfs_types.h          |   9 ------
 fs/xfs/scrub/agheader.c            |  25 +++++++-------
 fs/xfs/scrub/agheader_repair.c     |  21 ++++--------
 fs/xfs/scrub/alloc.c               |   7 ++--
 fs/xfs/scrub/bmap.c                |   2 +-
 fs/xfs/scrub/common.c              |   6 ++--
 fs/xfs/scrub/fscounters.c          |   4 +--
 fs/xfs/scrub/health.c              |   2 ++
 fs/xfs/scrub/ialloc.c              |  12 +++----
 fs/xfs/scrub/refcount.c            |   9 +++---
 fs/xfs/scrub/repair.c              |  32 +++++++++---------
 fs/xfs/scrub/rmap.c                |   6 ++--
 fs/xfs/xfs_discard.c               |   2 +-
 fs/xfs/xfs_extfree_item.c          |   6 +++-
 fs/xfs/xfs_filestream.c            |   4 +--
 fs/xfs/xfs_fsmap.c                 |   3 +-
 fs/xfs/xfs_fsops.c                 |  13 +++++---
 fs/xfs/xfs_inode.c                 |  28 ++++++++--------
 fs/xfs/xfs_ioctl.c                 |   8 ++++-
 fs/xfs/xfs_log_recover.c           |  41 +++++++++++------------
 fs/xfs/xfs_mount.c                 |   3 +-
 fs/xfs/xfs_reflink.c               |  40 ++++++++++++-----------
 fs/xfs/xfs_reflink.h               |   3 --
 40 files changed, 486 insertions(+), 522 deletions(-)