From owner-freebsd-arch Thu Sep 20 9:14:34 2001 Delivered-To: freebsd-arch@freebsd.org Received: from matrix.eurocontrol.fr (matrix.eurocontrol.fr [147.196.254.254]) by hub.freebsd.org (Postfix) with ESMTP id A670C37B415 for ; Thu, 20 Sep 2001 09:14:28 -0700 (PDT) Received: from caerdonn.eurocontrol.fr (caerdonn.eurocontrol.fr [147.196.51.214]) (using TLSv1 with cipher EDH-RSA-DES-CBC3-SHA (168/168 bits)) (Client CN "caerdonn.eurocontrol.fr", Issuer CN "CA ITM" (not verified)) by matrix.eurocontrol.fr (Postfix/TLS) with ESMTP id A063E22D7 for ; Thu, 20 Sep 2001 18:14:24 +0200 (CEST) Received: by caerdonn.eurocontrol.fr (Postfix/TLS, from userid 1193) id A114E109; Thu, 20 Sep 2001 18:14:23 +0200 (CEST) Date: Thu, 20 Sep 2001 18:14:23 +0200 From: Ollivier Robert To: freebsd-arch@freebsd.org Subject: New option for newfs Message-ID: <20010920181423.A99633@caerdonn.eurocontrol.fr> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.2.5i X-Operating-System: FreeBSD 5.0-CURRENT Sender: owner-freebsd-arch@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.ORG I want to add a new option to newfs in order to maximise the number of cylinders per cg (to reduce fragmentation and head movement). Right now, one can use '-c' to specify another value but 1. the default is 22 (calculated for a 8k/1k FS) regardless of the FS (i.e. it will still be 22 even though you choose a 16k/2k FS). 2. newfs barfs when '-c' argument is too high. Proposal: a new option ('-M') that says: ignore -c if present, calculate the maxcpg allowed for the given argument to newfs and use that. Here is a diff and and example. Comments ? 662 [18:11] roberto@caerdonn:sbin/newfs> /usr/obj/src/src/sbin/newfs/newfs -M -N -b 16384 -f 4096 -c 20 /dev/da0s1h Warning: -c is ignored when -M is specified Warning: Block size and bytes per inode restrict cylinders per group to 159. Warning: 624 sector(s) in last cylinder unallocated /dev/da0s1h: 9174416 sectors in 2240 cylinders of 1 tracks, 4096 sectors 4479.7MB in 15 cyl groups (159 c/g, 318.00MB/g, 19072 i/g) super-block backups (for fsck -b #) at: 32, 651296, 1302560, 1953824, 2605088, 3256352, 3907616, 4558880, 5210144, 5861408, 6512672, 7163936, 7815200, 8466464, 9117728 Index: mkfs.c =================================================================== RCS file: /home/ncvs/src/sbin/newfs/mkfs.c,v retrieving revision 1.40 diff -u -2 -r1.40 mkfs.c --- mkfs.c 20 Aug 2001 14:53:05 -0000 1.40 +++ mkfs.c 20 Sep 2001 15:51:23 -0000 @@ -91,4 +91,5 @@ * variables set up by front end. */ +extern int Mflag; /* take as many cpg as possible */ extern int Nflag; /* run mkfs without writing file system */ extern int Oflag; /* format as an 4.3BSD file system */ @@ -454,6 +455,11 @@ printf("Bytes per inode restrict"); printf(" cylinders per group to %d.\n", sblock.fs_cpg); - if (cpgflg) - exit(27); + if (Mflag) { + cpg = sblock.fs_cpg; + } + else { + if (cpgflg) + exit(27); + } } sblock.fs_cgsize = fragroundup(&sblock, CGSIZE(&sblock)); Index: newfs.c =================================================================== RCS file: /home/ncvs/src/sbin/newfs/newfs.c,v retrieving revision 1.40 diff -u -2 -r1.40 newfs.c --- newfs.c 19 Aug 2001 08:19:37 -0000 1.40 +++ newfs.c 20 Sep 2001 16:06:07 -0000 @@ -110,4 +110,5 @@ */ #define DESCPG 22 /* desired fs_cpg */ +#define MAXCPG 999 /* unrealistic value */ /* @@ -162,4 +163,5 @@ #define NSECTORS 4096 /* number of sectors */ +int Mflag; /* take as many cpg as you can */ int Nflag; /* run without writing file system */ int Oflag; /* format as an 4.3BSD file system */ @@ -232,7 +234,11 @@ progname = *argv; - opstring = "NOS:T:Ua:b:c:d:e:f:g:h:i:k:l:m:n:o:p:r:s:t:u:vx:"; + opstring = "MNOS:T:Ua:b:c:d:e:f:g:h:i:k:l:m:n:o:p:r:s:t:u:vx:"; while ((ch = getopt(argc, argv, opstring)) != -1) switch (ch) { + case 'M': + Mflag = 1; + cpg = MAXCPG; + break; case 'N': Nflag = 1; @@ -266,4 +272,8 @@ break; case 'c': + if (Mflag) { + printf("Warning: -c is ignored when -M is specified\n"); + break; + } if ((cpg = atoi(optarg)) <= 0) fatal("%s: bad cylinders/group", optarg); @@ -652,4 +662,6 @@ #endif fprintf(stderr, "where fsoptions are:\n"); + fprintf(stderr, + "\t-M use as many cylinders per group as possible (-c is ignored)\n"); fprintf(stderr, "\t-N do not create file system, just print out parameters\n"); -- Ollivier ROBERT -=- Eurocontrol EEC/ITM -=- Ollivier.Robert@eurocontrol.fr FreeBSD caerdonn.eurocontrol.fr 5.0-CURRENT #46: Wed Jan 3 15:52:00 CET 2001 To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-arch" in the body of the message