From e50c6371fc14b720a1fa3f6dccae7323a237ffe6 Mon Sep 17 00:00:00 2001 From: "Darrick J. Wong" Date: Fri, 5 Feb 2016 08:41:42 +1100 Subject: [PATCH] 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 --- mkfs/maxtrres.c | 5 ++++- mkfs/xfs_mkfs.c | 2 +- mkfs/xfs_mkfs.h | 2 +- 3 files changed, 6 insertions(+), 3 deletions(-) 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__ */ -- 2.47.2