[PATCH 5/5] mkfs: use a sensible log sector size default

Darrick J. Wong
2024-03-13T02:12:35Z

From: Christoph Hellwig <hch@lst.de>

Currently the XFS log sector size defaults to the 512 bytes unless
explicitly overriden. Default to the device logical block size queried
by get_topology instead. If that is also 512 nothing changes, and if
the device logical block size is larger this prevents a mkfs failure
because the libxfs buffer cache blows up and as we obviously can't
use a smaller than hardware supported sector size. This fixes xfs/157
with a 4k block size device.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Signed-off-by: Darrick J. Wong <djwong@kernel.org>
---
mkfs/xfs_mkfs.c | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/mkfs/xfs_mkfs.c b/mkfs/xfs_mkfs.c
index 79d6eaa37a1a..18084b1cc6d1 100644
--- a/mkfs/xfs_mkfs.c
+++ b/mkfs/xfs_mkfs.c
@@ -2075,7 +2075,8 @@ static void
validate_log_sectorsize(
struct mkfs_params *cfg,
struct cli_params *cli,
- struct mkfs_default_params *dft)
+ struct mkfs_default_params *dft,
+ struct fs_topology *ft)
{

if (cli->loginternal && cli->lsectorsize &&
@@ -2090,7 +2091,7 @@ _("Can't change sector size on internal log!\n"));
else if (cli->loginternal)
cfg->lsectorsize = cfg->sectorsize;
else
- cfg->lsectorsize = dft->sectorsize;
+ cfg->lsectorsize = ft->log.logical_sector_size;
cfg->lsectorlog = libxfs_highbit32(cfg->lsectorsize);

if (cfg->lsectorsize < XFS_MIN_SECTORSIZE ||
@@ -4206,7 +4207,7 @@ main(
blocksize = cfg.blocksize;
sectorsize = cfg.sectorsize;

- validate_log_sectorsize(&cfg, &cli, &dft);
+ validate_log_sectorsize(&cfg, &cli, &dft, &ft);
validate_sb_features(&cfg, &cli);

/*