From: "Darrick J. Wong" <djwong@kernel.org>
To: Christoph Hellwig <hch@lst.de>
Cc: Andrey Albershteyn <aalbersh@kernel.org>, linux-xfs@vger.kernel.org
Subject: Re: [PATCH 07/10] libxfs: fix buftarg initialization for the RT device
Date: Fri, 25 Sep 2026 15:42:38 -0700 [thread overview]
Message-ID: <20260925224238.GV2705364@frogsfrogsfrogs> (raw)
In-Reply-To: <20260925051336.2997014-8-hch@lst.de>
On Fri, Sep 25, 2026 at 07:12:53AM +0200, Christoph Hellwig wrote:
> libxfs_buftarg_init currently sets the rtdev targp to the ddev one when
> no explicit RT device is provided, which allows tools like repair to
> proceed without a specified RT device when they should not, and
> potentially can cause data corruption.
>
> Fix this by delaying the RT buftarg initialization to libxfs_mount,
> where we can check if the superblock indicates an internal RT device.
> This works because all external callers of libxfs_buftarg_init never
> need the RT device as they just examine the sb and/or log,
>
> Signed-off-by: Christoph Hellwig <hch@lst.de>
😬😬😬
Reviewed-by: "Darrick J. Wong" <djwong@kernel.org>
--D
> ---
> libxfs/init.c | 11 +++++------
> 1 file changed, 5 insertions(+), 6 deletions(-)
>
> diff --git a/libxfs/init.c b/libxfs/init.c
> index 842a2e1e09a9..97c5286c00a9 100644
> --- a/libxfs/init.c
> +++ b/libxfs/init.c
> @@ -554,8 +554,7 @@ libxfs_buftarg_reinit(
> }
>
> if (mp->m_rtdev_targp && mp->m_rtdev_targp != mp->m_ddev_targp) {
> - if ((xi->rt.dev && xi->rt.dev == xi->data.dev) ||
> - mp->m_rtdev_targp->bt_bdev != xi->rt.dev ||
> + if (mp->m_rtdev_targp->bt_bdev != xi->rt.dev ||
> mp->m_rtdev_targp->bt_mount != mp) {
> fprintf(stderr,
> _("%s: bad buftarg reinit, rtdev\n"),
> @@ -587,10 +586,6 @@ libxfs_buftarg_init(
> mp->m_logdev_targp = mp->m_ddev_targp;
> else
> mp->m_logdev_targp = libxfs_buftarg_alloc(mp, xi, &xi->log);
> - if (!xi->rt.dev || xi->rt.dev == xi->data.dev)
> - mp->m_rtdev_targp = mp->m_ddev_targp;
> - else
> - mp->m_rtdev_targp = libxfs_buftarg_alloc(mp, xi, &xi->rt);
> }
>
> /* Compute maximum possible height for per-AG btree types for this fs. */
> @@ -739,6 +734,10 @@ libxfs_mount(
> if (flags & LIBXFS_MOUNT_REPORT_CORRUPTION)
> xfs_set_reporting_corruption(mp);
> libxfs_buftarg_init(mp, xi);
> + if (sb->sb_rtstart)
> + mp->m_rtdev_targp = mp->m_ddev_targp;
> + else if (xi->rt.dev)
> + mp->m_rtdev_targp = libxfs_buftarg_alloc(mp, xi, &xi->rt);
> libxfs_setup_write_error_injection(mp);
>
> if (xi->data.name)
> --
> 2.53.0
>
>
next prev parent reply other threads:[~2026-09-25 22:42 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-25 5:12 fix missing RT detection in libxfs v2 Christoph Hellwig
2026-09-25 5:12 ` [PATCH 01/10] libxfs: refactor the reinit case in libxfs_buftarg_init Christoph Hellwig
2026-09-25 22:32 ` Darrick J. Wong
2026-09-25 5:12 ` [PATCH 02/10] libxfs: split error injection option parsing out of libxfs_buftarg_init Christoph Hellwig
2026-09-25 22:33 ` Darrick J. Wong
2026-09-25 5:12 ` [PATCH 03/10] libxfs: remove buftarg member aliases Christoph Hellwig
2026-09-25 5:12 ` [PATCH 04/10] libxfs: unify buftarg handling with the kernel Christoph Hellwig
2026-09-25 22:37 ` Darrick J. Wong
2026-09-26 5:59 ` Christoph Hellwig
2026-09-27 15:18 ` Darrick J. Wong
2026-09-25 5:12 ` [PATCH 05/10] libxfs: make the size check in rtmount_init internal RT device aware Christoph Hellwig
2026-09-25 22:38 ` Darrick J. Wong
2026-09-25 5:12 ` [PATCH 06/10] libxfs: don't clear ->dev in libxfs_device_close Christoph Hellwig
2026-09-25 22:39 ` Darrick J. Wong
2026-09-25 5:12 ` [PATCH 07/10] libxfs: fix buftarg initialization for the RT device Christoph Hellwig
2026-09-25 22:42 ` Darrick J. Wong [this message]
2026-09-25 5:12 ` [PATCH 08/10] libxfs: rename bt_bdev* Christoph Hellwig
2026-09-25 22:43 ` Darrick J. Wong
2026-09-25 5:12 ` [PATCH 09/10] libfrog: improve ramdisk handling in platform_flush_device Christoph Hellwig
2026-09-25 22:47 ` Darrick J. Wong
2026-09-26 6:02 ` Christoph Hellwig
2026-09-27 15:22 ` Darrick J. Wong
2026-09-25 5:12 ` [PATCH 10/10] xfs_db: remove a double-whitespace in rdump_regfile_data Christoph Hellwig
2026-09-25 22:47 ` 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=20260925224238.GV2705364@frogsfrogsfrogs \
--to=djwong@kernel.org \
--cc=aalbersh@kernel.org \
--cc=hch@lst.de \
--cc=linux-xfs@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.