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>