diff options
author | delphij <delphij@FreeBSD.org> | 2011-07-14 08:06:03 +0000 |
---|---|---|
committer | delphij <delphij@FreeBSD.org> | 2011-07-14 08:06:03 +0000 |
commit | 06a305b8e2f200eb899a60dbc53e3e60e656f1c2 (patch) | |
tree | 3276eedc9ed8a9ad51cd74f46374885d1f4007de /sbin/dumpfs | |
parent | ab777938ae6369a3680885303b4b6a5e6dbe850e (diff) | |
download | FreeBSD-src-06a305b8e2f200eb899a60dbc53e3e60e656f1c2.zip FreeBSD-src-06a305b8e2f200eb899a60dbc53e3e60e656f1c2.tar.gz |
Add a -l option to show file system's corresponding /dev/ufsid path.
This is useful for scripts that converts existing system's fstab to
use their /dev/ufsid devices.
MFC after: 2 weeks
Diffstat (limited to 'sbin/dumpfs')
-rw-r--r-- | sbin/dumpfs/dumpfs.8 | 11 | ||||
-rw-r--r-- | sbin/dumpfs/dumpfs.c | 20 |
2 files changed, 26 insertions, 5 deletions
diff --git a/sbin/dumpfs/dumpfs.8 b/sbin/dumpfs/dumpfs.8 index a489a47..858881a 100644 --- a/sbin/dumpfs/dumpfs.8 +++ b/sbin/dumpfs/dumpfs.8 @@ -28,7 +28,7 @@ .\" @(#)dumpfs.8 8.1 (Berkeley) 6/5/93 .\" $FreeBSD$ .\" -.Dd May 8, 2011 +.Dd Jul 14, 2011 .Dt DUMPFS 8 .Os .Sh NAME @@ -37,6 +37,7 @@ .Sh SYNOPSIS .Nm .Op Fl f +.Op Fl l .Op Fl m .Ar filesys | device .Sh DESCRIPTION @@ -44,7 +45,8 @@ 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 f , +.Fl l or .Fl m flag is specified. @@ -64,6 +66,11 @@ Fragment numbers may be converted to raw byte offsets by multiplying by the fragment size, which may be useful when recovering deleted data. .Pp If +.Fl l +is specified, the pathname to the file system's container derived from +its unique identifier is printed. +.Pp +If .Fl m is specified, a .Xr newfs 8 diff --git a/sbin/dumpfs/dumpfs.c b/sbin/dumpfs/dumpfs.c index eb92ba7..0ed9f59 100644 --- a/sbin/dumpfs/dumpfs.c +++ b/sbin/dumpfs/dumpfs.c @@ -79,6 +79,7 @@ static const char rcsid[] = struct uufsd disk; int dumpfs(const char *); +int dumpfsid(void); int dumpcg(void); int dumpfreespace(const char *, int); void dumpfreespacecg(int); @@ -92,11 +93,11 @@ int main(int argc, char *argv[]) { const char *name; - int ch, dofreespace, domarshal, eval; + int ch, dofreespace, domarshal, dolabel, eval; - dofreespace = domarshal = eval = 0; + dofreespace = domarshal = dolabel = eval = 0; - while ((ch = getopt(argc, argv, "fm")) != -1) { + while ((ch = getopt(argc, argv, "lfm")) != -1) { switch (ch) { case 'f': dofreespace++; @@ -104,6 +105,9 @@ main(int argc, char *argv[]) case 'm': domarshal = 1; break; + case 'l': + dolabel = 1; + break; case '?': default: usage(); @@ -129,6 +133,8 @@ main(int argc, char *argv[]) eval |= dumpfreespace(name, dofreespace); else if (domarshal) eval |= marshal(name); + else if (dolabel) + eval |= dumpfsid(); else eval |= dumpfs(name); ufs_disk_close(&disk); @@ -137,6 +143,14 @@ main(int argc, char *argv[]) } int +dumpfsid(void) +{ + + printf("/dev/ufsid/%x%x\n", afs.fs_id[0], afs.fs_id[1]); + return 0; +} + +int dumpfs(const char *name) { time_t fstime; |