From: "Darrick J. Wong" <djwong@kernel.org>
To: Christoph Hellwig <hch@lst.de>
Cc: Andrey Albershteyn <aalbersh@kernel.org>,
Hans Holmberg <hans.holmberg@wdc.com>,
linux-xfs@vger.kernel.org
Subject: Re: [PATCH 13/43] FIXUP: xfs: allow internal RT devices for zoned mode
Date: Mon, 14 Apr 2025 13:16:34 -0700 [thread overview]
Message-ID: <20250414201634.GA25675@frogsfrogsfrogs> (raw)
In-Reply-To: <20250414053629.360672-14-hch@lst.de>
On Mon, Apr 14, 2025 at 07:35:56AM +0200, Christoph Hellwig wrote:
> Signed-off-by: Christoph Hellwig <hch@lst.de>
Seems fine to me now
Reviewed-by: "Darrick J. Wong" <djwong@kernel.org>
--D
> ---
> include/libxfs.h | 6 ++++++
> include/xfs_mount.h | 7 +++++++
> libxfs/init.c | 13 +++++++++----
> libxfs/rdwr.c | 2 ++
> repair/agheader.c | 4 +++-
> 5 files changed, 27 insertions(+), 5 deletions(-)
>
> diff --git a/include/libxfs.h b/include/libxfs.h
> index 82b34b9d81c3..b968a2b88da3 100644
> --- a/include/libxfs.h
> +++ b/include/libxfs.h
> @@ -293,4 +293,10 @@ static inline bool xfs_sb_version_hassparseinodes(struct xfs_sb *sbp)
> xfs_sb_has_incompat_feature(sbp, XFS_SB_FEAT_INCOMPAT_SPINODES);
> }
>
> +static inline bool xfs_sb_version_haszoned(struct xfs_sb *sbp)
> +{
> + return XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_5 &&
> + xfs_sb_has_incompat_feature(sbp, XFS_SB_FEAT_INCOMPAT_ZONED);
> +}
> +
> #endif /* __LIBXFS_H__ */
> diff --git a/include/xfs_mount.h b/include/xfs_mount.h
> index 7856acfb9f8e..bf9ebc25fc79 100644
> --- a/include/xfs_mount.h
> +++ b/include/xfs_mount.h
> @@ -53,6 +53,13 @@ struct xfs_groups {
> * rtgroup, so this mask must be 64-bit.
> */
> uint64_t blkmask;
> +
> + /*
> + * Start of the first group in the device. This is used to support a
> + * RT device following the data device on the same block device for
> + * SMR hard drives.
> + */
> + xfs_fsblock_t start_fsb;
> };
>
> /*
> diff --git a/libxfs/init.c b/libxfs/init.c
> index 5b45ed347276..a186369f3fd8 100644
> --- a/libxfs/init.c
> +++ b/libxfs/init.c
> @@ -560,7 +560,7 @@ libxfs_buftarg_init(
> progname);
> exit(1);
> }
> - if (xi->rt.dev &&
> + if ((xi->rt.dev || xi->rt.dev == xi->data.dev) &&
> (mp->m_rtdev_targp->bt_bdev != xi->rt.dev ||
> mp->m_rtdev_targp->bt_mount != mp)) {
> fprintf(stderr,
> @@ -577,7 +577,11 @@ libxfs_buftarg_init(
> else
> mp->m_logdev_targp = libxfs_buftarg_alloc(mp, xi, &xi->log,
> lfail);
> - mp->m_rtdev_targp = libxfs_buftarg_alloc(mp, xi, &xi->rt, rfail);
> + 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,
> + rfail);
> }
>
> /* Compute maximum possible height for per-AG btree types for this fs. */
> @@ -978,7 +982,7 @@ libxfs_flush_mount(
> error = err2;
> }
>
> - if (mp->m_rtdev_targp) {
> + if (mp->m_rtdev_targp && mp->m_rtdev_targp != mp->m_ddev_targp) {
> err2 = libxfs_flush_buftarg(mp->m_rtdev_targp,
> _("realtime device"));
> if (!error)
> @@ -1031,7 +1035,8 @@ libxfs_umount(
> free(mp->m_fsname);
> mp->m_fsname = NULL;
>
> - libxfs_buftarg_free(mp->m_rtdev_targp);
> + if (mp->m_rtdev_targp != mp->m_ddev_targp)
> + libxfs_buftarg_free(mp->m_rtdev_targp);
> if (mp->m_logdev_targp != mp->m_ddev_targp)
> libxfs_buftarg_free(mp->m_logdev_targp);
> libxfs_buftarg_free(mp->m_ddev_targp);
> diff --git a/libxfs/rdwr.c b/libxfs/rdwr.c
> index 35be785c435a..f06763b38bd8 100644
> --- a/libxfs/rdwr.c
> +++ b/libxfs/rdwr.c
> @@ -175,6 +175,8 @@ libxfs_getrtsb(
> if (!mp->m_rtdev_targp->bt_bdev)
> return NULL;
>
> + ASSERT(!mp->m_sb.sb_rtstart);
> +
> error = libxfs_buf_read_uncached(mp->m_rtdev_targp, XFS_RTSB_DADDR,
> XFS_FSB_TO_BB(mp, 1), 0, &bp, &xfs_rtsb_buf_ops);
> if (error)
> diff --git a/repair/agheader.c b/repair/agheader.c
> index 327ba041671f..048e6c3143b5 100644
> --- a/repair/agheader.c
> +++ b/repair/agheader.c
> @@ -485,7 +485,9 @@ secondary_sb_whack(
> *
> * size is the size of data which is valid for this sb.
> */
> - if (xfs_sb_version_hasmetadir(sb))
> + if (xfs_sb_version_haszoned(sb))
> + size = offsetofend(struct xfs_dsb, sb_rtreserved);
> + else if (xfs_sb_version_hasmetadir(sb))
> size = offsetofend(struct xfs_dsb, sb_pad);
> else if (xfs_sb_version_hasmetauuid(sb))
> size = offsetofend(struct xfs_dsb, sb_meta_uuid);
> --
> 2.47.2
>
>
next prev parent reply other threads:[~2025-04-14 20:16 UTC|newest]
Thread overview: 60+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-04-14 5:35 xfsprogs support for zoned devices v2 Christoph Hellwig
2025-04-14 5:35 ` [PATCH 01/43] xfs: generalize the freespace and reserved blocks handling Christoph Hellwig
2025-04-14 5:35 ` [PATCH 02/43] FIXUP: " Christoph Hellwig
2025-04-14 5:35 ` [PATCH 03/43] xfs: make metabtree reservations global Christoph Hellwig
2025-04-14 5:35 ` [PATCH 04/43] FIXUP: " Christoph Hellwig
2025-04-14 5:35 ` [PATCH 05/43] xfs: reduce metafile reservations Christoph Hellwig
2025-04-14 5:35 ` [PATCH 06/43] xfs: add a rtg_blocks helper Christoph Hellwig
2025-04-14 5:35 ` [PATCH 07/43] xfs: move xfs_bmapi_reserve_delalloc to xfs_iomap.c Christoph Hellwig
2025-04-14 5:35 ` [PATCH 08/43] xfs: support XFS_BMAPI_REMAP in xfs_bmap_del_extent_delay Christoph Hellwig
2025-04-14 5:35 ` [PATCH 09/43] xfs: add a xfs_rtrmap_highest_rgbno helper Christoph Hellwig
2025-04-14 5:35 ` [PATCH 10/43] xfs: define the zoned on-disk format Christoph Hellwig
2025-04-14 5:35 ` [PATCH 11/43] FIXUP: " Christoph Hellwig
2025-04-14 5:35 ` [PATCH 12/43] xfs: allow internal RT devices for zoned mode Christoph Hellwig
2025-04-14 5:35 ` [PATCH 13/43] FIXUP: " Christoph Hellwig
2025-04-14 20:16 ` Darrick J. Wong [this message]
2025-04-14 5:35 ` [PATCH 14/43] xfs: export zoned geometry via XFS_FSOP_GEOM Christoph Hellwig
2025-04-14 5:35 ` [PATCH 15/43] xfs: disable sb_frextents for zoned file systems Christoph Hellwig
2025-04-14 5:35 ` [PATCH 16/43] xfs: parse and validate hardware zone information Christoph Hellwig
2025-04-14 5:36 ` [PATCH 17/43] FIXUP: " Christoph Hellwig
2025-04-14 5:36 ` [PATCH 18/43] xfs: add the zoned space allocator Christoph Hellwig
2025-04-14 5:36 ` [PATCH 19/43] xfs: add support for zoned space reservations Christoph Hellwig
2025-04-14 5:36 ` [PATCH 20/43] FIXUP: " Christoph Hellwig
2025-04-14 5:36 ` [PATCH 21/43] xfs: implement zoned garbage collection Christoph Hellwig
2025-04-14 5:36 ` [PATCH 22/43] xfs: enable fsmap reporting for internal RT devices Christoph Hellwig
2025-04-14 5:36 ` [PATCH 23/43] xfs: enable the zoned RT device feature Christoph Hellwig
2025-04-14 5:36 ` [PATCH 24/43] xfs: support zone gaps Christoph Hellwig
2025-04-14 5:36 ` [PATCH 25/43] FIXUP: " Christoph Hellwig
2025-04-14 5:36 ` [PATCH 26/43] libfrog: report the zoned geometry Christoph Hellwig
2025-04-14 22:16 ` Darrick J. Wong
2025-04-14 5:36 ` [PATCH 27/43] xfs_repair: support repairing zoned file systems Christoph Hellwig
2025-04-15 0:38 ` Darrick J. Wong
2025-04-14 5:36 ` [PATCH 28/43] xfs_repair: fix the RT device check in process_dinode_int Christoph Hellwig
2025-04-15 0:34 ` Darrick J. Wong
2025-04-14 5:36 ` [PATCH 29/43] xfs_repair: validate rt groups vs reported hardware zones Christoph Hellwig
2025-04-15 0:39 ` Darrick J. Wong
2025-04-14 5:36 ` [PATCH 30/43] xfs_mkfs: factor out a validate_rtgroup_geometry helper Christoph Hellwig
2025-04-15 0:40 ` Darrick J. Wong
2025-04-14 5:36 ` [PATCH 31/43] xfs_mkfs: support creating file system with zoned RT devices Christoph Hellwig
2025-04-15 0:41 ` Darrick J. Wong
2025-04-14 5:36 ` [PATCH 32/43] xfs_mkfs: calculate zone overprovisioning when specifying size Christoph Hellwig
2025-04-14 5:36 ` [PATCH 33/43] xfs_mkfs: default to rtinherit=1 for zoned file systems Christoph Hellwig
2025-04-15 0:37 ` Darrick J. Wong
2025-04-15 8:09 ` Christoph Hellwig
2025-04-14 5:36 ` [PATCH 34/43] xfs_mkfs: reflink conflicts with zoned file systems for now Christoph Hellwig
2025-04-14 5:36 ` [PATCH 35/43] xfs_mkfs: document the new zoned options in the man page Christoph Hellwig
2025-04-14 5:36 ` [PATCH 36/43] man: document XFS_FSOP_GEOM_FLAGS_ZONED Christoph Hellwig
2025-04-15 0:36 ` Darrick J. Wong
2025-04-14 5:36 ` [PATCH 37/43] xfs_io: correctly report RGs with internal rt dev in bmap output Christoph Hellwig
2025-04-14 5:36 ` [PATCH 38/43] xfs_io: don't re-query fs_path information in fsmap_f Christoph Hellwig
2025-04-14 5:36 ` [PATCH 39/43] xfs_io: handle internal RT devices in fsmap output Christoph Hellwig
2025-04-14 5:36 ` [PATCH 40/43] xfs_spaceman: handle internal RT devices Christoph Hellwig
2025-04-14 5:36 ` [PATCH 41/43] xfs_scrub: support internal RT device Christoph Hellwig
2025-04-15 0:35 ` Darrick J. Wong
2025-04-14 5:36 ` [PATCH 42/43] xfs_mdrestore: support internal RT devices Christoph Hellwig
2025-04-14 5:36 ` [PATCH 43/43] xfs_growfs: " Christoph Hellwig
2025-04-25 15:48 ` [PATCH 44/43] xfs_repair: fix libxfs abstraction mess Darrick J. Wong
2025-04-28 13:17 ` Christoph Hellwig
2025-04-28 16:28 ` Andrey Albershteyn
2025-04-29 12:24 ` Christoph Hellwig
2025-04-28 16:31 ` Andrey Albershteyn
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=20250414201634.GA25675@frogsfrogsfrogs \
--to=djwong@kernel.org \
--cc=aalbersh@kernel.org \
--cc=hans.holmberg@wdc.com \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox