summaryrefslogtreecommitdiffstats
path: root/sbin/tunefs
diff options
context:
space:
mode:
authorjoerg <joerg@FreeBSD.org>1995-06-25 17:46:13 +0000
committerjoerg <joerg@FreeBSD.org>1995-06-25 17:46:13 +0000
commit17f2f0b53d1ba0d8ee309bad51c8b0d47055125a (patch)
tree00345a13a072d656e40c6abe580696fa4f5bf502 /sbin/tunefs
parent4b02197d9fe244d4ff24b97b480abdd0b4807cd5 (diff)
downloadFreeBSD-src-17f2f0b53d1ba0d8ee309bad51c8b0d47055125a.zip
FreeBSD-src-17f2f0b53d1ba0d8ee309bad51c8b0d47055125a.tar.gz
When tuneing filesystems with tunefs, it is not obvious what the current
parameters are. You can use dumpfs, but that's not obvious which settings are tuneable, and is far from clear to the non-guru (it's like using a hexdump of a tar archive to get a table-of-contents). There is also an undocumented option in the man page that can be dangerous. Suppose your disk driver decides to scramble all writes while you tell tunefs to update all backup superblocks. This suggested change adds a '-p' (print) switch to bring it in line with some SVR4 systems. (Slightly changed by me, mostly for optics. - joerg) Submitted by: peter@haywire.dialix.com
Diffstat (limited to 'sbin/tunefs')
-rw-r--r--sbin/tunefs/tunefs.812
-rw-r--r--sbin/tunefs/tunefs.c27
2 files changed, 39 insertions, 0 deletions
diff --git a/sbin/tunefs/tunefs.8 b/sbin/tunefs/tunefs.8
index b95ff9d..fbec66c 100644
--- a/sbin/tunefs/tunefs.8
+++ b/sbin/tunefs/tunefs.8
@@ -39,10 +39,12 @@
.Nd tune up an existing file system
.Sh SYNOPSIS
.Nm tunefs
+.Op Fl A
.Op Fl a Ar maxcontig
.Op Fl d Ar rotdelay
.Op Fl e Ar maxbpg
.Op Fl m Ar minfree
+.Op Fl p
.Bk -words
.Op Fl o Ar optimize_preference
.Ek
@@ -54,6 +56,10 @@ which affect the layout policies.
The parameters which are to be changed are indicated by the flags
given below:
.Bl -tag -width Ds
+.It Fl A
+The file system has several backups of the super-block. Specifying
+this option will cause all backups to be modified as well as the
+primary super-block. This is potentially dangerous - use with caution.
.It Fl a Ar maxcontig
This specifies the maximum number of contiguous blocks that will
be laid out before forcing a rotational delay (see
@@ -103,6 +109,12 @@ fragmentation on the disk. Optimization for space has much
higher overhead for file writes.
The kernel normally changes the preference automatically as
the percent fragmentation changes on the file system.
+.It Fl p
+This option shows a summary of what the current tuneable settings
+are on the selected file system. More detailed information can be
+obtained in the
+.Xr dumpfs 8
+manual page.
.El
.Sh SEE ALSO
.Xr fs 5 ,
diff --git a/sbin/tunefs/tunefs.c b/sbin/tunefs/tunefs.c
index e277a71..3677d89 100644
--- a/sbin/tunefs/tunefs.c
+++ b/sbin/tunefs/tunefs.c
@@ -74,6 +74,7 @@ void bwrite(daddr_t, char *, int);
int bread(daddr_t, char *, int);
void getsb(struct fs *, char *);
void usage __P((void));
+void printfs __P((void));
int
main(argc, argv)
@@ -117,6 +118,10 @@ again:
Aflag++;
continue;
+ case 'p':
+ printfs();
+ exit(0);
+
case 'a':
name = "maximum contiguous block count";
if (argc < 1)
@@ -233,6 +238,7 @@ usage()
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, "\t-o optimization preference (`space' or `time')\n");
+ fprintf(stderr, "\t-p no change - just prints current tuneable settings\n");
exit(2);
}
@@ -253,6 +259,27 @@ getsb(fs, file)
}
void
+printfs()
+{
+ warnx("maximum contiguous block count: (-a) %d",
+ sblock.fs_maxcontig);
+ warnx("rotational delay between contiguous blocks: (-d) %d ms",
+ sblock.fs_rotdelay);
+ warnx("maximum blocks per file in a cylinder group: (-e) %d",
+ sblock.fs_maxbpg);
+ warnx("minimum percentage of free space: (-m) %d%%",
+ sblock.fs_minfree);
+ warnx("optimization preference: (-o) %s",
+ sblock.fs_optim == FS_OPTSPACE ? "space" : "time");
+ if (sblock.fs_minfree >= MINFREE &&
+ sblock.fs_optim == FS_OPTSPACE)
+ warnx(OPTWARN, "time", ">=", MINFREE);
+ if (sblock.fs_minfree < MINFREE &&
+ sblock.fs_optim == FS_OPTTIME)
+ warnx(OPTWARN, "space", "<", MINFREE);
+}
+
+void
bwrite(blk, buf, size)
daddr_t blk;
char *buf;
OpenPOWER on IntegriCloud