static char *sccsid
= "@(#)tunefs.c 4.2 (Berkeley) %G%";
* tunefs: change layout parameters to an existing file system.
char *cp
, *special
, *name
;
special
= argv
[argc
- 1];
if (stat(special
, &st
) < 0) {
special
= sprintf(device
, "/dev/%s", special
);
fprintf(stderr
, "tunefs: "); perror(special
);
if ((st
.st_mode
& S_IFMT
) != S_IFBLK
&&
(st
.st_mode
& S_IFMT
) != S_IFCHR
)
fatal("%s: not a block or character device", special
);
for (; argc
> 0 && argv
[0][0] == '-'; argc
--, argv
++) {
for (cp
= &argv
[0][1]; *cp
; cp
++)
name
= "maximum contiguous block count";
fatal("-a: missing %s", name
);
fatal("%s: %s must be >= 1",
fprintf(stdout
, "%s changes from %d to %d\n",
name
, sblock
.fs_maxcontig
, i
);
"rotational delay between contiguous blocks";
fatal("-d: missing %s", name
);
fatal("%s: bad %s", *argv
, name
);
"%s changes from %dms to %dms\n",
name
, sblock
.fs_rotdelay
, i
);
"maximum blocks per file in a cylinder group";
fatal("-e: missing %s", name
);
fatal("%s: %s must be >= 1",
fprintf(stdout
, "%s changes from %d to %d\n",
name
, sblock
.fs_maxbpg
, i
);
name
= "minimum percentage of free space";
fatal("-m: missing %s", name
);
fatal("%s: bad %s", *argv
, name
);
"%s changes from %d%% to %d%%\n",
name
, sblock
.fs_minfree
, i
);
fatal("-%c: unknown flag", *cp
);
bwrite(SBLOCK
, (char *)&sblock
, SBSIZE
);
for (i
= 0; i
< sblock
.fs_ncg
; i
++)
bwrite(fsbtodb(&sblock
, cgsblock(&sblock
, i
)),
(char *)&sblock
, SBSIZE
);
fprintf(stderr
, "Usage: tunefs tuneup-options special-device\n");
fprintf(stderr
, "where tuneup-options are:\n");
fprintf(stderr
, "\t-a maximum contigouous blocks\n");
fprintf(stderr
, "\t-d rotational delay between contiguous blocks\n");
fprintf(stderr
, "\t-e maximum blocks per file in a cylinder group\n");
fprintf(stderr
, "\t-m minimum percentage of free space\n");
fprintf(stderr
, "cannot open");
if (bread(SBLOCK
, (char *)fs
, SBSIZE
)) {
fprintf(stderr
, "bad super block");
if (fs
->fs_magic
!= FS_MAGIC
) {
fprintf(stderr
, "%s: bad magic number\n", file
);
if (lseek(fi
, blk
* DEV_BSIZE
, 0) < 0) {
if (write(fi
, buf
, size
) != size
) {
if (lseek(fi
, bno
* DEV_BSIZE
, 0) < 0)
if ((i
= read(fi
, buf
, cnt
)) != cnt
) {
for(i
=0; i
<sblock
.fs_bsize
; i
++)
fprintf(stderr
, "tunefs: ");
fprintf(stderr
, fmt
, arg1
, arg2
);