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 <darrick.wong@xxxxxxxxxx> --- 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 e1d5ee9..b97d020 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 700d12c..4c3a802 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 9df5f37..128068e 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__ */ _______________________________________________ xfs mailing list xfs@xxxxxxxxxxx http://oss.sgi.com/mailman/listinfo/xfs