linux-btrfs.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Ivan Shapovalov <intelfx@intelfx.name>
To: Filipe Manana <fdmanana@kernel.org>
Cc: linux-btrfs@vger.kernel.org
Subject: Re: [PATCH 0/5] btrfs: some fixes around unused block deletion
Date: Fri, 02 Feb 2024 01:52:05 +0100	[thread overview]
Message-ID: <64552ef1b8713e29bf31c18e92f610ef3cdd82ea.camel@intelfx.name> (raw)
In-Reply-To: <CAL3q7H5qeUv9phjDq9=NJsH6i2FscUv48M37YSza-UeEVChoOQ@mail.gmail.com>

[-- Attachment #1: Type: text/plain, Size: 5060 bytes --]

On 2024-01-29 at 20:28 +0000, Filipe Manana wrote:
> On Mon, Jan 29, 2024 at 5:56 PM Ivan Shapovalov
> <intelfx@intelfx.name> wrote:
> > 
> > On 2024-01-29 at 12:49 +0000, Filipe Manana wrote:
> > > On Sat, Jan 27, 2024 at 9:39 PM Ivan Shapovalov
> > > <intelfx@intelfx.name> wrote:
> > > > 
> > > > On 2024-01-25 at 10:26 +0000, fdmanana@kernel.org wrote:
> > > > > From: Filipe Manana <fdmanana@suse.com>
> > > > > 
> > > > > These fix a couple issues regarding block group deletion,
> > > > > either
> > > > > deleting
> > > > > an unused block group when it shouldn't be deleted due to
> > > > > outstanding
> > > > > reservations relying on the block group, or unused block
> > > > > groups
> > > > > never
> > > > > getting deleted since they were created due to pessimistic
> > > > > space
> > > > > reservation and ended up never being used. More details on
> > > > > the
> > > > > change
> > > > > logs of each patch.
> > > > > 
> > > > > Filipe Manana (5):
> > > > >   btrfs: add and use helper to check if block group is used
> > > > >   btrfs: do not delete unused block group if it may be used
> > > > > soon
> > > > >   btrfs: add new unused block groups to the list of unused
> > > > > block
> > > > > groups
> > > > >   btrfs: document what the spinlock unused_bgs_lock protects
> > > > >   btrfs: add comment about list_is_singular() use at
> > > > > btrfs_delete_unused_bgs()
> > > > > 
> > > > >  fs/btrfs/block-group.c | 87
> > > > > +++++++++++++++++++++++++++++++++++++++++-
> > > > >  fs/btrfs/block-group.h |  7 ++++
> > > > >  fs/btrfs/fs.h          |  3 ++
> > > > >  3 files changed, 95 insertions(+), 2 deletions(-)
> > > > > 
> > > > 
> > > > Still broken for me, unfortunately.
> > > 
> > > I'm curious about your workload. Is it something like continuous,
> > > non-stop deduplication or cloning for example?
> > > 
> > > Did you actually experience -ENOSPC errors?
> > > 
> > > Also, if you unmount and then mount again the fs, any unused
> > > block
> > > groups should be scheduled for deletion once the cleaner thread
> > > runs,
> > > at least if there's not a huge workload for a minute or two.
> > 
> > Apologies, I must have clarified the workload.
> > 
> > The easiest way to reproduce the original problem was to run a
> > metadata
> > balance, e. g. `btrfs balance start -m /` or
> > `for u in {0..75..5}; do btrfs balance start -musage=$u /`.
> > 
> > I originally spotted this regression by observing an abnormally low
> > metadata space utilization and trying to run the above balance,
> > only to
> > discover that it makes overallocation even worse.
> > 
> > So, with the patchset applied, the _metadata balance_ is still
> > broken.
> > I cannot say anything about normal usage, but any attempt to
> > balance
> > metadata immediately explodes the metadata allocation. I did not
> > experience a -ENOSPC per se, but the balance (that I used as a
> > reproducer) eventually consumed *all* unallocated space on the
> > volume
> > and stopped making progress. Attempting to cancel that balance
> > RO'ed
> > the filesystem and I had to reboot.
> 
> I tried that but I didn't see any problem.
> Here's a sample test script:
> 
> https://pastebin.com/raw/vc70BqY5
> 
> > 
> > > 
> > > On top of this patchset, can you try the following patch?
> > > 
> > > https://pastebin.com/raw/U7b0e03g
> > > 
> > > If that still doesn't help, try the following the following patch
> > > on
> > > top of this patchset:
> > > 
> > > https://pastebin.com/raw/rKiSmG5w
> > 
> > Should I still try these patches to see if they help with metadata
> > balance, or is that a different problem then?
> 
> Yes. Please try them, given that I can't reproduce your issue with
> the balance.

Hi,

The second pastebinned patch (applied on top of the patchset and the
first pastebinned patch) passes my balance smoke test.

As for reproducing the issue: it's a long shot, but could you try on a
4K-native block device (i. e. where `blockdev --getpbsz` tells `4096`)?

> 
> I could trigger getting 1 or 2 at most unused metadata block groups
> after having a bunch of tasks doing metadata operations, and patch
> 3/5
> is to address that case.
> 
> So one thing I'm curious about, and I asked before, is that if you
> unmount and mount again the fs, after a few minutes (without running
> that balance), you should get space reclaimed,
> as any empty block groups are scheduled for deletion at mount time,
> and the next time the cleaner kthread runs, it deletes them.

Yes, that indeed does happen. Cancelling the balance and letting the
system idle for a while reclaims all (or almost all) overallocated
space. However, that only happens _after_ I cancel the balance. If I do
not cancel it, it ends up consuming all unallocated space on the volume
and ceases to make progress. So, basically, at least the balance
operation becomes completely unusable.

-- 
Ivan Shapovalov / intelfx /

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

  reply	other threads:[~2024-02-02  0:52 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-01-25 10:26 [PATCH 0/5] btrfs: some fixes around unused block deletion fdmanana
2024-01-25 10:26 ` [PATCH 1/5] btrfs: add and use helper to check if block group is used fdmanana
2024-01-25 10:26 ` [PATCH 2/5] btrfs: do not delete unused block group if it may be used soon fdmanana
2024-01-25 10:26 ` [PATCH 3/5] btrfs: add new unused block groups to the list of unused block groups fdmanana
2024-01-25 10:26 ` [PATCH 4/5] btrfs: document what the spinlock unused_bgs_lock protects fdmanana
2024-01-25 10:26 ` [PATCH 5/5] btrfs: add comment about list_is_singular() use at btrfs_delete_unused_bgs() fdmanana
2024-01-25 15:16 ` [PATCH 0/5] btrfs: some fixes around unused block deletion Johannes Thumshirn
2024-01-25 20:57 ` Josef Bacik
2024-01-25 21:32 ` Boris Burkov
2024-01-27 21:39 ` Ivan Shapovalov
2024-01-29 12:49   ` Filipe Manana
2024-01-29 17:56     ` Ivan Shapovalov
2024-01-29 20:28       ` Filipe Manana
2024-02-02  0:52         ` Ivan Shapovalov [this message]
2024-02-02 16:48           ` Filipe Manana

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=64552ef1b8713e29bf31c18e92f610ef3cdd82ea.camel@intelfx.name \
    --to=intelfx@intelfx.name \
    --cc=fdmanana@kernel.org \
    --cc=linux-btrfs@vger.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;
as well as URLs for NNTP newsgroup(s).