Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 13 Jan 2009 19:17:11 +0000 (UTC)
From:      Ulf Lilleengen <lulf@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r187187 - in projects/gvinum: sbin/gvinum sys/geom/vinum
Message-ID:  <200901131917.n0DJHBM6013365@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: lulf
Date: Tue Jan 13 19:17:11 2009
New Revision: 187187
URL: http://svn.freebsd.org/changeset/base/187187

Log:
  - Add the -f option to the rm command, which allows the removal to be forced.
  
  Submitted by:	Rick C. Petty <rick-freebsd2008@kiwi-computer.com>

Modified:
  projects/gvinum/sbin/gvinum/gvinum.c
  projects/gvinum/sys/geom/vinum/geom_vinum_rm.c

Modified: projects/gvinum/sbin/gvinum/gvinum.c
==============================================================================
--- projects/gvinum/sbin/gvinum/gvinum.c	Tue Jan 13 19:14:51 2009	(r187186)
+++ projects/gvinum/sbin/gvinum/gvinum.c	Tue Jan 13 19:17:11 2009	(r187187)
@@ -709,7 +709,7 @@ gvinum_help(void)
 	    "        Rebuild the parity blocks of a RAID-5 plex.\n"
 	    "resetconfig\n"
 	    "        Reset the complete gvinum configuration\n"
-	    "rm [-r] volume | plex | subdisk | drive\n"
+	    "rm [-r] [-f] volume | plex | subdisk | drive\n"
 	    "        Remove an object.\n"
 	    "saveconfig\n"
 	    "        Save vinum configuration to disk after configuration"
@@ -1052,8 +1052,11 @@ gvinum_rm(int argc, char **argv)
 	flags = 0;
 	optreset = 1;
 	optind = 1;
-	while ((j = getopt(argc, argv, "r")) != -1) {
+	while ((j = getopt(argc, argv, "rf")) != -1) {
 		switch (j) {
+		case 'f':
+			flags |= GV_FLAG_F;
+			break;
 		case 'r':
 			flags |= GV_FLAG_R;
 			break;

Modified: projects/gvinum/sys/geom/vinum/geom_vinum_rm.c
==============================================================================
--- projects/gvinum/sys/geom/vinum/geom_vinum_rm.c	Tue Jan 13 19:14:51 2009	(r187186)
+++ projects/gvinum/sys/geom/vinum/geom_vinum_rm.c	Tue Jan 13 19:17:11 2009	(r187187)
@@ -130,7 +130,8 @@ gv_remove(struct g_geom *gp, struct gctl
 		case GV_TYPE_DRIVE:
 			d = gv_find_drive(sc, argv);
 			/* We don't allow to remove open drives. */
-			if (gv_consumer_is_open(d->consumer)) {
+			if (gv_consumer_is_open(d->consumer) &&
+			    !(*flags & GV_FLAG_F)) {
 				gctl_error(req, "drive '%s' is open", d->name);
 				return;
 			}



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