Deleted Added
sdiff udiff text old ( 204615 ) new ( 204654 )
full compact
1/*
2 * Copyright (c) 2002 Networks Associates Technology, Inc.
3 * All rights reserved.
4 *
5 * This software was developed for the FreeBSD Project by Marshall
6 * Kirk McKusick and Network Associates Laboratories, the Security
7 * Research Division of Network Associates, Inc. under DARPA/SPAWAR
8 * contract N66001-01-C-8035 ("CBOSS"), as part of the DARPA CHATS

--- 34 unchanged lines hidden (view full) ---

43 The Regents of the University of California. All rights reserved.\n";
44#endif /* not lint */
45
46#ifndef lint
47static char sccsid[] = "@(#)newfs.c 8.13 (Berkeley) 5/1/95";
48#endif /* not lint */
49#endif
50#include <sys/cdefs.h>
51__FBSDID("$FreeBSD: head/sbin/newfs/newfs.c 204654 2010-03-03 19:25:28Z sobomax $");
52
53/*
54 * newfs: friendly front end to mkfs
55 */
56#include <sys/param.h>
57#include <sys/stat.h>
58#include <sys/disk.h>
59#include <sys/disklabel.h>

--- 12 unchanged lines hidden (view full) ---

72#include <paths.h>
73#include <stdarg.h>
74#include <stdio.h>
75#include <stdlib.h>
76#include <string.h>
77#include <syslog.h>
78#include <unistd.h>
79
80#include <libutil.h>
81
82#include "newfs.h"
83
84int Eflag; /* Erase previous disk contents */
85int Lflag; /* add a volume label */
86int Nflag; /* run without writing file system */
87int Oflag = 2; /* file system format (1 => UFS1, 2 => UFS2) */
88int Rflag; /* regression test */
89int Uflag; /* enable soft updates for file system */
90int Xflag = 0; /* exit in middle of newfs for testing */
91int Jflag; /* enable gjournal for file system */
92int lflag; /* enable multilabel for file system */
93int nflag; /* do not create .snap directory */
94intmax_t fssize; /* file system size */
95int64_t sectorsize; /* bytes/sector */
96int realsectorsize; /* bytes/sector in hardware */
97int64_t fsize = 0; /* fragment size */
98int64_t bsize = 0; /* block size */
99int64_t maxbsize = 0; /* maximum clustering */
100int64_t maxblkspercg = MAXBLKSPERCG; /* maximum blocks per cylinder group */
101int minfree = MINFREE; /* free space threshold */
102int opt = DEFAULTOPT; /* optimization preference (space or time) */
103int64_t density; /* number of bytes per inode */
104int64_t maxcontig = 0; /* max contiguous blocks to allocate */
105int64_t maxbpg; /* maximum blocks per file in a cyl group */
106int64_t avgfilesize = AVFILESIZ;/* expected average file size */
107int64_t avgfilesperdir = AFPDIR;/* expected number of files per directory */
108u_char *volumelabel = NULL; /* volume label for filesystem */
109struct uufsd disk; /* libufs disk structure */
110
111static char device[MAXPATHLEN];
112static u_char bootarea[BBSIZE];
113static int is_file; /* work on a file, not a device */
114static char *dkname;
115static char *disktype;
116static int unlabeled;
117
118static void getfssize(intmax_t *, const char *p, intmax_t, intmax_t);
119static struct disklabel *getdisklabel(char *s);
120static void rewritelabel(char *s, struct disklabel *lp);
121static void usage(void);
122
123ufs2_daddr_t part_ofs; /* partition offset in blocks, used with files */
124
125int
126main(int argc, char *argv[])
127{
128 struct partition *pp;
129 struct disklabel *lp;

--- 36 unchanged lines hidden (view full) ---

166 if ((Oflag = atoi(optarg)) < 1 || Oflag > 2)
167 errx(1, "%s: bad file system format value",
168 optarg);
169 break;
170 case 'R':
171 Rflag = 1;
172 break;
173 case 'S':
174 rval = expand_number(optarg, &sectorsize);
175 if (rval < 0 || sectorsize <= 0)
176 errx(1, "%s: bad sector size", optarg);
177 break;
178 case 'T':
179 disktype = optarg;
180 break;
181 case 'U':
182 Uflag = 1;
183 break;
184 case 'X':
185 Xflag++;
186 break;
187 case 'a':
188 rval = expand_number(optarg, &maxcontig);
189 if (rval < 0 || maxcontig <= 0)
190 errx(1, "%s: bad maximum contiguous blocks",
191 optarg);
192 break;
193 case 'b':
194 rval = expand_number(optarg, &bsize);
195 if (rval < 0)
196 errx(1, "%s: bad block size",
197 optarg);
198 if (bsize < MINBSIZE)
199 errx(1, "%s: block size too small, min is %d",
200 optarg, MINBSIZE);
201 if (bsize > MAXBSIZE)
202 errx(1, "%s: block size too large, max is %d",
203 optarg, MAXBSIZE);
204 break;
205 case 'c':
206 rval = expand_number(optarg, &maxblkspercg);
207 if (rval < 0 || maxblkspercg <= 0)
208 errx(1, "%s: bad blocks per cylinder group",
209 optarg);
210 break;
211 case 'd':
212 rval = expand_number(optarg, &maxbsize);
213 if (rval < 0 || maxbsize < MINBSIZE)
214 errx(1, "%s: bad extent block size", optarg);
215 break;
216 case 'e':
217 rval = expand_number(optarg, &maxbpg);
218 if (rval < 0 || maxbpg <= 0)
219 errx(1, "%s: bad blocks per file in a cylinder group",
220 optarg);
221 break;
222 case 'f':
223 rval = expand_number(optarg, &fsize);
224 if (rval < 0 || fsize <= 0)
225 errx(1, "%s: bad fragment size", optarg);
226 break;
227 case 'g':
228 rval = expand_number(optarg, &avgfilesize);
229 if (rval < 0 || avgfilesize <= 0)
230 errx(1, "%s: bad average file size", optarg);
231 break;
232 case 'h':
233 rval = expand_number(optarg, &avgfilesperdir);
234 if (rval < 0 || avgfilesperdir <= 0)
235 errx(1, "%s: bad average files per dir", optarg);
236 break;
237 case 'i':
238 rval = expand_number(optarg, &density);
239 if (rval < 0 || density <= 0)
240 errx(1, "%s: bad bytes per inode", optarg);
241 break;
242 case 'l':
243 lflag = 1;
244 break;
245 case 'm':
246 if ((minfree = atoi(optarg)) < 0 || minfree > 99)

--- 244 unchanged lines hidden (view full) ---

491 fprintf(stderr, "\t-n do not create .snap directory\n");
492 fprintf(stderr, "\t-m minimum free space %%\n");
493 fprintf(stderr, "\t-o optimization preference (`space' or `time')\n");
494 fprintf(stderr, "\t-p partition name (a..h)\n");
495 fprintf(stderr, "\t-r reserved sectors at the end of device\n");
496 fprintf(stderr, "\t-s file system size (sectors)\n");
497 exit(1);
498}