xfs
[Top] [All Lists]

[PATCH 6/5] mkfs: factor finobt changes into min log size when formattin

To: david@xxxxxxxxxxxxx
Subject: [PATCH 6/5] mkfs: factor finobt changes into min log size when formatting
From: "Darrick J. Wong" <darrick.wong@xxxxxxxxxx>
Date: Tue, 26 Jan 2016 20:44:48 -0800
Cc: xfs@xxxxxxxxxxx
Delivered-to: xfs@xxxxxxxxxxx
In-reply-to: <20160123003502.2475.99558.stgit@xxxxxxxxxxxxxxxx>
References: <20160123003502.2475.99558.stgit@xxxxxxxxxxxxxxxx>
User-agent: Mutt/1.5.21 (2010-09-15)
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__ */

<Prev in Thread] Current Thread [Next in Thread>