All of lore.kernel.org
 help / color / mirror / Atom feed
From: Qu Wenruo <wqu@suse.com>
To: linux-btrfs@vger.kernel.org
Subject: [PATCH 0/4] btrfs: DEV_STATS item related minor fixes
Date: Tue,  7 Apr 2026 19:03:57 +0930	[thread overview]
Message-ID: <cover.1775553952.git.wqu@suse.com> (raw)

[BACKGROUND]
DEV_STATS (objectid, not type) items are storing the error counts for
each device. It's updated every time an error is hit, including
the following types:

- READ errors
- WRITE errors
- FLUSH errors
  Above alls are all errors directly returned from the device.

- CORRUPTION errors
  Aka, checksum mismatch.

- GENERATION errors
  Metadata generation mismatch.

[MINOR BUGS]
Recently when debugging an error reported about rejected dev-replace,
the device tree dump includes a DEV_STATS item for devid 0.

I'm wondering if that DEV_STATS item will ever be deleted, but
unfortunately it will never be deleted.

Normally it's not a big deal, as the DEV_STATS are normally all zeros.

But if it's not, and a new dev-replace is started and interrupted, at
the next mount the replace target device will suddenly inherit all the
error records, giving end users false alerts about a completely good
device.

[FIX]
The first 2 are manually removing the DEV_STATS items when dev-replace
and dev-removal finishes.

The 3rd patch is a more generic fix by forcing btrfs to update/create
DEV_STATS item after a new device is added.
This means for patched kernels, even there is some old DEV_STATS left,
the kernel will never re-use them during device add or dev-replace.

The last one is to reduce unnecessary DEV_STATS updates.

Qu Wenruo (4):
  btrfs: remove the dev stats item for replace target device
  btrfs: remove the dev stats item when removing a device
  btrfs: always update/create the dev stats item when adding a new
    device
  btrfs: avoid unnecessary dev stats updates

 fs/btrfs/dev-replace.c | 11 +++++++++-
 fs/btrfs/volumes.c     | 48 ++++++++++++++++++++++++++++++++++++++++--
 fs/btrfs/volumes.h     |  1 +
 3 files changed, 57 insertions(+), 3 deletions(-)

-- 
2.53.0


             reply	other threads:[~2026-04-07  9:34 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-04-07  9:33 Qu Wenruo [this message]
2026-04-07  9:33 ` [PATCH 1/4] btrfs: remove the dev stats item for replace target device Qu Wenruo
2026-04-07  9:33 ` [PATCH 2/4] btrfs: remove the dev stats item when removing a device Qu Wenruo
2026-04-07  9:34 ` [PATCH 3/4] btrfs: always update/create the dev stats item when adding a new device Qu Wenruo
2026-04-07  9:34 ` [PATCH 4/4] btrfs: avoid unnecessary dev stats updates Qu Wenruo
2026-04-13 18:59 ` [PATCH 0/4] btrfs: DEV_STATS item related minor fixes David Sterba
2026-04-13 21:58   ` Qu Wenruo
2026-04-13 22:03     ` Qu Wenruo
2026-05-25 13:06 ` David Sterba
2026-05-26 16:52   ` David Sterba

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.1775553952.git.wqu@suse.com \
    --to=wqu@suse.com \
    --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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.