public inbox for linux-xfs@vger.kernel.org
 help / color / mirror / Atom feed
From: xaiki@sgi.com
To: xfs@oss.sgi.com
Cc: Niv Sardi <xaiki@sgi.com>
Subject: [PATCH TAKE 2 6/6] less AGs for single disks configs.
Date: Tue, 13 Nov 2007 15:10:57 +1100	[thread overview]
Message-ID: <1194927057-26415-7-git-send-email-xaiki@sgi.com> (raw)
In-Reply-To: <1194927057-26415-6-git-send-email-xaiki@sgi.com>

From: Niv Sardi <xaiki@sgi.com>

get the underlying structure with get_subvol_stripe_wrapper(),
and pass sunit | swidth as an argument to calc_default_ag_geometry().

if it is set, we are in single disk, get XFS_AG_MAX_BLOCKS for FS >= 4TB,
and calculate ag numbers regarding to that.
get 4 AGs for FS < 4TB.

we calculate according to blocks or count if we have them, add an assert to
ensure we have one of the 2.
---
 xfsprogs/mkfs/xfs_mkfs.c |   28 ++++++++++++++++++++++++----
 1 files changed, 24 insertions(+), 4 deletions(-)

diff --git a/xfsprogs/mkfs/xfs_mkfs.c b/xfsprogs/mkfs/xfs_mkfs.c
index a8af6e2..e15d667 100644
--- a/xfsprogs/mkfs/xfs_mkfs.c
+++ b/xfsprogs/mkfs/xfs_mkfs.c
@@ -401,10 +401,11 @@ void
 calc_default_ag_geometry(
 	int		blocklog,
 	__uint64_t	dblocks,
+	int		multidisk,
 	__uint64_t	*agsize,
 	__uint64_t	*agcount)
 {
-	__uint64_t	blocks;
+	__uint64_t	blocks = 0;
 	__uint64_t	count = 0;
 	int		shift = 0;
 
@@ -436,6 +437,17 @@ calc_default_ag_geometry(
 	 *
 	 * This scales us up smoothly between min/max AG sizes.
 	 */
+
+	if (!multidisk) {
+		if (dblocks >= TERABYTES(4, blocklog)) {
+                        blocks = XFS_AG_MAX_BLOCKS(blocklog);
+                        goto done;
+                }
+                count = 4;
+
+                goto done;
+        }
+
 	if (dblocks > GIGABYTES(512, blocklog))
 		shift = 5;
 	else if (dblocks > GIGABYTES(8, blocklog))
@@ -447,8 +459,12 @@ calc_default_ag_geometry(
 	blocks = dblocks >> shift;
 
 done:
+	ASSERT (count || blocks);
 	if (!count)
 		count = dblocks / blocks + (dblocks % blocks != 0);
+	if (!blocks)
+		blocks = dblocks / count;
+
 	*agsize = blocks;
 	*agcount = count;
 }
@@ -1779,10 +1795,14 @@ _("size %s specified for log subvolume is too large, maximum is %lld blocks\n"),
 		agsize /= blocksize;
 		agcount = dblocks / agsize + (dblocks % agsize != 0);
 
-	} else if (daflag)	/* User-specified AG size */
+	} else if (daflag)	/* User-specified AG count */
 		agsize = dblocks / agcount + (dblocks % agcount != 0);
-	else
-		calc_default_ag_geometry(blocklog, dblocks, &agsize, &agcount);
+	else {
+		get_subvol_stripe_wrapper(dfile, SVTYPE_DATA,
+					  &xlv_dsunit, &xlv_dswidth, &sectoralign),
+			calc_default_ag_geometry(blocklog, dblocks, xlv_dsunit | xlv_dswidth,
+						 &agsize, &agcount);
+	}
 
 	/*
 	 * If the last AG is too small, reduce the filesystem size
-- 
1.5.3.5

  reply	other threads:[~2007-11-13  4:11 UTC|newest]

Thread overview: 52+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-10-29  7:56 Default mount options (that suck less) Niv Sardi
2007-10-29  8:55 ` David Chinner
2007-10-29 10:44   ` nscott
2007-10-29 14:01   ` Eric Sandeen
2007-10-29 21:26     ` David Chinner
2007-10-29 14:03 ` Eric Sandeen
2007-10-29 15:05   ` Hannes Dorbath
2007-10-29 15:07     ` Eric Sandeen
2007-10-30  8:40       ` Stewart Smith
2007-10-31  4:11         ` Nathan Scott
2007-10-31  4:13           ` Eric Sandeen
2007-10-29 21:05   ` David Chinner
2007-10-29 15:26 ` Eric Sandeen
2007-10-29 15:44   ` Chris Wedgwood
2007-10-29 15:51     ` Eric Sandeen
2007-10-30  0:45   ` Timothy Shimmin
2007-10-31 11:05     ` James Braid
2007-10-31 11:27       ` Justin Piszcz
2007-11-01  0:47         ` James Braid
2007-10-31 15:21       ` Eric Sandeen
2007-10-31 15:41       ` Chris Wedgwood
2007-11-01  0:32         ` James Braid
2007-10-29 23:48 ` David Chinner
2007-10-31 23:35 ` Niv Sardi
2007-10-31 23:40   ` Niv Sardi
2007-11-01  1:17     ` Niv Sardi
2007-11-01  2:27   ` Eric Sandeen
2007-11-12  2:28   ` Niv Sardi
2007-11-12  3:10     ` David Chinner
2007-11-12  3:48   ` [[PATCH, RESEND]] Default to log version 2 xaiki
2007-11-12  3:48     ` [[PATCH, RESEND]] Default to version 2 attributes xaiki
2007-11-12  3:48       ` [[PATCH, RESEND]] Drop the ability to turn unwritten extents off completly xaiki
2007-11-12  3:48         ` [[PATCH, RESEND]] V2 inodes per default, and move DFL bits to XFS_DFL_SB_VERSION_BITS, xaiki
2007-11-12  3:48           ` [[PATCH, RESEND]] reduce imaxpct for big filesystems, xaiki
2007-11-12  3:48             ` [[PATCH, RESEND]] less AGs for single disks configs xaiki
2007-11-12  9:01               ` David Chinner
2007-11-12 14:57                 ` Justin Piszcz
2007-11-12 20:31                   ` David Chinner
2007-11-12  6:33             ` [[PATCH, RESEND]] reduce imaxpct for big filesystems, David Chinner
2007-11-12  6:31           ` [[PATCH, RESEND]] V2 inodes per default, and move DFL bits to XFS_DFL_SB_VERSION_BITS, David Chinner
2007-11-13  0:51             ` Niv Sardi
2007-11-12  6:27         ` [[PATCH, RESEND]] Drop the ability to turn unwritten extents off completly David Chinner
2007-11-12  6:24       ` [[PATCH, RESEND]] Default to version 2 attributes David Chinner
2007-11-12  6:23     ` [[PATCH, RESEND]] Default to log version 2 David Chinner
2007-11-13  4:10 ` RESEND(2) xaiki
2007-11-13  4:10   ` [PATCH TAKE 2 1/6] Default to log version 2 xaiki
2007-11-13  4:10     ` [PATCH TAKE 2 2/6] Default to version 2 attributes xaiki
2007-11-13  4:10       ` [PATCH TAKE 2 3/6] Drop the ability to turn unwritten extents off completly xaiki
2007-11-13  4:10         ` [PATCH TAKE 2 4/6] V2 inodes per default, and move DFL bits to XFS_DFL_SB_VERSION_BITS, xaiki
2007-11-13  4:10           ` [PATCH TAKE 2 5/6] reduce imaxpct for big filesystems, xaiki
2007-11-13  4:10             ` xaiki [this message]
2007-11-13  4:47   ` RESEND(2) David Chinner

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1194927057-26415-7-git-send-email-xaiki@sgi.com \
    --to=xaiki@sgi.com \
    --cc=xfs@oss.sgi.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox