Home | History | Annotate | Line # | Download | only in newfs_lfs
config.h revision 1.1
      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