Linux-XFS Archive mirror
 help / color / mirror / Atom feed
From: Brian Foster <bfoster@redhat.com>
To: Christoph Hellwig <hch@lst.de>
Cc: Chandan Babu R <chandan.babu@oracle.com>,
	"Darrick J. Wong" <djwong@kernel.org>,
	Dave Chinner <david@fromorbit.com>,
	Sam Sun <samsun1006219@gmail.com>,
	linux-xfs@vger.kernel.org
Subject: Re: [PATCH 2/3] xfs: restrict the h_size fixup in xlog_do_recovery_pass
Date: Fri, 10 May 2024 08:34:35 -0400	[thread overview]
Message-ID: <Zj4UW8bzYv7RGoST@bfoster> (raw)
In-Reply-To: <ZjDPIwcuh-j9JIjT@bfoster>

On Tue, Apr 30, 2024 at 06:59:47AM -0400, Brian Foster wrote:
> On Mon, Apr 29, 2024 at 07:15:52PM +0200, Christoph Hellwig wrote:
> > On Mon, Apr 29, 2024 at 08:18:44AM -0400, Brian Foster wrote:
> > > > -		if (h_len > h_size && h_len <= log->l_mp->m_logbsize &&
> > > > +		if (!xfs_has_reflink(log->l_mp) && xfs_has_reflink(log->l_mp) &&
> > > > +		    h_len > h_size && h_len <= log->l_mp->m_logbsize &&
> > > 
> > > ... but I'm going to assume this hasn't been tested. ;) Do you mean to
> > > also check !rmapbt here?
> > 
> > Heh.  Well, it has been tested in that we don't do the fixup for the
> > reproducer fixed by the previous patch and in that xfstests still passes.
> > I guess nothing in there hits the old mkfs fixup, which isn't surprising.
> > 
> 
> Yeah.. (sorry, just teasing about the testing.. ;).
> 
> > > Can you please also just double check that we still handle the original
> > > mkfs problem correctly after these changes? I think that just means mkfs
> > > from a sufficiently old xfsprogs using a larger log stripe unit, and
> > > confirm the fs mounts (with a warning).
> > 
> > Yeah.  Is there any way to commit a fs image to xfstests so that we
> > actually regularly test for it?
> > 
> 
> Not sure.. ideally we could fuzz the log record header somehow or
> another to test for these various scenarios, since we clearly broke this
> once already.
> 
> I don't quite recall if I looked into that at the time of the original
> workaround. To Darrick's point, I wonder if there would be some use to
> an expert logformat command or something that allowed for some bonkers
> parameters (assuming something like that doesn't exist already).
> 
> I'm out on PTO for (at least) today, but I can take a closer look at
> that once I'm back and caught up...
> 

I've had a chance to poke at this a bit and so far I don't think it's as
straightforward as I'd hoped. The logformat command already exists,
which makes it pretty easy to malformat a log record, but the recovery
code only runs into this path on a dirty log. I suspect the original
issue that prompted this logic was something like a crash-recovery test
leading to log record trimming (i.e. simulated torn log writes) and then
happening onto previously mkfs-formatted log records that way, but that
is a guess at this point.

I did play around a bit with fuzzing h_size for those sorts of tests
(i.e. xfs/141), but that ran into other issues. I went back to using
xfsprogs v4.3 or so and that eventually also produces an unmountable
filesystem with a similar error (even with the h_size fix patch). It
fails to locate the head/tail, which is obviously necessary in order to
process the log and perform record validation, so I'm wondering if
something else changed on the kernel side to further gate this scenario.
Of course it's also possible I'm looking at things wrong and this is
just orthogonal to the original problem.

But given all of that, I am a little skeptical on the value of retaining
this logic at all. Does whatever test case that recently uncovered the
h_size problem leave a mountable filesystem, or does it just work around
bad behavior to provide a more graceful failure condition?

Brian


  reply	other threads:[~2024-05-10 12:34 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-04-29  7:01 fix h_size validation Christoph Hellwig
2024-04-29  7:01 ` [PATCH 1/3] xfs: fix log recovery buffer allocation for the legacy h_size fixup Christoph Hellwig
2024-04-29 12:18   ` Brian Foster
2024-04-29 17:13     ` Christoph Hellwig
2024-04-29 15:53   ` Darrick J. Wong
2024-04-29  7:01 ` [PATCH 2/3] xfs: restrict the h_size fixup in xlog_do_recovery_pass Christoph Hellwig
2024-04-29 12:18   ` Brian Foster
2024-04-29 17:15     ` Christoph Hellwig
2024-04-30 10:59       ` Brian Foster
2024-05-10 12:34         ` Brian Foster [this message]
2024-04-29 15:55   ` Darrick J. Wong
2024-04-29  7:02 ` [PATCH 3/3] xfs: clean up buffer allocation " Christoph Hellwig
2024-04-29 12:18   ` Brian Foster
2024-04-29 15:56   ` Darrick J. Wong

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=Zj4UW8bzYv7RGoST@bfoster \
    --to=bfoster@redhat.com \
    --cc=chandan.babu@oracle.com \
    --cc=david@fromorbit.com \
    --cc=djwong@kernel.org \
    --cc=hch@lst.de \
    --cc=linux-xfs@vger.kernel.org \
    --cc=samsun1006219@gmail.com \
    /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 read-only IMAP folder(s) and NNTP newsgroup(s).