svn commit: r187187 - in projects/gvinum: sbin/gvinum sys/geom/vinum

Ulf Lilleengen lulf at FreeBSD.org
Tue Jan 13 11:17:14 PST 2009


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 at 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;
 			}


More information about the svn-src-projects mailing list