Author: trasz Date: Sat Jan 10 17:17:18 2009 New Revision: 187027 URL: http://svn.freebsd.org/changeset/base/187027
Log: Add the possibility to specify "-o force" with "mdconfig -du". Reviewed by: scottl Approved by: rwatson (mentor) Sponsored by: FreeBSD Foundation Modified: head/sbin/mdconfig/mdconfig.8 head/sbin/mdconfig/mdconfig.c head/sys/dev/md/md.c Modified: head/sbin/mdconfig/mdconfig.8 ============================================================================== --- head/sbin/mdconfig/mdconfig.8 Sat Jan 10 16:57:22 2009 (r187026) +++ head/sbin/mdconfig/mdconfig.8 Sat Jan 10 17:17:18 2009 (r187027) @@ -62,6 +62,7 @@ .Nm .Fl d .Fl u Ar unit +.Op Fl o Oo Cm no Oc Ns Ar force .Nm .Fl l .Op Fl n Modified: head/sbin/mdconfig/mdconfig.c ============================================================================== --- head/sbin/mdconfig/mdconfig.c Sat Jan 10 16:57:22 2009 (r187026) +++ head/sbin/mdconfig/mdconfig.c Sat Jan 10 17:17:18 2009 (r187027) @@ -58,7 +58,7 @@ usage() "usage: mdconfig -a -t type [-n] [-o [no]option] ... [-f file]\n" " [-s size] [-S sectorsize] [-u unit]\n" " [-x sectors/track] [-y heads/cyl]\n" -" mdconfig -d -u unit\n" +" mdconfig -d -u unit [-o [no]force]\n" " mdconfig -l [-v] [-n] [-u unit]\n"); fprintf(stderr, "\t\ttype = {malloc, preload, vnode, swap}\n"); fprintf(stderr, "\t\toption = {cluster, compress, reserve}\n"); @@ -160,6 +160,16 @@ main(int argc, char **argv) close(fd); break; case 'o': + if (action == DETACH) { + if (!strcmp(optarg, "force")) + mdio.md_options |= MD_FORCE; + else if (!strcmp(optarg, "noforce")) + mdio.md_options &= ~MD_FORCE; + else + errx(1, "Unknown option: %s.", optarg); + break; + } + if (cmdline != 2) usage(); if (!strcmp(optarg, "async")) Modified: head/sys/dev/md/md.c ============================================================================== --- head/sys/dev/md/md.c Sat Jan 10 16:57:22 2009 (r187026) +++ head/sys/dev/md/md.c Sat Jan 10 17:17:18 2009 (r187027) @@ -1133,13 +1133,15 @@ xmdctlioctl(struct cdev *dev, u_long cmd mdinit(sc); return (0); case MDIOCDETACH: - if (mdio->md_mediasize != 0 || mdio->md_options != 0) + if (mdio->md_mediasize != 0 || + (mdio->md_options & ~MD_FORCE) != 0) return (EINVAL); sc = mdfind(mdio->md_unit); if (sc == NULL) return (ENOENT); - if (sc->opencount != 0 && !(sc->flags & MD_FORCE)) + if (sc->opencount != 0 && !(sc->flags & MD_FORCE) && + !(mdio->md_options & MD_FORCE)) return (EBUSY); return (mddestroy(sc, td)); case MDIOCQUERY: _______________________________________________ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"