Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 29 Oct 2001 08:14:01 +1100
From:      Peter Jeremy <peter.jeremy@alcatel.com.au>
To:        Mikhail Teterin <mi@aldan.algebra.com>
Cc:        obrien@FreeBSD.org, cvs-committers@FreeBSD.org, freebsd-arch@FreeBSD.org
Subject:   Re: cvs commit: src/sbin/newfs newfs.8 newfs.c
Message-ID:  <20011029081400.H75481@gsmx07.alcatel.com.au>
In-Reply-To: <200110261630.f9QGTwa79290@aldan.algebra.com>; from mi@aldan.algebra.com on Fri, Oct 26, 2001 at 12:29:55PM -0400
References:  <20011026153413.Z75481@gsmx07.alcatel.com.au> <200110261630.f9QGTwa79290@aldan.algebra.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On 2001-Oct-26 12:29:55 -0400, Mikhail Teterin <mi@aldan.algebra.com> wrote:
>On 26 Oct, Peter Jeremy wrote:
>> On Sun, Oct 14, 2001 at 07:42:32PM -0700, David O'Brien wrote:
>>>"-c" was  a no-brainer as  noone has ever argued  that a low  "-c" was
>>>prefered (that I've seen).
>>
>> I can think of one case: For small filesystems, I often reduce "-c" to
>> ensure  that  there are  at  least  2  cylinder  groups (in  case  one
>> superblock gets  corrupted). Where  there are only  2-3 CG's,  I might
>> juggle "-c" and  the slice size to  make the last CG the  same size as
>> the other CGs.
>
>Why  don't we  make  newfs  apply this  (and/or  similar) heuristics  by
>default -- when no options are specified?

The following patch will make newfs default to 2 cylinder groups where
a filesystem has 4 or more cylinders.  (You probably don't want more
than 1 CG on smaller filesystems).  If this results in excessively
large CPs, it will be reduced in mkfs().  For filesystems just over
twice the maximum size of a cylinder group, having cpg = ncyls/3
would give a more even spread, but would require a more extensive
change in mkfs().  It's obviously impractical for newfs to tweak the
partition size to suit itself.

Note: This patch is untested.  It should apply to -stable as well, but
the line numbers for the 2nd hunk are too far out for patch(1) to
handle ("@@ -618,8 +622,14 @@" is the appropriate hunk header for
-stable).  When manually applied to -stable, newfs compiles.  (My
running -current is too out-of date to easily compile it).

Index: newfs.c
===================================================================
RCS file: /home/CVSROOT/src/sbin/newfs/newfs.c,v
retrieving revision 1.42
diff -u -r1.42 newfs.c
--- newfs.c	2001/10/04 12:24:18	1.42
+++ newfs.c	2001/10/28 20:52:29
@@ -102,12 +102,16 @@
 #define	DFL_BLKSIZE	8192
 
 /*
- * Cylinder groups may have up to many cylinders. The actual
- * number used depends upon how much information can be stored
- * on a single cylinder. The default is to use as many as possible
- * cylinders per group.
+ * Cylinder groups comprise an integral number of cylinders.  The
+ * actual number used depends upon how much information can be stored
+ * on a single cylinder. The default is to have a single group for
+ * filesystems smaller than TINYFS cylinders and MINCGS cylinder
+ * groups otherwise.  The actual number of cylinder groups may be
+ * larger than MINCGS due to restrictions on the number of cylinders
+ * per group.
  */
-#define	DESCPG		65536	/* desired fs_cpg ("infinity") */
+#define	TINYFS		4	/* Default to 1 CG below this size */
+#define	MINCGS		2	/* Default to this many cylinder groups */
 
 /*
  * Once upon a time...
@@ -548,8 +552,14 @@
 	ncyls = fssize / secpercyl;
 	if (ncyls == 0)
 		ncyls = 1;	/* XXX */
-	if (cpg == 0)
-		cpg = DESCPG < ncyls ? DESCPG : ncyls;
+	/*
+	 * By default we try to create MINCGS cylinder groups.  For
+	 * tiny filesystems, this is impractical.  On large filesystems,
+	 * cpg will be further limited to the largest possible size
+	 * (restricted by the blocks/inodes per group) within mkfs().
+	 */
+	if (!cpgflg)
+		cpg = ncyls < TINYFS ? ncyls : (ncyls + MINCGS - 1) / MINCGS;
 	else if (cpg > ncyls) {
 		cpg = ncyls;
 		printf(

Peter

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-arch" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20011029081400.H75481>