xref: /netbsd-src/sbin/newfs_lfs/config.h (revision 89c5a767f8fc7a4633b2d409966e2becbb98ff92)
1 /*	$NetBSD: config.h,v 1.1 1999/03/18 17:18:05 perseant Exp $	*/
2 
3 /*-
4  * Copyright (c) 1991, 1993
5  *	The Regents of the University of California.  All rights reserved.
6  *
7  * Redistribution and use in source and binary forms, with or without
8  * modification, are permitted provided that the following conditions
9  * are met:
10  * 1. Redistributions of source code must retain the above copyright
11  *    notice, this list of conditions and the following disclaimer.
12  * 2. Redistributions in binary form must reproduce the above copyright
13  *    notice, this list of conditions and the following disclaimer in the
14  *    documentation and/or other materials provided with the distribution.
15  * 3. All advertising materials mentioning features or use of this software
16  *    must display the following acknowledgement:
17  *	This product includes software developed by the University of
18  *	California, Berkeley and its contributors.
19  * 4. Neither the name of the University nor the names of its contributors
20  *    may be used to endorse or promote products derived from this software
21  *    without specific prior written permission.
22  *
23  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
24  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
25  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
26  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
27  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
28  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
29  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
30  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
31  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
32  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
33  * SUCH DAMAGE.
34  *
35  *	@(#)config.h	8.3 (Berkeley) 5/24/95
36  */
37 
38 /*
39  * The first boot and super blocks are given in absolute disk addresses.
40  * The byte-offset forms are preferred, as they don't imply a sector size.
41  */
42 #define BBSIZE		8192
43 #define SBSIZE		8192
44 
45 /*
46  * The following two constants set the default block and fragment sizes.
47  * Both constants must be a power of 2 and meet the following constraints:
48  *	MINBSIZE <= DESBLKSIZE <= MAXBSIZE
49  *	sectorsize <= DESFRAGSIZE <= DESBLKSIZE
50  *	DESBLKSIZE / DESFRAGSIZE <= 8
51  */
52 #define	DFL_FRAGSIZE	1024
53 #define	DFL_BLKSIZE	8192
54 
55 /*
56  * Cylinder groups may have up to many cylinders. The actual
57  * number used depends upon how much information can be stored
58  * on a single cylinder. The default is to use 16 cylinders
59  * per group.
60  */
61 #define	DESCPG		16	/* desired fs_cpg */
62 
63 /*
64  * MINFREE gives the minimum acceptable percentage of file system
65  * blocks which may be free. If the freelist drops below this level
66  * only the superuser may continue to allocate blocks. This may
67  * be set to 0 if no reserve of free blocks is deemed necessary,
68  * however throughput drops by fifty percent if the file system
69  * is run at between 90% and 100% full; thus the default value of
70  * fs_minfree is 10%. With 10% free space, fragmentation is not a
71  * problem, so we choose to optimize for time.
72  */
73 #define MINFREE		10
74 #define DEFAULTOPT	FS_OPTTIME
75 
76 /*
77  * Preference for optimization.
78  */
79 #define FS_OPTTIME	0	/* minimize allocation time */
80 #define FS_OPTSPACE	1	/* minimize disk fragmentation */
81 
82 
83 /*
84  * ROTDELAY gives the minimum number of milliseconds to initiate
85  * another disk transfer on the same cylinder. It is used in
86  * determining the rotationally optimal layout for disk blocks
87  * within a file; the default of fs_rotdelay is 4ms.
88  */
89 #define ROTDELAY	4
90 
91 /*
92  * MAXCONTIG sets the default for the maximum number of blocks
93  * that may be allocated sequentially. Since UNIX drivers are
94  * not capable of scheduling multi-block transfers, this defaults
95  * to 1 (ie no contiguous blocks are allocated).
96  */
97 #define MAXCONTIG	1
98 
99 /*
100  * MAXBLKPG determines the maximum number of data blocks which are
101  * placed in a single cylinder group. The default is one indirect
102  * block worth of data blocks.
103  */
104 #define MAXBLKPG(bsize)	((bsize) / sizeof(daddr_t))
105 
106 /*
107  * Each file system has a number of inodes statically allocated.
108  * We allocate one inode slot per NFPI fragments, expecting this
109  * to be far more than we will ever need.
110  */
111 #define	NFPI		4
112 
113 /*
114  * For each cylinder we keep track of the availability of blocks at different
115  * rotational positions, so that we can lay out the data to be picked
116  * up with minimum rotational latency.  NRPOS is the default number of
117  * rotational positions that we distinguish.  With NRPOS of 8 the resolution
118  * of our summary information is 2ms for a typical 3600 rpm drive.
119  */
120 #define	NRPOS		8	/* number distinct rotational positions */
121 
122 /*
123  * The following constants set the default block and segment size for a log
124  * structured file system.  Both must be powers of two and the segment size
125  * must be a multiple of the block size.  We also set minimum block and segment
126  * sizes.
127  */
128 #define	LFS_MINSEGSIZE		(64*1024)
129 #define	DFL_LFSSEG		(1024 * 1024)
130 #define	DFL_LFSSEG_SHIFT	20
131 #define	DFL_LFSSEG_MASK		0xFFFFF
132 
133 #define	LFS_MINBLOCKSIZE	512
134 #define	DFL_LFSBLOCK		8192
135 #define	DFL_LFSBLOCK_SHIFT	13
136 #define	DFL_LFSBLOCK_MASK	0x1FFF
137 
138 #define DFL_LFSFRAG		1024
139 #define DFL_LFS_FFMASK		0x3FF
140 #define DFL_LFS_FFSHIFT		10
141 #define DFL_LFS_FBMASK		0x7
142 #define DFL_LFS_FBSHIFT		3
143