Skip to content

Commit

Permalink
dumpfs(8): add option to only print superblock information
Browse files Browse the repository at this point in the history
Add an option to dumpfs, `-s`, that only prints the super block information.

Reviewed by:	chs, imp
Differential Revision:	https://reviews.freebsd.org/D30881
  • Loading branch information
rob-wing committed Jul 2, 2021
1 parent aa0ab68 commit dc35484
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 9 deletions.
12 changes: 9 additions & 3 deletions sbin/dumpfs/dumpfs.8
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@
.\" @(#)dumpfs.8 8.1 (Berkeley) 6/5/93
.\" $FreeBSD$
.\"
.Dd May 16, 2013
.Dd July 2, 2021
.Dt DUMPFS 8
.Os
.Sh NAME
Expand All @@ -39,16 +39,18 @@
.Op Fl f
.Op Fl l
.Op Fl m
.Op Fl s
.Ar filesys | device
.Sh DESCRIPTION
The
.Nm
utility prints out the UFS super block and cylinder group information
for the file system or special device specified, unless the
.Fl f ,
.Fl l
.Fl l ,
.Fl m ,
or
.Fl m
.Fl s
flag is specified.
The listing is very long and detailed.
This
Expand Down Expand Up @@ -97,6 +99,10 @@ The
.Fl r
flag is needed if the filesystem uses
.Xr gjournal 8 .
.Pp
If
.Fl s
is specified, only the super block information is printed.
.Sh SEE ALSO
.Xr fs 5 ,
.Xr fsck 8 ,
Expand Down
17 changes: 11 additions & 6 deletions sbin/dumpfs/dumpfs.c
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ static const char rcsid[] =

static struct uufsd disk;

static int dumpfs(const char *);
static int dumpfs(const char *, int);
static int dumpfsid(void);
static int dumpcg(void);
static int dumpfreespace(const char *, int);
Expand All @@ -96,11 +96,11 @@ int
main(int argc, char *argv[])
{
const char *name;
int ch, dofreespace, domarshal, dolabel, eval;
int ch, dofreespace, domarshal, dolabel, dosb, eval;

dofreespace = domarshal = dolabel = eval = 0;
dofreespace = domarshal = dolabel = dosb = eval = 0;

while ((ch = getopt(argc, argv, "lfm")) != -1) {
while ((ch = getopt(argc, argv, "lfms")) != -1) {
switch (ch) {
case 'f':
dofreespace++;
Expand All @@ -111,6 +111,9 @@ main(int argc, char *argv[])
case 'l':
dolabel = 1;
break;
case 's':
dosb = 1;
break;
case '?':
default:
usage();
Expand Down Expand Up @@ -139,7 +142,7 @@ main(int argc, char *argv[])
else if (dolabel)
eval |= dumpfsid();
else
eval |= dumpfs(name);
eval |= dumpfs(name, dosb);
ufs_disk_close(&disk);
}
exit(eval);
Expand All @@ -154,7 +157,7 @@ dumpfsid(void)
}

static int
dumpfs(const char *name)
dumpfs(const char *name, int dosb)
{
time_t fstime, fsmtime;
int64_t fssize;
Expand Down Expand Up @@ -324,6 +327,8 @@ dumpfs(const char *name)
printf("blocks in last group %ld\n\n",
(long)((fssize % afs.fs_fpg) / afs.fs_frag));
}
if (dosb)
return (0);
while ((i = cgread(&disk)) != 0) {
if (i == -1 || dumpcg())
goto err;
Expand Down

0 comments on commit dc35484

Please sign in to comment.