public inbox for linux-xfs@vger.kernel.org
 help / color / mirror / Atom feed
From: Krister Johansen <kjlx@templeofstupid.com>
To: Chandan Babu R <chandan.babu@oracle.com>,
	"Darrick J. Wong" <djwong@kernel.org>,
	Dave Chinner <david@fromorbit.com>
Cc: Dave Chinner <dchinner@redhat.com>, Zorro Lang <zlang@kernel.org>,
	linux-xfs@vger.kernel.org, fstests@vger.kernel.org
Subject: [PATCH 0/5] linux: Modifying per-ag reservation to account for dependent allocations
Date: Thu, 15 Aug 2024 12:30:47 -0700	[thread overview]
Message-ID: <cover.1723688622.git.kjlx@templeofstupid.com> (raw)
In-Reply-To: <cover.1723687224.git.kjlx@templeofstupid.com>

Hi,
These patches attempt to address the problem where dependent allocations
fail during a multi allocation transaction, often as a result of
refilling the AGFL.  The failure results in a filesystem shutdown.  In
many cases, it manifests as a warn in xfs_bmap_extents_to_btree, when
the dependent b-tree conversion fails after inadvertently getting an
ENOSPC.

The RFC series was here:

https://lore.kernel.org/linux-xfs/cover.1718232004.git.kjlx@templeofstupid.com/T/#t

This series attempts follows David's guidance around implementing the
reservation using the existing xfs_alloc_ag_max_usable and
XFS_ALLOCBT_AGFL_RESERVE mechanisms.  This mostly worked as advertised
(thanks!), however, a few additional patches were needed in order to
address test failures.

In particular, without the 'xfs: include min freelist in
m_ag_max_usable' patch this series would fail the generic/223 tests
around stripe alignment, because m_ag_max_usable was slightly larger
than the actually usable space.  This turned out to be the result of the
first pre-fill of the AGFL and once corrected the tests pass.

This currently has a failure in xfs/306.  I'm including a patch for
xfstests to address this.  The per-AG reservation size on the filesystem
in that test increased by just enough that the filesystem reservation
that was manually configured to 16 blocks was too small.  Increasing
that test's reservation to 17 allows it to continue.  The failure
manifests as dd failing to make progress and the dmesg filling with
errors about xfs_discard_folio.  Tracing showed that conversion of the
delalloc to a real allocation was getting ENOSPC.

-K

Krister Johansen (5):
  xfs: count the number of blocks in a per-ag reservation
  xfs: move calculation in xfs_alloc_min_freelist to its own function
  xfs: make alloc_set_aside and friends aware of per-AG reservations
  xfs: push the agfl set aside into xfs_alloc_space_available
  xfs: include min freelist in m_ag_max_usable

 fs/xfs/libxfs/xfs_alloc.c | 184 ++++++++++++++++++++++++++++++--------
 fs/xfs/libxfs/xfs_alloc.h |   1 +
 fs/xfs/xfs_fsops.c        |  21 +++++
 fs/xfs/xfs_fsops.h        |   1 +
 fs/xfs/xfs_mount.c        |  24 +++++
 fs/xfs/xfs_mount.h        |  12 +++
 6 files changed, 207 insertions(+), 36 deletions(-)


base-commit: 7bf888fa26e8f22bed4bc3965ab2a2953104ff96
-- 
2.25.1


  reply	other threads:[~2024-08-15 19:49 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-08-15 19:29 [PATCHSET] AGFL reservation changes Krister Johansen
2024-08-15 19:30 ` Krister Johansen [this message]
2024-08-15 19:31   ` [PATCH 1/5] xfs: count the number of blocks in a per-ag reservation Krister Johansen
2024-08-15 19:32   ` [PATCH 2/5] xfs: move calculation in xfs_alloc_min_freelist to its own function Krister Johansen
2024-08-15 19:33   ` [PATCH 3/5] xfs: make alloc_set_aside and friends aware of per-AG reservations Krister Johansen
2024-08-15 19:34   ` [PATCH 4/5] xfs: push the agfl set aside into xfs_alloc_space_available Krister Johansen
2024-08-15 19:35   ` [PATCH 5/5] xfs: include min freelist in m_ag_max_usable Krister Johansen
2024-08-15 19:36 ` [RFC PATCH 0/2] xfstests: fstests for agfl reservation Krister Johansen
2024-08-15 19:37   ` [RFC PATCH 1/2] xfs/608: a test case for xfs_bmap_extents_to_btree allocation failure Krister Johansen
2024-08-15 19:40   ` [RFC PATCH 2/2] xfs/306: update resblks to account for increased per-ag reservation size Krister Johansen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=cover.1723688622.git.kjlx@templeofstupid.com \
    --to=kjlx@templeofstupid.com \
    --cc=chandan.babu@oracle.com \
    --cc=david@fromorbit.com \
    --cc=dchinner@redhat.com \
    --cc=djwong@kernel.org \
    --cc=fstests@vger.kernel.org \
    --cc=linux-xfs@vger.kernel.org \
    --cc=zlang@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox