All of lore.kernel.org
 help / color / mirror / Atom feed
From: fdmanana@kernel.org
To: linux-btrfs@vger.kernel.org
Subject: [PATCH 0/3] btrfs: fix a corruption after snapshoting a new subvolume
Date: Thu, 19 Oct 2023 13:19:27 +0100	[thread overview]
Message-ID: <cover.1697716427.git.fdmanana@suse.com> (raw)

From: Filipe Manana <fdmanana@suse.com>

Starting with kernel 6.5, we no longer commit the transaction used to
create a subvolume when we finish creating the subvolume. This behaviour
was introduced for performance reasons and done with commit 1b53e51a4a8f
("btrfs: don't commit transaction for every subvol create"). However this
allows for a corruption if we snapshot a subvolume created in the current
transaction, where basically we get a snapshot root that points to an
extent buffer that was not written. This makes attempt to read the extent
buffer later to fail, either with the infamous "parent transid verify
failed ..." error or with checksum failures.

More details on the changelog of the first patch, and the remaining patches
are just cleanups.

Filipe Manana (3):
  btrfs: fix unwritten extent buffer after snapshoting a new subvolume
  btrfs: use bool for return type of btrfs_block_can_be_shared()
  btrfs: make the logic from btrfs_block_can_be_shared() easier to read

 fs/btrfs/backref.c    | 14 +++++++++-----
 fs/btrfs/backref.h    |  3 ++-
 fs/btrfs/ctree.c      | 39 +++++++++++++++++++++++++++++----------
 fs/btrfs/ctree.h      |  5 +++--
 fs/btrfs/relocation.c |  7 ++++---
 5 files changed, 47 insertions(+), 21 deletions(-)

-- 
2.40.1


             reply	other threads:[~2023-10-19 12:19 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-10-19 12:19 fdmanana [this message]
2023-10-19 12:19 ` [PATCH 1/3] btrfs: fix unwritten extent buffer after snapshoting a new subvolume fdmanana
2023-10-19 12:19 ` [PATCH 2/3] btrfs: use bool for return type of btrfs_block_can_be_shared() fdmanana
2023-10-19 13:30   ` Anand Jain
2023-10-19 12:19 ` [PATCH 3/3] btrfs: make the logic from btrfs_block_can_be_shared() easier to read fdmanana
2023-10-23 15:11 ` [PATCH 0/3] btrfs: fix a corruption after snapshoting a new subvolume Josef Bacik
2023-10-23 18:42 ` 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.1697716427.git.fdmanana@suse.com \
    --to=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 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.