svn commit: r225316 - stable/8/sbin/mdconfig
Dag-Erling Smorgrav
des at FreeBSD.org
Thu Sep 1 19:39:10 UTC 2011
Author: des
Date: Thu Sep 1 19:39:10 2011
New Revision: 225316
URL: http://svn.freebsd.org/changeset/base/225316
Log:
MFH 221143, 221144: whitespace
MFH 221232: make "-f" optional
Modified:
stable/8/sbin/mdconfig/mdconfig.8
stable/8/sbin/mdconfig/mdconfig.c
Directory Properties:
stable/8/sbin/mdconfig/ (props changed)
Modified: stable/8/sbin/mdconfig/mdconfig.8
==============================================================================
--- stable/8/sbin/mdconfig/mdconfig.8 Thu Sep 1 16:47:49 2011 (r225315)
+++ stable/8/sbin/mdconfig/mdconfig.8 Thu Sep 1 19:39:10 2011 (r225316)
@@ -68,6 +68,8 @@
.Op Fl n
.Op Fl v
.Op Fl u Ar unit
+.Nm
+.Ar file
.Sh DESCRIPTION
The
.Nm
@@ -185,6 +187,15 @@ Request a specific unit number for the
.Xr md 4
device instead of automatic allocation.
.El
+.Pp
+The last form,
+.Nm
+.Ar file ,
+is provided for convenience as an abbreviation of
+.Nm
+.Fl a
+.Fl t Ar vnode
+.Fl f Ar file .
.Sh EXAMPLES
To create a 4 megabyte
.Xr malloc 9
Modified: stable/8/sbin/mdconfig/mdconfig.c
==============================================================================
--- stable/8/sbin/mdconfig/mdconfig.c Thu Sep 1 16:47:49 2011 (r225315)
+++ stable/8/sbin/mdconfig/mdconfig.c Thu Sep 1 19:39:10 2011 (r225316)
@@ -38,6 +38,7 @@ static enum {UNSET, ATTACH, DETACH, LIST
static int nflag;
static void usage(void);
+static void md_set_file(const char *);
static int md_find(char *, const char *);
static int md_query(char *name);
static int md_list(char *units, int opt);
@@ -59,7 +60,8 @@ usage()
" [-s size] [-S sectorsize] [-u unit]\n"
" [-x sectors/track] [-y heads/cyl]\n"
" mdconfig -d -u unit [-o [no]force]\n"
-" mdconfig -l [-v] [-n] [-u unit]\n");
+" mdconfig -l [-v] [-n] [-u unit]\n"
+" mdconfig file\n");
fprintf(stderr, "\t\ttype = {malloc, preload, vnode, swap}\n");
fprintf(stderr, "\t\toption = {cluster, compress, reserve}\n");
fprintf(stderr, "\t\tsize = %%d (512 byte blocks), %%db (B),\n");
@@ -82,10 +84,7 @@ main(int argc, char **argv)
err(1, "could not allocate memory");
vflag = 0;
bzero(mdio.md_file, PATH_MAX);
- for (;;) {
- ch = getopt(argc, argv, "ab:df:lno:s:S:t:u:vx:y:");
- if (ch == -1)
- break;
+ while ((ch = getopt(argc, argv, "ab:df:lno:s:S:t:u:vx:y:")) != -1) {
switch (ch) {
case 'a':
if (cmdline != 0)
@@ -141,23 +140,9 @@ main(int argc, char **argv)
mdio.md_options = MD_CLUSTER | MD_AUTOUNIT | MD_COMPRESS;
cmdline = 2;
}
- if (cmdline != 2)
- usage();
- if (realpath(optarg, mdio.md_file) == NULL) {
- err(1, "could not find full path for %s",
- optarg);
- }
- fd = open(mdio.md_file, O_RDONLY);
- if (fd < 0)
- err(1, "could not open %s", optarg);
- else if (mdio.md_mediasize == 0) {
- struct stat sb;
-
- if (fstat(fd, &sb) == -1)
- err(1, "could not stat %s", optarg);
- mdio.md_mediasize = sb.st_size;
- }
- close(fd);
+ if (cmdline != 2)
+ usage();
+ md_set_file(optarg);
break;
case 'o':
if (action == DETACH) {
@@ -267,6 +252,19 @@ main(int argc, char **argv)
usage();
}
}
+
+ argc -= optind;
+ argv += optind;
+ if (action == UNSET) {
+ if (argc != 1)
+ usage();
+ action = ATTACH;
+ mdio.md_type = MD_VNODE;
+ mdio.md_options = MD_CLUSTER | MD_AUTOUNIT | MD_COMPRESS;
+ cmdline = 2;
+ md_set_file(*argv);
+ }
+
mdio.md_version = MDIOVERSION;
if (!kld_isloaded("g_md") && kld_load("geom_md") == -1)
@@ -294,7 +292,7 @@ main(int argc, char **argv)
}
if (action == LIST) {
if (mdio.md_options & MD_AUTOUNIT) {
- /*
+ /*
* Listing all devices. This is why we pass NULL
* together with OPT_LIST.
*/
@@ -322,6 +320,26 @@ main(int argc, char **argv)
return (0);
}
+static void
+md_set_file(const char *fn)
+{
+ struct stat sb;
+ int fd;
+
+ if (realpath(fn, mdio.md_file) == NULL)
+ err(1, "could not find full path for %s", fn);
+ fd = open(mdio.md_file, O_RDONLY);
+ if (fd < 0)
+ err(1, "could not open %s", fn);
+ if (fstat(fd, &sb) == -1)
+ err(1, "could not stat %s", fn);
+ if (!S_ISREG(sb.st_mode))
+ errx(1, "%s is not a regular file", fn);
+ if (mdio.md_mediasize == 0)
+ mdio.md_mediasize = sb.st_size;
+ close(fd);
+}
+
/*
* Lists md(4) disks. Is used also as a query routine, since it handles XML
* interface. 'units' can be NULL for listing memory disks. It might be
More information about the svn-src-stable-8
mailing list