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 7/7] xfs: remove the bt_meta_sectorsize field in struct buftarg
Date: Tue, 1 Jul 2025 09:51:51 -0700 [thread overview]
Message-ID: <20250701165151.GJ10009@frogsfrogsfrogs> (raw)
In-Reply-To: <20250701104125.1681798-8-hch@lst.de>
On Tue, Jul 01, 2025 at 12:40:41PM +0200, Christoph Hellwig wrote:
> The file system only has a single file system sector size. Read that
> from the in-core super block to avoid confusion about the two different
> "sector sizes" stored in the buftarg.
Yeah, that whole bt_meta_sectorsize stuff was confusing.
> Note that this loosens the
> alignment asserts for memory backed buftargs that set the page size here.
Doesn't matter at all since shmem files are byte addressable anyway. :)
> Signed-off-by: Christoph Hellwig <hch@lst.de>
> ---
> fs/xfs/xfs_buf.c | 20 +++++---------------
> fs/xfs/xfs_buf.h | 15 ---------------
> fs/xfs/xfs_buf_mem.c | 2 --
> 3 files changed, 5 insertions(+), 32 deletions(-)
>
> diff --git a/fs/xfs/xfs_buf.c b/fs/xfs/xfs_buf.c
> index b73da43f489c..0f20d9514d0d 100644
> --- a/fs/xfs/xfs_buf.c
> +++ b/fs/xfs/xfs_buf.c
> @@ -387,17 +387,18 @@ xfs_buf_map_verify(
> struct xfs_buftarg *btp,
> struct xfs_buf_map *map)
> {
> + struct xfs_mount *mp = btp->bt_mount;
> xfs_daddr_t eofs;
>
> /* Check for IOs smaller than the sector size / not sector aligned */
> - ASSERT(!(BBTOB(map->bm_len) < btp->bt_meta_sectorsize));
> - ASSERT(!(BBTOB(map->bm_bn) & (xfs_off_t)btp->bt_meta_sectormask));
> + ASSERT(!(BBTOB(map->bm_len) < mp->m_sb.sb_sectsize));
Urgh, should the polarity of this be reversed?
ASSERT(BBTOB(map->bm_len) >= mp->m_sb.sb_sectsize);
Though I don't really care enough to block the patch so
Reviewed-by: "Darrick J. Wong" <djwong@kernel.org>
--D
> + ASSERT(!(BBTOB(map->bm_bn) & (xfs_off_t)(mp->m_sb.sb_sectsize - 1)));
>
> /*
> * Corrupted block numbers can get through to here, unfortunately, so we
> * have to check that the buffer falls within the filesystem bounds.
> */
> - eofs = XFS_FSB_TO_BB(btp->bt_mount, btp->bt_mount->m_sb.sb_dblocks);
> + eofs = XFS_FSB_TO_BB(mp, mp->m_sb.sb_dblocks);
> if (map->bm_bn < 0 || map->bm_bn >= eofs) {
> xfs_alert(btp->bt_mount,
> "%s: daddr 0x%llx out of range, EOFS 0x%llx",
> @@ -1726,10 +1727,6 @@ xfs_configure_buftarg(
>
> ASSERT(btp->bt_bdev != NULL);
>
> - /* Set up metadata sector size info */
> - btp->bt_meta_sectorsize = sectorsize;
> - btp->bt_meta_sectormask = sectorsize - 1;
> -
> error = bdev_validate_blocksize(btp->bt_bdev, sectorsize);
> if (error) {
> xfs_warn(btp->bt_mount,
> @@ -1816,14 +1813,7 @@ xfs_alloc_buftarg(
> if (error)
> goto error_free;
>
> - /*
> - * When allocating the buftargs we have not yet read the super block and
> - * thus don't know the file system sector size yet.
> - */
> - btp->bt_meta_sectorsize = bdev_logical_block_size(btp->bt_bdev);
> - btp->bt_meta_sectormask = btp->bt_meta_sectorsize - 1;
> -
> - error = xfs_init_buftarg(btp, btp->bt_meta_sectorsize,
> + error = xfs_init_buftarg(btp, bdev_logical_block_size(btp->bt_bdev),
> mp->m_super->s_id);
> if (error)
> goto error_free;
> diff --git a/fs/xfs/xfs_buf.h b/fs/xfs/xfs_buf.h
> index b269e115d9ac..8edfd9ed799e 100644
> --- a/fs/xfs/xfs_buf.h
> +++ b/fs/xfs/xfs_buf.h
> @@ -79,19 +79,6 @@ struct xfs_buf_cache {
> int xfs_buf_cache_init(struct xfs_buf_cache *bch);
> void xfs_buf_cache_destroy(struct xfs_buf_cache *bch);
>
> -/*
> - * The xfs_buftarg contains 2 notions of "sector size" -
> - *
> - * 1) The metadata sector size, which is the minimum unit and
> - * alignment of IO which will be performed by metadata operations.
> - * 2) The device logical sector size
> - *
> - * The first is specified at mkfs time, and is stored on-disk in the
> - * superblock's sb_sectsize.
> - *
> - * The latter is derived from the underlying device, and controls direct IO
> - * alignment constraints.
> - */
> struct xfs_buftarg {
> dev_t bt_dev;
> struct block_device *bt_bdev;
> @@ -99,8 +86,6 @@ struct xfs_buftarg {
> struct file *bt_file;
> u64 bt_dax_part_off;
> struct xfs_mount *bt_mount;
> - unsigned int bt_meta_sectorsize;
> - size_t bt_meta_sectormask;
> size_t bt_logical_sectorsize;
> size_t bt_logical_sectormask;
>
> diff --git a/fs/xfs/xfs_buf_mem.c b/fs/xfs/xfs_buf_mem.c
> index dcbfa274e06d..46f527750d34 100644
> --- a/fs/xfs/xfs_buf_mem.c
> +++ b/fs/xfs/xfs_buf_mem.c
> @@ -90,8 +90,6 @@ xmbuf_alloc(
> btp->bt_dev = (dev_t)-1U;
> btp->bt_bdev = NULL; /* in-memory buftargs have no bdev */
> btp->bt_file = file;
> - btp->bt_meta_sectorsize = XMBUF_BLOCKSIZE;
> - btp->bt_meta_sectormask = XMBUF_BLOCKSIZE - 1;
>
> error = xfs_init_buftarg(btp, XMBUF_BLOCKSIZE, descr);
> if (error)
> --
> 2.47.2
>
>
next prev parent reply other threads:[~2025-07-01 16:51 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
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
2025-07-01 10:40 ` [PATCH 2/7] xfs: remove the call to sync_blockdev in xfs_configure_buftarg Christoph Hellwig
2025-07-01 10:53 ` John Garry
2025-07-01 11:03 ` John Garry
2025-07-03 13:42 ` Christoph Hellwig
2025-07-01 10:40 ` [PATCH 3/7] xfs: add a xfs_group_type_buftarg helper Christoph Hellwig
2025-07-01 11:05 ` John Garry
2025-07-01 16:43 ` Darrick J. Wong
2025-07-01 10:40 ` [PATCH 4/7] xfs: refactor xfs_calc_atomic_write_unit_max Christoph Hellwig
2025-07-01 16:53 ` Darrick J. Wong
2025-07-01 10:40 ` [PATCH 5/7] xfs: rename the bt_bdev_* buftarg fields Christoph Hellwig
2025-07-01 10:54 ` John Garry
2025-07-01 16:45 ` Darrick J. Wong
2025-07-01 10:40 ` [PATCH 6/7] xfs: remove the bt_bdev_file buftarg field Christoph Hellwig
2025-07-01 11:09 ` John Garry
2025-07-01 16:46 ` Darrick J. Wong
2025-07-01 10:40 ` [PATCH 7/7] xfs: remove the bt_meta_sectorsize field in struct buftarg Christoph Hellwig
2025-07-01 16:51 ` Darrick J. Wong [this message]
2025-07-01 22:55 ` Dave Chinner
2025-07-03 13:44 ` Christoph Hellwig
-- strict thread matches above, loose matches on Subject: below --
2025-06-17 10:51 misc cleanups 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
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=20250701165151.GJ10009@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox