From: Darrick J. Wong Date: Thu, 4 Feb 2016 21:41:42 +0000 (+1100) Subject: mkfs: factor finobt changes into min log size when formatting X-Git-Tag: v4.5.0-rc1~32 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=e50c6371fc14b720a1fa3f6dccae7323a237ffe6;p=thirdparty%2Fxfsprogs-dev.git mkfs: factor finobt changes into min log size when formatting Since the finobt affects the size of the log reservations, we need to be able to include its effects in the calculation of the minimum log size. (Not really a problem now, but adding rmapbt will give this one some bite.) Signed-off-by: Darrick J. Wong Reviewed-by: Brian Foster Signed-off-by: Dave Chinner --- diff --git a/mkfs/maxtrres.c b/mkfs/maxtrres.c index e1d5ee97a..b97d020a6 100644 --- a/mkfs/maxtrres.c +++ b/mkfs/maxtrres.c @@ -36,7 +36,8 @@ max_trans_res( int inodelog, int dirblocklog, int logversion, - int log_sunit) + int log_sunit, + int finobt) { xfs_sb_t *sbp; xfs_mount_t mount; @@ -68,6 +69,8 @@ max_trans_res( (dirversion == 2 ? XFS_SB_VERSION_DIRV2BIT : 0) | (logversion > 1 ? XFS_SB_VERSION_LOGV2BIT : 0) | XFS_DFL_SB_VERSION_BITS; + if (finobt) + sbp->sb_features_ro_compat |= XFS_SB_FEAT_RO_COMPAT_FINOBT; libxfs_mount(&mount, sbp, 0,0,0,0); maxfsb = xfs_log_calc_minimum_size(&mount); diff --git a/mkfs/xfs_mkfs.c b/mkfs/xfs_mkfs.c index 700d12c85..4c3a80262 100644 --- a/mkfs/xfs_mkfs.c +++ b/mkfs/xfs_mkfs.c @@ -2406,7 +2406,7 @@ an AG size that is one stripe unit smaller, for example %llu.\n"), min_logblocks = max_trans_res(crcs_enabled, dirversion, sectorlog, blocklog, inodelog, dirblocklog, - logversion, lsunit); + logversion, lsunit, finobt); ASSERT(min_logblocks); min_logblocks = MAX(XFS_MIN_LOG_BLOCKS, min_logblocks); if (!logsize && dblocks >= (1024*1024*1024) >> blocklog) diff --git a/mkfs/xfs_mkfs.h b/mkfs/xfs_mkfs.h index 9df5f3760..128068e8b 100644 --- a/mkfs/xfs_mkfs.h +++ b/mkfs/xfs_mkfs.h @@ -84,6 +84,6 @@ extern void res_failed (int err); /* maxtrres.c */ extern int max_trans_res (int crcs_enabled, int dirversion, int sectorlog, int blocklog, int inodelog, int dirblocklog, - int logversion, int log_sunit); + int logversion, int log_sunit, int finobt); #endif /* __XFS_MKFS_H__ */