Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 22 Nov 2010 10:08:33 +0000 (UTC)
From:      "Andrey V. Elsukov" <ae@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r215671 - head/sbin/geom/class/part
Message-ID:  <201011221008.oAMA8X56086068@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: ae
Date: Mon Nov 22 10:08:33 2010
New Revision: 215671
URL: http://svn.freebsd.org/changeset/base/215671

Log:
  Always dump partition labels with `gpart backup`, but `gpart restore`
  does restore them only when -l option is specified [1]. Make number of
  entries field in backup format optional. Document -l and -r options of
  `gpart show` action.
  
  Suggested by:	pjd [1]
  MFC after:	1 week

Modified:
  head/sbin/geom/class/part/geom_part.c
  head/sbin/geom/class/part/gpart.8

Modified: head/sbin/geom/class/part/geom_part.c
==============================================================================
--- head/sbin/geom/class/part/geom_part.c	Mon Nov 22 09:59:10 2010	(r215670)
+++ head/sbin/geom/class/part/geom_part.c	Mon Nov 22 10:08:33 2010	(r215671)
@@ -100,10 +100,8 @@ struct g_command PUBSYM(class_commands)[
 		G_OPT_SENTINEL },
 	    "[-b start] [-s size] -t type [-i index] [-l label] [-f flags] geom"
 	},
-	{ "backup", 0, gpart_backup, {
-		{ 'l', "backup_labels", NULL, G_TYPE_BOOL},
-		G_OPT_SENTINEL },
-	    "[-l] geom"
+	{ "backup", 0, gpart_backup, G_NULL_OPTS,
+	    "geom"
 	},
 	{ "bootcode", 0, gpart_bootcode, {
 		{ 'b', GPART_PARAM_BOOTCODE, G_VAL_OPTIONAL, G_TYPE_STRING },
@@ -175,9 +173,10 @@ struct g_command PUBSYM(class_commands)[
 	},
 	{ "restore", 0, gpart_restore, {
 		{ 'F', "force", NULL, G_TYPE_BOOL },
+		{ 'l', "restore_labels", NULL, G_TYPE_BOOL },
 		{ 'f', "flags", GPART_FLAGS, G_TYPE_STRING },
 		G_OPT_SENTINEL },
-	    "[-F] [-f flags] provider [...]"
+	    "[-lF] [-f flags] provider [...]"
 	},
 	{ "recover", 0, gpart_issue, {
 		{ 'f', "flags", GPART_FLAGS, G_TYPE_STRING },
@@ -678,7 +677,7 @@ gpart_backup(struct gctl_req *req, unsig
 	const char *s, *scheme;
 	off_t sector, end;
 	off_t length, secsz;
-	int error, labels, i, windex, wblocks, wtype;
+	int error, i, windex, wblocks, wtype;
 
 	if (gctl_get_int(req, "nargs") != 1)
 		errx(EXIT_FAILURE, "Invalid number of arguments.");
@@ -696,7 +695,6 @@ gpart_backup(struct gctl_req *req, unsig
 	s = gctl_get_ascii(req, "arg0");
 	if (s == NULL)
 		abort();
-	labels = gctl_get_int(req, "backup_labels");
 	gp = find_geom(classp, s);
 	if (gp == NULL)
 		errx(EXIT_FAILURE, "No such geom: %s.", s);
@@ -734,14 +732,12 @@ gpart_backup(struct gctl_req *req, unsig
 			length = end - sector + 1;
 		}
 		s = find_provcfg(pp, "label");
-		printf("%-*s %*s %*jd %*jd",
+		printf("%-*s %*s %*jd %*jd %s %s\n",
 		    windex, find_provcfg(pp, "index"),
 		    wtype, find_provcfg(pp, "type"),
 		    wblocks, (intmax_t)sector,
-		    wblocks, (intmax_t)length);
-		if (labels && s != NULL)
-			printf(" %s", s);
-		printf(" %s\n", fmtattrib(pp));
+		    wblocks, (intmax_t)length,
+		    (s != NULL) ? s: "", fmtattrib(pp));
 	}
 	geom_deletetree(&mesh);
 }
@@ -769,7 +765,7 @@ gpart_restore(struct gctl_req *req, unsi
 	struct ggeom *gp;
 	const char *s, *flags, *errstr, *label;
 	char **ap, *argv[6], line[BUFSIZ], *pline;
-	int error, forced, i, l, nargs, created;
+	int error, forced, i, l, nargs, created, rl;
 	intmax_t n;
 
 	nargs = gctl_get_int(req, "nargs");
@@ -778,6 +774,7 @@ gpart_restore(struct gctl_req *req, unsi
 
 	forced = gctl_get_int(req, "force");
 	flags = gctl_get_ascii(req, "flags");
+	rl = gctl_get_int(req, "restore_labels");
 	s = gctl_get_ascii(req, "class");
 	if (s == NULL)
 		abort();
@@ -829,19 +826,21 @@ gpart_restore(struct gctl_req *req, unsi
 				break;
 		l = ap - &argv[0];
 		label = pline = NULL;
-		if (l == 2) { /* create table */
+		if (l == 1 || l == 2) { /* create table */
 			if (created)
 				errx(EXIT_FAILURE, "Incorrect backup format.");
-			n = atoi(argv[1]);
+			if (l == 2)
+				n = strtoimax(argv[1], NULL, 0);
 			for (i = 0; i < nargs; i++) {
 				s = gctl_get_ascii(req, "arg%d", i);
 				r = gctl_get_handle();
-				n = strtoimax(argv[1], NULL, 0);
 				gctl_ro_param(r, "class", -1,
 				    classp->lg_name);
 				gctl_ro_param(r, "verb", -1, "create");
 				gctl_ro_param(r, "scheme", -1, argv[0]);
-				gctl_ro_param(r, "entries", sizeof(n), &n);
+				if (l == 2)
+					gctl_ro_param(r, "entries",
+					    sizeof(n), &n);
 				gctl_ro_param(r, "flags", -1, "restore");
 				gctl_ro_param(r, "arg0", -1, s);
 				errstr = gctl_issue(r);
@@ -877,7 +876,7 @@ gpart_restore(struct gctl_req *req, unsi
 			gctl_ro_param(r, "type", -1, argv[1]);
 			gctl_ro_param(r, "start", -1, argv[2]);
 			gctl_ro_param(r, "size", -1, argv[3]);
-			if (label != NULL)
+			if (rl != 0 && label != NULL)
 				gctl_ro_param(r, "label", -1, argv[4]);
 			gctl_ro_param(r, "arg0", -1, s);
 			error = gpart_autofill(r);

Modified: head/sbin/geom/class/part/gpart.8
==============================================================================
--- head/sbin/geom/class/part/gpart.8	Mon Nov 22 09:59:10 2010	(r215670)
+++ head/sbin/geom/class/part/gpart.8	Mon Nov 22 10:08:33 2010	(r215671)
@@ -24,7 +24,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd November 20, 2010
+.Dd November 22, 2010
 .Dt GPART 8
 .Os
 .Sh NAME
@@ -94,7 +94,6 @@ utility:
 .\" ==== BACKUP ====
 .Nm
 .Cm backup
-.Op Fl l
 .Ar geom
 .\" ==== BOOTCODE ====
 .Nm
@@ -149,7 +148,7 @@ utility:
 .\" ==== RESTORE ====
 .Nm
 .Cm restore
-.Op Fl F
+.Op Fl lF
 .Op Fl f Ar flags
 .Ar provider
 .Op Ar ...
@@ -163,6 +162,7 @@ utility:
 .\" ==== SHOW ====
 .Nm
 .Cm show
+.Op Fl lr
 .Op Ar geom ...
 .\" ==== UNDO ====
 .Nm
@@ -225,12 +225,6 @@ about its use.
 Dump a partition table to standard output in special format used by
 .Cm restore
 action.
-.Pp
-Additional options include:
-.Bl -tag -width 10n
-.It Fl l
-Dump partition labels for partitioning schemes that support them.
-.El
 .\" ==== BOOTCODE ====
 .It Cm bootcode
 Embed bootstrap code into the partitioning scheme's metadata on the
@@ -439,6 +433,8 @@ Additional options include:
 Destroy partition table on the given
 .Ar provider
 before doing restore.
+.It Fl l
+Restore partition labels for partitioning schemes that support them.
 .It Fl f Ar flags
 Additional operational flags.
 See the section entitled
@@ -466,6 +462,14 @@ about its use.
 .It Cm show
 Show the current partition information of the specified geoms
 or all geoms if none are specified.
+Additional options include:
+.Bl -tag -width 10n
+.It Fl l
+For partition schemes that support partition labels print them
+instead of partition type.
+.It Fl r
+Show raw partition type instead of symbolic name.
+.El
 .\" ==== UNDO ====
 .It Cm undo
 Revert any pending changes for geom
@@ -819,13 +823,13 @@ After having created all required partit
 Create backup of partition table from
 .Pa da0
 .Bd -literal -offset indent
-/sbin/gpart backup -l da0 > da0.backup
+/sbin/gpart backup da0 > da0.backup
 .Ed
 .Pp
 Restore partition table from backup to
 .Pa da0
 .Bd -literal -offset indent
-/sbin/gpart restore da0 < /mnt/da0.backup
+/sbin/gpart restore -l da0 < /mnt/da0.backup
 .Ed
 .Pp
 Clone partition table from 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201011221008.oAMA8X56086068>