From: "Darrick J. Wong" <djwong@kernel.org>
To: Christoph Hellwig <hch@lst.de>
Cc: cem@kernel.org, stable@vger.kernel.org, linux-xfs@vger.kernel.org
Subject: Re: [PATCH 5/6] xfs: adjust datadev sector count to reflect internal rt volumes
Date: Thu, 30 Jul 2026 08:04:42 -0700 [thread overview]
Message-ID: <20260730150442.GA3556460@frogsfrogsfrogs> (raw)
In-Reply-To: <20260730082204.GE10558@lst.de>
On Thu, Jul 30, 2026 at 10:22:04AM +0200, Christoph Hellwig wrote:
> On Wed, Jul 29, 2026 at 10:27:20PM -0700, Darrick J. Wong wrote:
> > From: Darrick J. Wong <djwong@kernel.org>
> >
> > A media scan of a filesystem containing an internal rt volume produced
> > an error in xfs_scrub phase 6 complaining about a truncated realtime
> > device. The rt device wasn't truncated, but the media scan code thought
> > we were trying to start a scan past the end of m_rtdev_targp. That in
> > turn is an alias for m_ddev_targp, but in xfs_configure_buftarg we set
> > nr_sectors to the size of the data section. Oops.
> >
> > On these filesystems, the internal rt section comes immediately after
> > the data section. We need to set the sector count for the data device
> > buftarg to the size of both sections. Without this, media scans don't
> > work and media failure notifications from the kernel will be discarded
> > silently.
> >
> > We also need to fix the superblock buffer recovery code to do the same.
>
> This feels wrong. Nothing should acess the internal rtdev through
> the data device buftarg.
It's the only one available, because xfs_setup_devices aliases
ddev_targp to rtdev_targp for internal rt volumes:
if (mp->m_sb.sb_rtstart) {
if (mp->m_rtdev_targp) {
xfs_warn(mp,
"can't use internal and external rtdev at the same time");
return -EINVAL;
}
mp->m_rtdev_targp = mp->m_ddev_targp;
}
So we're doing that anyway. We could separate them by creating a second
buftarg with a duplicate struct file, but that would involve a bunch of
rototillingi because a fair amount of code changes behavior on
rtdev==ddev now.
The only field that the media verification code uses is bt_nr_sectors,
which it uses to trim verification requests to wherever the filesystem
thinks is the end of the device. I could change that to call
bdev_nr_sectors() to fix the bug, but then we'd have to deal with media
failures for LBAs outside of the filesystem, which didn't seem ideal.
Also, if someone asynchronously reports a media error in the internal
rtdev to us through fs_holder_ops, the report will mention a range that
is beyond bt_nr_sectors but actually within the filesystem.
xfs_dax_notify_failure currently does the right thing because it doesn't
check bt_nr_sectors, but that also feels wrong. ;)
So I went with making bt_nr_sectors bigger because that felt the least
awkward. IIRC it's supposed to represent the location of the end of the
filesystem on a particular blockdev, not the highest LBA that the fs
can xfs_buf_read(), right?
> Is this an LLM report bug, or did you actually run it using scrub? If
> so can you help with the reproducer?
I found it accidentally while triaging another bug that LOLLM found.
I turned on the tracepoints (and btrace) for debugging and noticed that
it wasn't issuing reads for the internal rt device:
# mkfs.xfs /dev/sda -r zoned=1
# mount /dev/sda /mnt/scratch
# trace-cmd <big ugly command line> &
# xfs_io -x -c 'verifymedia -r' /mnt/scratch
--D
next prev parent reply other threads:[~2026-07-30 15:04 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-30 5:26 [PATCHSET] xfs: LLM-inspired bug fixes, part 5 Darrick J. Wong
2026-07-30 5:26 ` [PATCH 1/6] xfs: fix unit conversions in per_binval computation Darrick J. Wong
2026-07-30 8:18 ` Christoph Hellwig
2026-07-30 5:26 ` [PATCH 2/6] xfs: fix short ifork reaping computation in xreap_bmapi_binval Darrick J. Wong
2026-07-30 8:19 ` Christoph Hellwig
2026-07-30 5:26 ` [PATCH 3/6] xfs: fix name string recording in slowpath pptr tracepoints Darrick J. Wong
2026-07-30 8:19 ` Christoph Hellwig
2026-07-30 5:27 ` [PATCH 4/6] xfs: don't leak dqacct if rhashtable insertion fails Darrick J. Wong
2026-07-30 8:20 ` Christoph Hellwig
2026-07-30 5:27 ` [PATCH 5/6] xfs: adjust datadev sector count to reflect internal rt volumes Darrick J. Wong
2026-07-30 8:22 ` Christoph Hellwig
2026-07-30 15:04 ` Darrick J. Wong [this message]
2026-07-30 5:27 ` [PATCH 6/6] xfs: fix the rtrmap and rtrefcount _maxlevels_ondisk functions Darrick J. Wong
2026-07-30 8:26 ` Christoph Hellwig
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=20260730150442.GA3556460@frogsfrogsfrogs \
--to=djwong@kernel.org \
--cc=cem@kernel.org \
--cc=hch@lst.de \
--cc=linux-xfs@vger.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 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.