From: Darrick J. Wong Date: Tue, 1 Jul 2025 17:45:14 +0000 (-0700) Subject: mkfs: autodetect log stripe unit for external log devices X-Git-Tag: v6.16.0~11 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=5015906cf669607697cd8a6d02b3654581fe65f3;p=thirdparty%2Fxfsprogs-dev.git mkfs: autodetect log stripe unit for external log devices If we're using an external log device and the caller doesn't give us a lsunit, use the block device geometry (if present) to set it. Signed-off-by: "Darrick J. Wong" Reviewed-by: John Garry --- diff --git a/mkfs/xfs_mkfs.c b/mkfs/xfs_mkfs.c index 8b946f3e..b6de13ce 100644 --- a/mkfs/xfs_mkfs.c +++ b/mkfs/xfs_mkfs.c @@ -3615,7 +3615,8 @@ _("log stripe unit (%d) must be a multiple of the block size (%d)\n"), } /* - * check that log sunit is modulo fsblksize or default it to dsunit. + * check that log sunit is modulo fsblksize; default it to dsunit for + * an internal log; or the log device stripe unit if it's external. */ if (lsunit) { /* convert from 512 byte blocks to fs blocks */ @@ -3624,6 +3625,10 @@ _("log stripe unit (%d) must be a multiple of the block size (%d)\n"), cfg->loginternal && cfg->dsunit) { /* lsunit and dsunit now in fs blocks */ cfg->lsunit = cfg->dsunit; + } else if (cfg->sb_feat.log_version == 2 && + !cfg->loginternal) { + /* use the external log device properties */ + cfg->lsunit = DTOBT(ft->log.sunit, cfg->blocklog); } if (cfg->sb_feat.log_version == 2 &&