Linux kernel -stable discussions
 help / color / mirror / Atom feed
From: Greg KH <gregkh@linuxfoundation.org>
To: Sasha Levin <sashal@kernel.org>
Cc: stable@vger.kernel.org, Filipe Manana <fdmanana@suse.com>,
	Boris Burkov <boris@bur.io>, David Sterba <dsterba@suse.com>
Subject: Re: [PATCH 6.6.y] btrfs: don't skip remaining extrefs if dir not found during log replay
Date: Fri, 22 Aug 2025 10:41:58 +0200	[thread overview]
Message-ID: <2025082219-decal-wired-6568@gregkh> (raw)
In-Reply-To: <20250819001451.192078-1-sashal@kernel.org>

On Mon, Aug 18, 2025 at 08:14:51PM -0400, Sasha Levin wrote:
> From: Filipe Manana <fdmanana@suse.com>
> 
> [ Upstream commit 24e066ded45b8147b79c7455ac43a5bff7b5f378 ]
> 
> During log replay, at add_inode_ref(), if we have an extref item that
> contains multiple extrefs and one of them points to a directory that does
> not exist in the subvolume tree, we are supposed to ignore it and process
> the remaining extrefs encoded in the extref item, since each extref can
> point to a different parent inode. However when that happens we just
> return from the function and ignore the remaining extrefs.
> 
> The problem has been around since extrefs were introduced, in commit
> f186373fef00 ("btrfs: extended inode refs"), but it's hard to hit in
> practice because getting extref items encoding multiple extref requires
> getting a hash collision when computing the offset of the extref's
> key. The offset if computed like this:
> 
>   key.offset = btrfs_extref_hash(dir_ino, name->name, name->len);
> 
> and btrfs_extref_hash() is just a wrapper around crc32c().
> 
> Fix this by moving to next iteration of the loop when we don't find
> the parent directory that an extref points to.
> 
> Fixes: f186373fef00 ("btrfs: extended inode refs")
> CC: stable@vger.kernel.org # 6.1+
> Reviewed-by: Boris Burkov <boris@bur.io>
> Signed-off-by: Filipe Manana <fdmanana@suse.com>
> Signed-off-by: David Sterba <dsterba@suse.com>
> Signed-off-by: Sasha Levin <sashal@kernel.org>
> ---
>  fs/btrfs/tree-log.c | 25 ++++++++++++++++++++++---
>  1 file changed, 22 insertions(+), 3 deletions(-)

This isn't applying to the 6.6.y queue right now:
	patching file fs/btrfs/tree-log.c
	Hunk #1 succeeded at 1446 (offset 1 line).
	Hunk #2 FAILED at 1458.
	Hunk #3 succeeded at 1512 (offset 10 lines).
	1 out of 3 hunks FAILED -- rejects in file fs/btrfs/tree-log.c

Can you rebase and resend?

thanks,

greg k-h

      reply	other threads:[~2025-08-22  8:42 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-08-18 10:48 FAILED: patch "[PATCH] btrfs: don't skip remaining extrefs if dir not found during" failed to apply to 6.6-stable tree gregkh
2025-08-19  0:14 ` [PATCH 6.6.y] btrfs: don't skip remaining extrefs if dir not found during log replay Sasha Levin
2025-08-22  8:41   ` Greg KH [this message]

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=2025082219-decal-wired-6568@gregkh \
    --to=gregkh@linuxfoundation.org \
    --cc=boris@bur.io \
    --cc=dsterba@suse.com \
    --cc=fdmanana@suse.com \
    --cc=sashal@kernel.org \
    --cc=stable@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