From: "Darrick J. Wong" <djwong@kernel.org>
To: Christoph Hellwig <hch@lst.de>
Cc: Carlos Maiolino <cem@kernel.org>,
John Garry <john.g.garry@oracle.com>,
linux-xfs@vger.kernel.org
Subject: Re: [PATCH 1/7] xfs: clean up the initial read logic in xfs_readsb
Date: Tue, 1 Jul 2025 07:55:29 -0700 [thread overview]
Message-ID: <20250701145529.GD10009@frogsfrogsfrogs> (raw)
In-Reply-To: <20250617105238.3393499-2-hch@lst.de>
On Tue, Jun 17, 2025 at 12:51:59PM +0200, Christoph Hellwig wrote:
> The initial sb read is always for a device logical block size
> buffer. The device logical block size is provided in the
> bt_logical_sectorsize in struct buftarg, so use that instead of the
> confusingly named xfs_getsize_buftarg buffer that reads it from the bdev.
>
> Update the comments surrounding the code to better describe what is going
> on.
>
> Signed-off-by: Christoph Hellwig <hch@lst.de>
Looks good,
Reviewed-by: "Darrick J. Wong" <djwong@kernel.org>
--D
> ---
> fs/xfs/xfs_buf.h | 1 -
> fs/xfs/xfs_mount.c | 21 +++++++++++----------
> 2 files changed, 11 insertions(+), 11 deletions(-)
>
> diff --git a/fs/xfs/xfs_buf.h b/fs/xfs/xfs_buf.h
> index 9d2ab567cf81..294dd9d61dbb 100644
> --- a/fs/xfs/xfs_buf.h
> +++ b/fs/xfs/xfs_buf.h
> @@ -376,7 +376,6 @@ extern void xfs_buftarg_wait(struct xfs_buftarg *);
> extern void xfs_buftarg_drain(struct xfs_buftarg *);
> int xfs_configure_buftarg(struct xfs_buftarg *btp, unsigned int sectorsize);
>
> -#define xfs_getsize_buftarg(buftarg) block_size((buftarg)->bt_bdev)
> #define xfs_readonly_buftarg(buftarg) bdev_read_only((buftarg)->bt_bdev)
>
> int xfs_buf_reverify(struct xfs_buf *bp, const struct xfs_buf_ops *ops);
> diff --git a/fs/xfs/xfs_mount.c b/fs/xfs/xfs_mount.c
> index 29276fe60df9..047100b080aa 100644
> --- a/fs/xfs/xfs_mount.c
> +++ b/fs/xfs/xfs_mount.c
> @@ -171,19 +171,16 @@ xfs_readsb(
> ASSERT(mp->m_ddev_targp != NULL);
>
> /*
> - * For the initial read, we must guess at the sector
> - * size based on the block device. It's enough to
> - * get the sb_sectsize out of the superblock and
> - * then reread with the proper length.
> - * We don't verify it yet, because it may not be complete.
> + * In the first pass, use the device sector size to just read enough
> + * of the superblock to extract the XFS sector size.
> + *
> + * The device sector size must be smaller than or equal to the XFS
> + * sector size and thus we can always read the superblock. Once we know
> + * the XFS sector size, re-read it and run the buffer verifier.
> */
> - sector_size = xfs_getsize_buftarg(mp->m_ddev_targp);
> + sector_size = mp->m_ddev_targp->bt_logical_sectorsize;
> buf_ops = NULL;
>
> - /*
> - * Allocate a (locked) buffer to hold the superblock. This will be kept
> - * around at all times to optimize access to the superblock.
> - */
> reread:
> error = xfs_buf_read_uncached(mp->m_ddev_targp, XFS_SB_DADDR,
> BTOBB(sector_size), &bp, buf_ops);
> @@ -247,6 +244,10 @@ xfs_readsb(
> /* no need to be quiet anymore, so reset the buf ops */
> bp->b_ops = &xfs_sb_buf_ops;
>
> + /*
> + * Keep a pointer of the sb buffer around instead of caching it in the
> + * buffer cache because we access it frequently.
> + */
> mp->m_sb_bp = bp;
> xfs_buf_unlock(bp);
> return 0;
> --
> 2.47.2
>
>
next prev parent reply other threads:[~2025-07-01 14:55 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-06-17 10:51 misc cleanups Christoph Hellwig
2025-06-17 10:51 ` [PATCH 1/7] xfs: clean up the initial read logic in xfs_readsb Christoph Hellwig
2025-07-01 14:55 ` Darrick J. Wong [this message]
2025-06-17 10:52 ` [PATCH 2/7] xfs: remove the call to sync_blockdev in xfs_configure_buftarg Christoph Hellwig
2025-06-17 12:09 ` John Garry
2025-06-24 14:07 ` Christoph Hellwig
2025-06-24 14:46 ` John Garry
2025-06-17 10:52 ` [PATCH 3/7] xfs: remove the call to bdev_validate_blocksize " Christoph Hellwig
2025-06-17 23:40 ` Dave Chinner
2025-06-18 5:05 ` Christoph Hellwig
2025-06-17 10:52 ` [PATCH 4/7] xfs: refactor xfs_calc_atomic_write_unit_max Christoph Hellwig
2025-06-17 11:44 ` John Garry
2025-06-18 5:08 ` Christoph Hellwig
2025-06-18 6:28 ` John Garry
2025-06-24 14:09 ` Christoph Hellwig
2025-06-24 15:03 ` John Garry
2025-06-17 10:52 ` [PATCH 5/7] xfs: rename the bt_bdev_* buftarg fields Christoph Hellwig
2025-06-17 12:02 ` John Garry
2025-06-18 5:10 ` Christoph Hellwig
2025-06-18 6:23 ` John Garry
2025-06-17 10:52 ` [PATCH 6/7] xfs: remove the bt_bdev_file buftarg field Christoph Hellwig
2025-06-17 10:52 ` [PATCH 7/7] xfs: remove the bt_meta_sectorsize field in struct buftarg Christoph Hellwig
2025-06-17 12:15 ` John Garry
2025-06-17 12:21 ` John Garry
2025-06-18 5:11 ` Christoph Hellwig
2025-06-17 23:51 ` Dave Chinner
2025-06-18 5:15 ` Christoph Hellwig
2025-06-19 2:42 ` Dave Chinner
2025-06-24 14:11 ` Christoph Hellwig
2025-06-24 23:55 ` Dave Chinner
2025-06-25 6:23 ` Christoph Hellwig
2025-06-18 8:09 ` kernel test robot
-- strict thread matches above, loose matches on Subject: below --
2025-07-01 10:40 misc cleanups v2 Christoph Hellwig
2025-07-01 10:40 ` [PATCH 1/7] xfs: clean up the initial read logic in xfs_readsb Christoph Hellwig
2025-07-01 16:43 ` 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=20250701145529.GD10009@frogsfrogsfrogs \
--to=djwong@kernel.org \
--cc=cem@kernel.org \
--cc=hch@lst.de \
--cc=john.g.garry@oracle.com \
--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.