summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorpjd <pjd@FreeBSD.org>2010-09-13 13:48:18 +0000
committerpjd <pjd@FreeBSD.org>2010-09-13 13:48:18 +0000
commit3d8ce965d3cc7199c39bd29a375291b4276bab53 (patch)
tree80fa9ced0ed4ae38bb90b62555eb33be45347414
parent7dc7517414123c9d33d848a1cb615f3adbb59e51 (diff)
downloadFreeBSD-src-3d8ce965d3cc7199c39bd29a375291b4276bab53.zip
FreeBSD-src-3d8ce965d3cc7199c39bd29a375291b4276bab53.tar.gz
- Remove gc_argname field. It was introduced for gpart(8), but if I
understand everything correctly, we don't really need it. - Provide default numeric value as strings. This allows to simplify a lot of code. - Bump version number.
-rw-r--r--sbin/geom/class/cache/geom_cache.c34
-rw-r--r--sbin/geom/class/concat/geom_concat.c12
-rw-r--r--sbin/geom/class/eli/geom_eli.c55
-rw-r--r--sbin/geom/class/journal/geom_journal.c14
-rw-r--r--sbin/geom/class/label/geom_label.c12
-rw-r--r--sbin/geom/class/mirror/geom_mirror.c39
-rw-r--r--sbin/geom/class/mountver/geom_mountver.c4
-rw-r--r--sbin/geom/class/multipath/geom_multipath.c12
-rw-r--r--sbin/geom/class/nop/geom_nop.c33
-rw-r--r--sbin/geom/class/part/geom_part.c109
-rw-r--r--sbin/geom/class/raid3/geom_raid3.c22
-rw-r--r--sbin/geom/class/sched/geom_sched.c8
-rw-r--r--sbin/geom/class/shsec/geom_shsec.c8
-rw-r--r--sbin/geom/class/stripe/geom_stripe.c18
-rw-r--r--sbin/geom/class/virstor/geom_virstor.c69
-rw-r--r--sbin/geom/core/geom.c51
-rw-r--r--sbin/geom/core/geom.h5
-rw-r--r--sys/geom/part/g_part.c12
18 files changed, 244 insertions, 273 deletions
diff --git a/sbin/geom/class/cache/geom_cache.c b/sbin/geom/class/cache/geom_cache.c
index 636c541..4b18e67 100644
--- a/sbin/geom/class/cache/geom_cache.c
+++ b/sbin/geom/class/cache/geom_cache.c
@@ -42,10 +42,8 @@ __FBSDID("$FreeBSD$");
uint32_t lib_version = G_LIB_VERSION;
uint32_t version = G_CACHE_VERSION;
-static intmax_t blocksize_label = 65536;
-static intmax_t size_label = 100;
-static intmax_t blocksize_configure = 0;
-static intmax_t size_configure = 0;
+#define GCACHE_BLOCKSIZE "65536"
+#define GCACHE_SIZE "100"
static void cache_main(struct gctl_req *req, unsigned flags);
static void cache_clear(struct gctl_req *req);
@@ -53,44 +51,44 @@ static void cache_dump(struct gctl_req *req);
static void cache_label(struct gctl_req *req);
struct g_command class_commands[] = {
- { "clear", G_FLAG_VERBOSE, cache_main, G_NULL_OPTS, NULL,
+ { "clear", G_FLAG_VERBOSE, cache_main, G_NULL_OPTS,
"[-v] prov ..."
},
{ "configure", G_FLAG_VERBOSE, NULL,
{
- { 'b', "blocksize", &blocksize_configure, G_TYPE_NUMBER },
- { 's', "size", &size_configure, G_TYPE_NUMBER },
+ { 'b', "blocksize", "0", G_TYPE_NUMBER },
+ { 's', "size", "0", G_TYPE_NUMBER },
G_OPT_SENTINEL
},
- NULL, "[-v] [-b blocksize] [-s size] name"
+ "[-v] [-b blocksize] [-s size] name"
},
{ "create", G_FLAG_VERBOSE | G_FLAG_LOADKLD, NULL,
{
- { 'b', "blocksize", &blocksize_label, G_TYPE_NUMBER },
- { 's', "size", &size_label, G_TYPE_NUMBER },
+ { 'b', "blocksize", GCACHE_BLOCKSIZE, G_TYPE_NUMBER },
+ { 's', "size", GCACHE_SIZE, G_TYPE_NUMBER },
G_OPT_SENTINEL
},
- NULL, "[-v] [-b blocksize] [-s size] name prov"
+ "[-v] [-b blocksize] [-s size] name prov"
},
{ "destroy", G_FLAG_VERBOSE, NULL,
{
{ 'f', "force", NULL, G_TYPE_BOOL },
G_OPT_SENTINEL
},
- NULL, "[-fv] name ..."
+ "[-fv] name ..."
},
- { "dump", 0, cache_main, G_NULL_OPTS, NULL,
+ { "dump", 0, cache_main, G_NULL_OPTS,
"prov ..."
},
{ "label", G_FLAG_VERBOSE | G_FLAG_LOADKLD, cache_main,
{
- { 'b', "blocksize", &blocksize_label, G_TYPE_NUMBER },
- { 's', "size", &size_label, G_TYPE_NUMBER },
+ { 'b', "blocksize", GCACHE_BLOCKSIZE, G_TYPE_NUMBER },
+ { 's', "size", GCACHE_SIZE, G_TYPE_NUMBER },
G_OPT_SENTINEL
},
- NULL, "[-v] [-b blocksize] [-s size] name prov"
+ "[-v] [-b blocksize] [-s size] name prov"
},
- { "reset", G_FLAG_VERBOSE, NULL, G_NULL_OPTS, NULL,
+ { "reset", G_FLAG_VERBOSE, NULL, G_NULL_OPTS,
"[-v] name ..."
},
{ "stop", G_FLAG_VERBOSE, NULL,
@@ -98,7 +96,7 @@ struct g_command class_commands[] = {
{ 'f', "force", NULL, G_TYPE_BOOL },
G_OPT_SENTINEL
},
- NULL, "[-fv] name ..."
+ "[-fv] name ..."
},
G_CMD_SENTINEL
};
diff --git a/sbin/geom/class/concat/geom_concat.c b/sbin/geom/class/concat/geom_concat.c
index e1b7342..80fe26b 100644
--- a/sbin/geom/class/concat/geom_concat.c
+++ b/sbin/geom/class/concat/geom_concat.c
@@ -51,20 +51,20 @@ static void concat_dump(struct gctl_req *req);
static void concat_label(struct gctl_req *req);
struct g_command class_commands[] = {
- { "clear", G_FLAG_VERBOSE, concat_main, G_NULL_OPTS, NULL,
+ { "clear", G_FLAG_VERBOSE, concat_main, G_NULL_OPTS,
"[-v] prov ..."
},
{ "create", G_FLAG_VERBOSE | G_FLAG_LOADKLD, NULL, G_NULL_OPTS,
- NULL, "[-v] name prov ..."
+ "[-v] name prov ..."
},
{ "destroy", G_FLAG_VERBOSE, NULL,
{
{ 'f', "force", NULL, G_TYPE_BOOL },
G_OPT_SENTINEL
},
- NULL, "[-fv] name ..."
+ "[-fv] name ..."
},
- { "dump", 0, concat_main, G_NULL_OPTS, NULL,
+ { "dump", 0, concat_main, G_NULL_OPTS,
"prov ..."
},
{ "label", G_FLAG_VERBOSE | G_FLAG_LOADKLD, concat_main,
@@ -72,14 +72,14 @@ struct g_command class_commands[] = {
{ 'h', "hardcode", NULL, G_TYPE_BOOL },
G_OPT_SENTINEL
},
- NULL, "[-hv] name prov ..."
+ "[-hv] name prov ..."
},
{ "stop", G_FLAG_VERBOSE, NULL,
{
{ 'f', "force", NULL, G_TYPE_BOOL },
G_OPT_SENTINEL
},
- NULL, "[-fv] name ..."
+ "[-fv] name ..."
},
G_CMD_SENTINEL
};
diff --git a/sbin/geom/class/eli/geom_eli.c b/sbin/geom/class/eli/geom_eli.c
index d5acc99..59c6be7 100644
--- a/sbin/geom/class/eli/geom_eli.c
+++ b/sbin/geom/class/eli/geom_eli.c
@@ -57,11 +57,6 @@ uint32_t version = G_ELI_VERSION;
#define GELI_BACKUP_DIR "/var/backups/"
#define GELI_ENC_ALGO "aes"
-static intmax_t keylen = 0;
-static intmax_t keyno = -1;
-static intmax_t iterations = -1;
-static intmax_t sectorsize = 0;
-
static void eli_main(struct gctl_req *req, unsigned flags);
static void eli_init(struct gctl_req *req);
static void eli_attach(struct gctl_req *req);
@@ -102,14 +97,14 @@ struct g_command class_commands[] = {
{ 'b', "boot", NULL, G_TYPE_BOOL },
{ 'B', "backupfile", "", G_TYPE_STRING },
{ 'e', "ealgo", GELI_ENC_ALGO, G_TYPE_STRING },
- { 'i', "iterations", &iterations, G_TYPE_NUMBER },
+ { 'i', "iterations", "-1", G_TYPE_NUMBER },
{ 'K', "newkeyfile", "", G_TYPE_STRING },
- { 'l', "keylen", &keylen, G_TYPE_NUMBER },
+ { 'l', "keylen", "0", G_TYPE_NUMBER },
{ 'P', "nonewpassphrase", NULL, G_TYPE_BOOL },
- { 's', "sectorsize", &sectorsize, G_TYPE_NUMBER },
+ { 's', "sectorsize", "0", G_TYPE_NUMBER },
G_OPT_SENTINEL
},
- NULL, "[-bPv] [-a aalgo] [-B backupfile] [-e ealgo] [-i iterations] [-l keylen] [-K newkeyfile] [-s sectorsize] prov"
+ "[-bPv] [-a aalgo] [-B backupfile] [-e ealgo] [-i iterations] [-l keylen] [-K newkeyfile] [-s sectorsize] prov"
},
{ "label", G_FLAG_VERBOSE, eli_main,
{
@@ -117,14 +112,14 @@ struct g_command class_commands[] = {
{ 'b', "boot", NULL, G_TYPE_BOOL },
{ 'B', "backupfile", "", G_TYPE_STRING },
{ 'e', "ealgo", GELI_ENC_ALGO, G_TYPE_STRING },
- { 'i', "iterations", &iterations, G_TYPE_NUMBER },
+ { 'i', "iterations", "-1", G_TYPE_NUMBER },
{ 'K', "newkeyfile", "", G_TYPE_STRING },
- { 'l', "keylen", &keylen, G_TYPE_NUMBER },
+ { 'l', "keylen", "0", G_TYPE_NUMBER },
{ 'P', "nonewpassphrase", NULL, G_TYPE_BOOL },
- { 's', "sectorsize", &sectorsize, G_TYPE_NUMBER },
+ { 's', "sectorsize", "0", G_TYPE_NUMBER },
G_OPT_SENTINEL
},
- NULL, "- an alias for 'init'"
+ "- an alias for 'init'"
},
{ "attach", G_FLAG_VERBOSE | G_FLAG_LOADKLD, eli_main,
{
@@ -134,7 +129,7 @@ struct g_command class_commands[] = {
{ 'r', "readonly", NULL, G_TYPE_BOOL },
G_OPT_SENTINEL
},
- NULL, "[-dprv] [-k keyfile] prov"
+ "[-dprv] [-k keyfile] prov"
},
{ "detach", 0, NULL,
{
@@ -142,7 +137,7 @@ struct g_command class_commands[] = {
{ 'l', "last", NULL, G_TYPE_BOOL },
G_OPT_SENTINEL
},
- NULL, "[-fl] prov ..."
+ "[-fl] prov ..."
},
{ "stop", 0, NULL,
{
@@ -150,18 +145,18 @@ struct g_command class_commands[] = {
{ 'l', "last", NULL, G_TYPE_BOOL },
G_OPT_SENTINEL
},
- NULL, "- an alias for 'detach'"
+ "- an alias for 'detach'"
},
{ "onetime", G_FLAG_VERBOSE | G_FLAG_LOADKLD, NULL,
{
{ 'a', "aalgo", "", G_TYPE_STRING },
{ 'd', "detach", NULL, G_TYPE_BOOL },
{ 'e', "ealgo", GELI_ENC_ALGO, G_TYPE_STRING },
- { 'l', "keylen", &keylen, G_TYPE_NUMBER },
- { 's', "sectorsize", &sectorsize, G_TYPE_NUMBER },
+ { 'l', "keylen", "0", G_TYPE_NUMBER },
+ { 's', "sectorsize", "0", G_TYPE_NUMBER },
G_OPT_SENTINEL
},
- NULL, "[-d] [-a aalgo] [-e ealgo] [-l keylen] [-s sectorsize] prov"
+ "[-d] [-a aalgo] [-e ealgo] [-l keylen] [-s sectorsize] prov"
},
{ "configure", G_FLAG_VERBOSE, eli_main,
{
@@ -169,46 +164,46 @@ struct g_command class_commands[] = {
{ 'B', "noboot", NULL, G_TYPE_BOOL },
G_OPT_SENTINEL
},
- NULL, "[-bB] prov ..."
+ "[-bB] prov ..."
},
{ "setkey", G_FLAG_VERBOSE, eli_main,
{
- { 'i', "iterations", &iterations, G_TYPE_NUMBER },
+ { 'i', "iterations", "-1", G_TYPE_NUMBER },
{ 'k', "keyfile", "", G_TYPE_STRING },
{ 'K', "newkeyfile", "", G_TYPE_STRING },
- { 'n', "keyno", &keyno, G_TYPE_NUMBER },
+ { 'n', "keyno", "-1", G_TYPE_NUMBER },
{ 'p', "nopassphrase", NULL, G_TYPE_BOOL },
{ 'P', "nonewpassphrase", NULL, G_TYPE_BOOL },
G_OPT_SENTINEL
},
- NULL, "[-pPv] [-n keyno] [-i iterations] [-k keyfile] [-K newkeyfile] prov"
+ "[-pPv] [-n keyno] [-i iterations] [-k keyfile] [-K newkeyfile] prov"
},
{ "delkey", G_FLAG_VERBOSE, eli_main,
{
{ 'a', "all", NULL, G_TYPE_BOOL },
{ 'f', "force", NULL, G_TYPE_BOOL },
- { 'n', "keyno", &keyno, G_TYPE_NUMBER },
+ { 'n', "keyno", "-1", G_TYPE_NUMBER },
G_OPT_SENTINEL
},
- NULL, "[-afv] [-n keyno] prov"
+ "[-afv] [-n keyno] prov"
},
{ "kill", G_FLAG_VERBOSE, eli_main,
{
{ 'a', "all", NULL, G_TYPE_BOOL },
G_OPT_SENTINEL
},
- NULL, "[-av] [prov ...]"
+ "[-av] [prov ...]"
},
- { "backup", G_FLAG_VERBOSE, eli_main, G_NULL_OPTS, NULL,
+ { "backup", G_FLAG_VERBOSE, eli_main, G_NULL_OPTS,
"[-v] prov file"
},
- { "restore", G_FLAG_VERBOSE, eli_main, G_NULL_OPTS, NULL,
+ { "restore", G_FLAG_VERBOSE, eli_main, G_NULL_OPTS,
"[-v] file prov"
},
- { "clear", G_FLAG_VERBOSE, eli_main, G_NULL_OPTS, NULL,
+ { "clear", G_FLAG_VERBOSE, eli_main, G_NULL_OPTS,
"[-v] prov ..."
},
- { "dump", G_FLAG_VERBOSE, eli_main, G_NULL_OPTS, NULL,
+ { "dump", G_FLAG_VERBOSE, eli_main, G_NULL_OPTS,
"[-v] prov ..."
},
G_CMD_SENTINEL
diff --git a/sbin/geom/class/journal/geom_journal.c b/sbin/geom/class/journal/geom_journal.c
index 3716999..b887fab 100644
--- a/sbin/geom/class/journal/geom_journal.c
+++ b/sbin/geom/class/journal/geom_journal.c
@@ -47,18 +47,16 @@ __FBSDID("$FreeBSD$");
uint32_t lib_version = G_LIB_VERSION;
uint32_t version = G_JOURNAL_VERSION;
-static intmax_t default_jsize = -1;
-
static void journal_main(struct gctl_req *req, unsigned flags);
static void journal_clear(struct gctl_req *req);
static void journal_dump(struct gctl_req *req);
static void journal_label(struct gctl_req *req);
struct g_command class_commands[] = {
- { "clear", G_FLAG_VERBOSE, journal_main, G_NULL_OPTS, NULL,
+ { "clear", G_FLAG_VERBOSE, journal_main, G_NULL_OPTS,
"[-v] prov ..."
},
- { "dump", 0, journal_main, G_NULL_OPTS, NULL,
+ { "dump", 0, journal_main, G_NULL_OPTS,
"prov ..."
},
{ "label", G_FLAG_VERBOSE, journal_main,
@@ -66,19 +64,19 @@ struct g_command class_commands[] = {
{ 'c', "checksum", NULL, G_TYPE_BOOL },
{ 'f', "force", NULL, G_TYPE_BOOL },
{ 'h', "hardcode", NULL, G_TYPE_BOOL },
- { 's', "jsize", &default_jsize, G_TYPE_NUMBER },
+ { 's', "jsize", "-1", G_TYPE_NUMBER },
G_OPT_SENTINEL
},
- NULL, "[-cfhv] [-s jsize] dataprov [jprov]"
+ "[-cfhv] [-s jsize] dataprov [jprov]"
},
{ "stop", G_FLAG_VERBOSE, NULL,
{
{ 'f', "force", NULL, G_TYPE_BOOL },
G_OPT_SENTINEL
},
- NULL, "[-fv] name ..."
+ "[-fv] name ..."
},
- { "sync", G_FLAG_VERBOSE, NULL, G_NULL_OPTS, NULL,
+ { "sync", G_FLAG_VERBOSE, NULL, G_NULL_OPTS,
"[-v]"
},
G_CMD_SENTINEL
diff --git a/sbin/geom/class/label/geom_label.c b/sbin/geom/class/label/geom_label.c
index e77fdf0..6c880ee 100644
--- a/sbin/geom/class/label/geom_label.c
+++ b/sbin/geom/class/label/geom_label.c
@@ -55,31 +55,31 @@ static void label_dump(struct gctl_req *req);
static void label_label(struct gctl_req *req);
struct g_command PUBSYM(class_commands)[] = {
- { "clear", G_FLAG_VERBOSE, label_main, G_NULL_OPTS, NULL,
+ { "clear", G_FLAG_VERBOSE, label_main, G_NULL_OPTS,
"[-v] dev ..."
},
{ "create", G_FLAG_VERBOSE | G_FLAG_LOADKLD, NULL, G_NULL_OPTS,
- NULL, "[-v] name dev"
+ "[-v] name dev"
},
{ "destroy", G_FLAG_VERBOSE, NULL,
{
{ 'f', "force", NULL, G_TYPE_BOOL },
G_OPT_SENTINEL
},
- NULL, "[-fv] name ..."
+ "[-fv] name ..."
},
- { "dump", 0, label_main, G_NULL_OPTS, NULL,
+ { "dump", 0, label_main, G_NULL_OPTS,
"dev ..."
},
{ "label", G_FLAG_VERBOSE | G_FLAG_LOADKLD, label_main, G_NULL_OPTS,
- NULL, "[-v] name dev"
+ "[-v] name dev"
},
{ "stop", G_FLAG_VERBOSE, NULL,
{
{ 'f', "force", NULL, G_TYPE_BOOL },
G_OPT_SENTINEL
},
- NULL, "[-fv] name ..."
+ "[-fv] name ..."
},
G_CMD_SENTINEL
};
diff --git a/sbin/geom/class/mirror/geom_mirror.c b/sbin/geom/class/mirror/geom_mirror.c
index de51fb1..2cb52a9 100644
--- a/sbin/geom/class/mirror/geom_mirror.c
+++ b/sbin/geom/class/mirror/geom_mirror.c
@@ -44,10 +44,9 @@ __FBSDID("$FreeBSD$");
uint32_t lib_version = G_LIB_VERSION;
uint32_t version = G_MIRROR_VERSION;
-#define GMIRROR_BALANCE "load"
-
-static intmax_t label_slice = 4096, configure_slice = -1;
-static intmax_t insert_priority = 0, configure_priority = -1;
+#define GMIRROR_BALANCE "load"
+#define GMIRROR_SLICE "4096"
+#define GMIRROR_PRIORITY "0"
static void mirror_main(struct gctl_req *req, unsigned flags);
static void mirror_activate(struct gctl_req *req);
@@ -56,10 +55,10 @@ static void mirror_dump(struct gctl_req *req);
static void mirror_label(struct gctl_req *req);
struct g_command class_commands[] = {
- { "activate", G_FLAG_VERBOSE, mirror_main, G_NULL_OPTS, NULL,
+ { "activate", G_FLAG_VERBOSE, mirror_main, G_NULL_OPTS,
"[-v] name prov ..."
},
- { "clear", G_FLAG_VERBOSE, mirror_main, G_NULL_OPTS, NULL,
+ { "clear", G_FLAG_VERBOSE, mirror_main, G_NULL_OPTS,
"[-v] prov ..."
},
{ "configure", G_FLAG_VERBOSE, NULL,
@@ -71,20 +70,20 @@ struct g_command class_commands[] = {
{ 'F', "nofailsync", NULL, G_TYPE_BOOL },
{ 'h', "hardcode", NULL, G_TYPE_BOOL },
{ 'n', "noautosync", NULL, G_TYPE_BOOL },
- { 'p', "priority", &configure_priority, G_TYPE_NUMBER },
- { 's', "slice", &configure_slice, G_TYPE_NUMBER },
+ { 'p', "priority", "-1", G_TYPE_NUMBER },
+ { 's', "slice", "-1", G_TYPE_NUMBER },
G_OPT_SENTINEL
},
- NULL, "[-adfFhnv] [-b balance] [-s slice] name\n"
- "[-v] -p priority name prov"
+ "[-adfFhnv] [-b balance] [-s slice] name\n"
+ "[-v] -p priority name prov"
},
- { "deactivate", G_FLAG_VERBOSE, NULL, G_NULL_OPTS, NULL,
+ { "deactivate", G_FLAG_VERBOSE, NULL, G_NULL_OPTS,
"[-v] name prov ..."
},
- { "dump", 0, mirror_main, G_NULL_OPTS, NULL,
+ { "dump", 0, mirror_main, G_NULL_OPTS,
"prov ..."
},
- { "forget", G_FLAG_VERBOSE, NULL, G_NULL_OPTS, NULL,
+ { "forget", G_FLAG_VERBOSE, NULL, G_NULL_OPTS,
"name ..."
},
{ "label", G_FLAG_VERBOSE, mirror_main,
@@ -93,24 +92,24 @@ struct g_command class_commands[] = {
{ 'F', "nofailsync", NULL, G_TYPE_BOOL },
{ 'h', "hardcode", NULL, G_TYPE_BOOL },
{ 'n', "noautosync", NULL, G_TYPE_BOOL },
- { 's', "slice", &label_slice, G_TYPE_NUMBER },
+ { 's', "slice", GMIRROR_SLICE, G_TYPE_NUMBER },
G_OPT_SENTINEL
},
- NULL, "[-Fhnv] [-b balance] [-s slice] name prov ..."
+ "[-Fhnv] [-b balance] [-s slice] name prov ..."
},
{ "insert", G_FLAG_VERBOSE, NULL,
{
{ 'h', "hardcode", NULL, G_TYPE_BOOL },
{ 'i', "inactive", NULL, G_TYPE_BOOL },
- { 'p', "priority", &insert_priority, G_TYPE_NUMBER },
+ { 'p', "priority", GMIRROR_PRIORITY, G_TYPE_NUMBER },
G_OPT_SENTINEL
},
- NULL, "[-hiv] [-p priority] name prov ..."
+ "[-hiv] [-p priority] name prov ..."
},
- { "rebuild", G_FLAG_VERBOSE, NULL, G_NULL_OPTS, NULL,
+ { "rebuild", G_FLAG_VERBOSE, NULL, G_NULL_OPTS,
"[-v] name prov ..."
},
- { "remove", G_FLAG_VERBOSE, NULL, G_NULL_OPTS, NULL,
+ { "remove", G_FLAG_VERBOSE, NULL, G_NULL_OPTS,
"[-v] name prov ..."
},
{ "stop", G_FLAG_VERBOSE, NULL,
@@ -118,7 +117,7 @@ struct g_command class_commands[] = {
{ 'f', "force", NULL, G_TYPE_BOOL },
G_OPT_SENTINEL
},
- NULL, "[-fv] name ..."
+ "[-fv] name ..."
},
G_CMD_SENTINEL
};
diff --git a/sbin/geom/class/mountver/geom_mountver.c b/sbin/geom/class/mountver/geom_mountver.c
index fa276ca..a1ed95d 100644
--- a/sbin/geom/class/mountver/geom_mountver.c
+++ b/sbin/geom/class/mountver/geom_mountver.c
@@ -43,14 +43,14 @@ struct g_command class_commands[] = {
{
G_OPT_SENTINEL
},
- NULL, "[-v] dev ..."
+ "[-v] dev ..."
},
{ "destroy", G_FLAG_VERBOSE, NULL,
{
{ 'f', "force", NULL, G_TYPE_BOOL },
G_OPT_SENTINEL
},
- NULL, "[-fv] prov ..."
+ "[-fv] prov ..."
},
G_CMD_SENTINEL
};
diff --git a/sbin/geom/class/multipath/geom_multipath.c b/sbin/geom/class/multipath/geom_multipath.c
index 2d72362..6364bc3 100644
--- a/sbin/geom/class/multipath/geom_multipath.c
+++ b/sbin/geom/class/multipath/geom_multipath.c
@@ -53,27 +53,27 @@ static void mp_add(struct gctl_req *);
struct g_command class_commands[] = {
{
"label", G_FLAG_VERBOSE | G_FLAG_LOADKLD, mp_main, G_NULL_OPTS,
- NULL, "[-v] name prov ..."
+ "[-v] name prov ..."
},
{
"add", G_FLAG_VERBOSE | G_FLAG_LOADKLD, mp_main, G_NULL_OPTS,
- NULL, "[-v] name prov ..."
+ "[-v] name prov ..."
},
{
"destroy", G_FLAG_VERBOSE, NULL, G_NULL_OPTS,
- NULL, "[-v] prov ..."
+ "[-v] prov ..."
},
{
"clear", G_FLAG_VERBOSE, mp_main, G_NULL_OPTS,
- NULL, "[-v] prov ..."
+ "[-v] prov ..."
},
{
"rotate", G_FLAG_VERBOSE, NULL, G_NULL_OPTS,
- NULL, "[-v] prov ..."
+ "[-v] prov ..."
},
{
"getactive", G_FLAG_VERBOSE, NULL, G_NULL_OPTS,
- NULL, "[-v] prov ..."
+ "[-v] prov ..."
},
G_CMD_SENTINEL
};
diff --git a/sbin/geom/class/nop/geom_nop.c b/sbin/geom/class/nop/geom_nop.c
index 7306add..25163cc 100644
--- a/sbin/geom/class/nop/geom_nop.c
+++ b/sbin/geom/class/nop/geom_nop.c
@@ -38,44 +38,37 @@ __FBSDID("$FreeBSD$");
uint32_t lib_version = G_LIB_VERSION;
uint32_t version = G_NOP_VERSION;
-static intmax_t error = -1;
-static intmax_t rfailprob = -1;
-static intmax_t wfailprob = -1;
-static intmax_t offset = 0;
-static intmax_t secsize = 0;
-static intmax_t size = 0;
-
struct g_command class_commands[] = {
{ "create", G_FLAG_VERBOSE | G_FLAG_LOADKLD, NULL,
{
- { 'e', "error", &error, G_TYPE_NUMBER },
- { 'o', "offset", &offset, G_TYPE_NUMBER },
- { 'r', "rfailprob", &rfailprob, G_TYPE_NUMBER },
- { 's', "size", &size, G_TYPE_NUMBER },
- { 'S', "secsize", &secsize, G_TYPE_NUMBER },
- { 'w', "wfailprob", &wfailprob, G_TYPE_NUMBER },
+ { 'e', "error", "-1", G_TYPE_NUMBER },
+ { 'o', "offset", "0", G_TYPE_NUMBER },
+ { 'r', "rfailprob", "-1", G_TYPE_NUMBER },
+ { 's', "size", "0", G_TYPE_NUMBER },
+ { 'S', "secsize", "0", G_TYPE_NUMBER },
+ { 'w', "wfailprob", "-1", G_TYPE_NUMBER },
G_OPT_SENTINEL
},
- NULL, "[-v] [-e error] [-o offset] [-r rfailprob] [-s size] "
+ "[-v] [-e error] [-o offset] [-r rfailprob] [-s size] "
"[-S secsize] [-w wfailprob] dev ..."
},
{ "configure", G_FLAG_VERBOSE, NULL,
{
- { 'e', "error", &error, G_TYPE_NUMBER },
- { 'r', "rfailprob", &rfailprob, G_TYPE_NUMBER },
- { 'w', "wfailprob", &wfailprob, G_TYPE_NUMBER },
+ { 'e', "error", "-1", G_TYPE_NUMBER },
+ { 'r', "rfailprob", "-1", G_TYPE_NUMBER },
+ { 'w', "wfailprob", "-1", G_TYPE_NUMBER },
G_OPT_SENTINEL
},
- NULL, "[-v] [-e error] [-r rfailprob] [-w wfailprob] prov ..."
+ "[-v] [-e error] [-r rfailprob] [-w wfailprob] prov ..."
},
{ "destroy", G_FLAG_VERBOSE, NULL,
{
{ 'f', "force", NULL, G_TYPE_BOOL },
G_OPT_SENTINEL
},
- NULL, "[-fv] prov ..."
+ "[-fv] prov ..."
},
- { "reset", G_FLAG_VERBOSE, NULL, G_NULL_OPTS, NULL,
+ { "reset", G_FLAG_VERBOSE, NULL, G_NULL_OPTS,
"[-v] prov ..."
},
G_CMD_SENTINEL
diff --git a/sbin/geom/class/part/geom_part.c b/sbin/geom/class/part/geom_part.c
index 658fba6e..673d90c 100644
--- a/sbin/geom/class/part/geom_part.c
+++ b/sbin/geom/class/part/geom_part.c
@@ -58,15 +58,15 @@ __FBSDID("$FreeBSD$");
uint32_t PUBSYM(lib_version) = G_LIB_VERSION;
uint32_t PUBSYM(version) = 0;
-static char autofill[] = "*";
-static char flags[] = "C";
-
static char sstart[32];
static char ssize[32];
-static const char const bootcode_param[] = "bootcode";
-static const char const index_param[] = "index";
-static const char const partcode_param[] = "partcode";
+#define GPART_AUTOFILL "*"
+#define GPART_FLAGS "C"
+
+#define GPART_PARAM_BOOTCODE "bootcode"
+#define GPART_PARAM_INDEX "index"
+#define GPART_PARAM_PARTCODE "partcode"
static struct gclass *find_class(struct gmesh *, const char *);
static struct ggeom * find_geom(struct gclass *, const char *);
@@ -87,76 +87,81 @@ static void gpart_write_partcode_vtoc8(struct ggeom *, int, void *);
struct g_command PUBSYM(class_commands)[] = {
{ "add", 0, gpart_issue, {
- { 'b', "start", autofill, G_TYPE_STRING },
- { 's', "size", autofill, G_TYPE_STRING },
+ { 'b', "start", GPART_AUTOFILL, G_TYPE_STRING },
+ { 's', "size", GPART_AUTOFILL, G_TYPE_STRING },
{ 't', "type", NULL, G_TYPE_STRING },
- { 'i', index_param, "", G_TYPE_ASCNUM },
+ { 'i', GPART_PARAM_INDEX, "", G_TYPE_ASCNUM },
{ 'l', "label", "", G_TYPE_STRING },
- { 'f', "flags", flags, G_TYPE_STRING },
+ { 'f', "flags", GPART_FLAGS, G_TYPE_STRING },
G_OPT_SENTINEL },
- "geom", NULL
+ "[-b start] [-s size] -t type [-i index] [-l label] [-f flags] geom"
},
{ "bootcode", 0, gpart_bootcode, {
- { 'b', bootcode_param, "", G_TYPE_STRING },
- { 'p', partcode_param, "", G_TYPE_STRING },
- { 'i', index_param, "", G_TYPE_ASCNUM },
- { 'f', "flags", flags, G_TYPE_STRING },
+ { 'b', GPART_PARAM_BOOTCODE, "", G_TYPE_STRING },
+ { 'p', GPART_PARAM_PARTCODE, "", G_TYPE_STRING },
+ { 'i', GPART_PARAM_INDEX, "", G_TYPE_ASCNUM },
+ { 'f', "flags", GPART_FLAGS, G_TYPE_STRING },
G_OPT_SENTINEL },
- "geom", NULL
+ "bootcode [-b bootcode] [-p partcode] [-i index] [-f flags] geom"
+ },
+ { "commit", 0, gpart_issue, G_NULL_OPTS,
+ "geom"
},
- { "commit", 0, gpart_issue, G_NULL_OPTS, "geom", NULL },
{ "create", 0, gpart_issue, {
{ 's', "scheme", NULL, G_TYPE_STRING },
{ 'n', "entries", "", G_TYPE_ASCNUM },
- { 'f', "flags", flags, G_TYPE_STRING },
+ { 'f', "flags", GPART_FLAGS, G_TYPE_STRING },
G_OPT_SENTINEL },
- "provider", NULL
+ "-s scheme [-n entries] [-f flags] provider"
},
{ "delete", 0, gpart_issue, {
- { 'i', index_param, NULL, G_TYPE_ASCNUM },
- { 'f', "flags", flags, G_TYPE_STRING },
+ { 'i', GPART_PARAM_INDEX, NULL, G_TYPE_ASCNUM },
+ { 'f', "flags", GPART_FLAGS, G_TYPE_STRING },
G_OPT_SENTINEL },
- "geom", NULL
+ "-i index [-f flags] geom"
},
{ "destroy", 0, gpart_issue, {
- { 'f', "flags", flags, G_TYPE_STRING },
+ { 'f', "flags", GPART_FLAGS, G_TYPE_STRING },
G_OPT_SENTINEL },
- "geom", NULL },
+ "[-f flags] geom"
+ },
{ "modify", 0, gpart_issue, {
- { 'i', index_param, NULL, G_TYPE_ASCNUM },
+ { 'i', GPART_PARAM_INDEX, NULL, G_TYPE_ASCNUM },
{ 'l', "label", "", G_TYPE_STRING },
{ 't', "type", "", G_TYPE_STRING },
- { 'f', "flags", flags, G_TYPE_STRING },
+ { 'f', "flags", GPART_FLAGS, G_TYPE_STRING },
G_OPT_SENTINEL },
- "geom", NULL
+ "-i index [-l label] [-t type] [-f flags] geom"
},
{ "set", 0, gpart_issue, {
{ 'a', "attrib", NULL, G_TYPE_STRING },
- { 'i', index_param, NULL, G_TYPE_ASCNUM },
- { 'f', "flags", flags, G_TYPE_STRING },
+ { 'i', GPART_PARAM_INDEX, NULL, G_TYPE_ASCNUM },
+ { 'f', "flags", GPART_FLAGS, G_TYPE_STRING },
G_OPT_SENTINEL },
- "geom", NULL
+ "-a attrib -i index [-f flags] geom"
},
{ "show", 0, gpart_show, {
{ 'l', "show_label", NULL, G_TYPE_BOOL },
{ 'r', "show_rawtype", NULL, G_TYPE_BOOL },
G_OPT_SENTINEL },
- NULL, "[-lr] [geom ...]"
+ "[-lr] [geom ...]"
+ },
+ { "undo", 0, gpart_issue, G_NULL_OPTS,
+ "geom"
},
- { "undo", 0, gpart_issue, G_NULL_OPTS, "geom", NULL },
{ "unset", 0, gpart_issue, {
{ 'a', "attrib", NULL, G_TYPE_STRING },
- { 'i', index_param, NULL, G_TYPE_ASCNUM },
- { 'f', "flags", flags, G_TYPE_STRING },
+ { 'i', GPART_PARAM_INDEX, NULL, G_TYPE_ASCNUM },
+ { 'f', "flags", GPART_FLAGS, G_TYPE_STRING },
G_OPT_SENTINEL },
- "geom", NULL
+ "-a attrib -i index [-f flags] geom"
},
{ "resize", 0, gpart_issue, {
- { 's', "size", autofill, G_TYPE_STRING },
- { 'i', index_param, NULL, G_TYPE_ASCNUM },
- { 'f', "flags", flags, G_TYPE_STRING },
+ { 's', "size", GPART_AUTOFILL, G_TYPE_STRING },
+ { 'i', GPART_PARAM_INDEX, NULL, G_TYPE_ASCNUM },
+ { 'f', "flags", GPART_FLAGS, G_TYPE_STRING },
G_OPT_SENTINEL },
- "geom", NULL
+ "[-s size] -i index [-f flags] geom"
},
G_CMD_SENTINEL
};
@@ -281,7 +286,7 @@ gpart_autofill_resize(struct gctl_req *req)
char *val;
int error, idx;
- s = gctl_get_ascii(req, index_param);
+ s = gctl_get_ascii(req, GPART_PARAM_INDEX);
idx = strtol(s, &val, 10);
if (idx < 1 || *s == '\0' || *val != '\0')
errx(EXIT_FAILURE, "invalid partition index");
@@ -773,11 +778,11 @@ gpart_bootcode(struct gctl_req *req, unsigned int fl)
size_t bootsize, partsize;
int error, idx, vtoc8;
- if (gctl_has_param(req, bootcode_param)) {
- s = gctl_get_ascii(req, bootcode_param);
+ if (gctl_has_param(req, GPART_PARAM_BOOTCODE)) {
+ s = gctl_get_ascii(req, GPART_PARAM_BOOTCODE);
bootsize = 800 * 1024; /* Arbitrary limit. */
bootcode = gpart_bootfile_read(s, &bootsize);
- error = gctl_change_param(req, bootcode_param, bootsize,
+ error = gctl_change_param(req, GPART_PARAM_BOOTCODE, bootsize,
bootcode);
if (error)
errc(EXIT_FAILURE, error, "internal error");
@@ -797,7 +802,7 @@ gpart_bootcode(struct gctl_req *req, unsigned int fl)
geom_deletetree(&mesh);
errx(EXIT_FAILURE, "Class %s not found.", s);
}
- s = gctl_get_ascii(req, "geom");
+ s = gctl_get_ascii(req, "arg0");
if (s == NULL)
abort();
gp = find_geom(classp, s);
@@ -808,11 +813,11 @@ gpart_bootcode(struct gctl_req *req, unsigned int fl)
if (strcmp(s, "VTOC8") == 0)
vtoc8 = 1;
- if (gctl_has_param(req, partcode_param)) {
- s = gctl_get_ascii(req, partcode_param);
+ if (gctl_has_param(req, GPART_PARAM_PARTCODE)) {
+ s = gctl_get_ascii(req, GPART_PARAM_PARTCODE);
partsize = vtoc8 != 0 ? VTOC_BOOTSIZE : bootsize * 1024;
partcode = gpart_bootfile_read(s, &partsize);
- error = gctl_delete_param(req, partcode_param);
+ error = gctl_delete_param(req, GPART_PARAM_PARTCODE);
if (error)
errc(EXIT_FAILURE, error, "internal error");
} else {
@@ -820,14 +825,14 @@ gpart_bootcode(struct gctl_req *req, unsigned int fl)
partsize = 0;
}
- if (gctl_has_param(req, index_param)) {
+ if (gctl_has_param(req, GPART_PARAM_INDEX)) {
if (partcode == NULL)
errx(EXIT_FAILURE, "-i is only valid with -p");
- s = gctl_get_ascii(req, index_param);
+ s = gctl_get_ascii(req, GPART_PARAM_INDEX);
idx = strtol(s, &sp, 10);
if (idx < 1 || *s == '\0' || *sp != '\0')
errx(EXIT_FAILURE, "invalid partition index");
- error = gctl_delete_param(req, index_param);
+ error = gctl_delete_param(req, GPART_PARAM_INDEX);
if (error)
errc(EXIT_FAILURE, error, "internal error");
} else
@@ -858,6 +863,10 @@ gpart_issue(struct gctl_req *req, unsigned int fl __unused)
const char *errstr;
int error, status;
+ if (gctl_get_int(req, "nargs") != 1)
+ errx(EXIT_FAILURE, "Invalid number of arguments.");
+ (void)gctl_delete_param(req, "nargs");
+
/* autofill parameters (if applicable). */
error = gpart_autofill(req);
if (error) {
diff --git a/sbin/geom/class/raid3/geom_raid3.c b/sbin/geom/class/raid3/geom_raid3.c
index 89ce168..220fb09 100644
--- a/sbin/geom/class/raid3/geom_raid3.c
+++ b/sbin/geom/class/raid3/geom_raid3.c
@@ -45,15 +45,13 @@ __FBSDID("$FreeBSD$");
uint32_t lib_version = G_LIB_VERSION;
uint32_t version = G_RAID3_VERSION;
-static intmax_t default_blocksize = 0;
-
static void raid3_main(struct gctl_req *req, unsigned f);
static void raid3_clear(struct gctl_req *req);
static void raid3_dump(struct gctl_req *req);
static void raid3_label(struct gctl_req *req);
struct g_command class_commands[] = {
- { "clear", G_FLAG_VERBOSE, raid3_main, G_NULL_OPTS, NULL,
+ { "clear", G_FLAG_VERBOSE, raid3_main, G_NULL_OPTS,
"[-v] prov ..."
},
{ "configure", G_FLAG_VERBOSE, NULL,
@@ -70,9 +68,9 @@ struct g_command class_commands[] = {
{ 'W', "noverify", NULL, G_TYPE_BOOL },
G_OPT_SENTINEL
},
- NULL, "[-adfFhnrRvwW] name"
+ "[-adfFhnrRvwW] name"
},
- { "dump", 0, raid3_main, G_NULL_OPTS, NULL,
+ { "dump", 0, raid3_main, G_NULL_OPTS,
"prov ..."
},
{ "insert", G_FLAG_VERBOSE, NULL,
@@ -81,7 +79,7 @@ struct g_command class_commands[] = {
{ 'n', "number", NULL, G_TYPE_NUMBER },
G_OPT_SENTINEL
},
- NULL, "[-hv] <-n number> name prov"
+ "[-hv] <-n number> name prov"
},
{ "label", G_FLAG_VERBOSE, raid3_main,
{
@@ -89,13 +87,13 @@ struct g_command class_commands[] = {
{ 'F', "nofailsync", NULL, G_TYPE_BOOL },
{ 'n', "noautosync", NULL, G_TYPE_BOOL },
{ 'r', "round_robin", NULL, G_TYPE_BOOL },
- { 's', "blocksize", &default_blocksize, G_TYPE_NUMBER },
+ { 's', "sectorsize", "0", G_TYPE_NUMBER },
{ 'w', "verify", NULL, G_TYPE_BOOL },
G_OPT_SENTINEL
},
- NULL, "[-hFnrvw] [-s blocksize] name prov prov prov ..."
+ "[-hFnrvw] [-s blocksize] name prov prov prov ..."
},
- { "rebuild", G_FLAG_VERBOSE, NULL, G_NULL_OPTS, NULL,
+ { "rebuild", G_FLAG_VERBOSE, NULL, G_NULL_OPTS,
"[-v] name prov"
},
{ "remove", G_FLAG_VERBOSE, NULL,
@@ -103,14 +101,14 @@ struct g_command class_commands[] = {
{ 'n', "number", NULL, G_TYPE_NUMBER },
G_OPT_SENTINEL
},
- NULL, "[-v] <-n number> name"
+ "[-v] <-n number> name"
},
{ "stop", G_FLAG_VERBOSE, NULL,
{
{ 'f', "force", NULL, G_TYPE_BOOL },
G_OPT_SENTINEL
},
- NULL, "[-fv] name ..."
+ "[-fv] name ..."
},
G_CMD_SENTINEL
};
@@ -193,7 +191,7 @@ raid3_label(struct gctl_req *req)
* sectorsizes of every disk and find the smallest mediasize.
*/
mediasize = 0;
- sectorsize = gctl_get_intmax(req, "blocksize");
+ sectorsize = gctl_get_intmax(req, "sectorsize");
for (i = 1; i < nargs; i++) {
str = gctl_get_ascii(req, "arg%d", i);
msize = g_get_mediasize(str);
diff --git a/sbin/geom/class/sched/geom_sched.c b/sbin/geom/class/sched/geom_sched.c
index eba8e49..727913c 100644
--- a/sbin/geom/class/sched/geom_sched.c
+++ b/sbin/geom/class/sched/geom_sched.c
@@ -60,11 +60,13 @@ uint32_t version = G_SCHED_VERSION;
* Adapt to differences in geom library.
* in V1 struct g_command misses gc_argname, eld, and G_BOOL is undefined
*/
-#if G_LIB_VERSION == 1
-#define G_ARGNAME
+#if G_LIB_VERSION <= 1
#define G_TYPE_BOOL G_TYPE_NUMBER
-#else
+#endif
+#if G_LIB_VERSION >= 3 && G_LIB_VERSION <= 4
#define G_ARGNAME NULL,
+#else
+#define G_ARGNAME
#endif
static void
diff --git a/sbin/geom/class/shsec/geom_shsec.c b/sbin/geom/class/shsec/geom_shsec.c
index 8af47ee..75791de 100644
--- a/sbin/geom/class/shsec/geom_shsec.c
+++ b/sbin/geom/class/shsec/geom_shsec.c
@@ -52,10 +52,10 @@ static void shsec_dump(struct gctl_req *req);
static void shsec_label(struct gctl_req *req);
struct g_command class_commands[] = {
- { "clear", G_FLAG_VERBOSE, shsec_main, G_NULL_OPTS, NULL,
+ { "clear", G_FLAG_VERBOSE, shsec_main, G_NULL_OPTS,
"[-v] prov ..."
},
- { "dump", 0, shsec_main, G_NULL_OPTS, NULL,
+ { "dump", 0, shsec_main, G_NULL_OPTS,
"prov ..."
},
{ "label", G_FLAG_VERBOSE | G_FLAG_LOADKLD, shsec_main,
@@ -63,14 +63,14 @@ struct g_command class_commands[] = {
{ 'h', "hardcode", NULL, G_TYPE_BOOL },
G_OPT_SENTINEL
},
- NULL, "[-hv] name prov prov ..."
+ "[-hv] name prov prov ..."
},
{ "stop", G_FLAG_VERBOSE, NULL,
{
{ 'f', "force", NULL, G_TYPE_BOOL },
G_OPT_SENTINEL
},
- NULL, "[-fv] name ..."
+ "[-fv] name ..."
},
G_CMD_SENTINEL
};
diff --git a/sbin/geom/class/stripe/geom_stripe.c b/sbin/geom/class/stripe/geom_stripe.c
index 16808cc..215dae0 100644
--- a/sbin/geom/class/stripe/geom_stripe.c
+++ b/sbin/geom/class/stripe/geom_stripe.c
@@ -46,7 +46,7 @@ __FBSDID("$FreeBSD$");
uint32_t lib_version = G_LIB_VERSION;
uint32_t version = G_STRIPE_VERSION;
-static intmax_t default_stripesize = 65536;
+#define GSTRIPE_STRIPESIZE "65536"
static void stripe_main(struct gctl_req *req, unsigned flags);
static void stripe_clear(struct gctl_req *req);
@@ -54,40 +54,40 @@ static void stripe_dump(struct gctl_req *req);
static void stripe_label(struct gctl_req *req);
struct g_command class_commands[] = {
- { "clear", G_FLAG_VERBOSE, stripe_main, G_NULL_OPTS, NULL,
+ { "clear", G_FLAG_VERBOSE, stripe_main, G_NULL_OPTS,
"[-v] prov ..."
},
{ "create", G_FLAG_VERBOSE | G_FLAG_LOADKLD, NULL,
{
- { 's', "stripesize", &default_stripesize, G_TYPE_NUMBER },
+ { 's', "stripesize", GSTRIPE_STRIPESIZE, G_TYPE_NUMBER },
G_OPT_SENTINEL
},
- NULL, "[-hv] [-s stripesize] name prov prov ..."
+ "[-hv] [-s stripesize] name prov prov ..."
},
{ "destroy", G_FLAG_VERBOSE, NULL,
{
{ 'f', "force", NULL, G_TYPE_BOOL },
G_OPT_SENTINEL
},
- NULL, "[-fv] name ..."
+ "[-fv] name ..."
},
- { "dump", 0, stripe_main, G_NULL_OPTS, NULL,
+ { "dump", 0, stripe_main, G_NULL_OPTS,
"prov ..."
},
{ "label", G_FLAG_VERBOSE | G_FLAG_LOADKLD, stripe_main,
{
{ 'h', "hardcode", NULL, G_TYPE_BOOL },
- { 's', "stripesize", &default_stripesize, G_TYPE_NUMBER },
+ { 's', "stripesize", GSTRIPE_STRIPESIZE, G_TYPE_NUMBER },
G_OPT_SENTINEL
},
- NULL, "[-hv] [-s stripesize] name prov prov ..."
+ "[-hv] [-s stripesize] name prov prov ..."
},
{ "stop", G_FLAG_VERBOSE, NULL,
{
{ 'f', "force", NULL, G_TYPE_BOOL },
G_OPT_SENTINEL
},
- NULL, "[-fv] name ..."
+ "[-fv] name ..."
},
G_CMD_SENTINEL
};
diff --git a/sbin/geom/class/virstor/geom_virstor.c b/sbin/geom/class/virstor/geom_virstor.c
index 5630de2..b08a8b9 100644
--- a/sbin/geom/class/virstor/geom_virstor.c
+++ b/sbin/geom/class/virstor/geom_virstor.c
@@ -48,8 +48,9 @@ __FBSDID("$FreeBSD$");
uint32_t lib_version = G_LIB_VERSION;
uint32_t version = G_VIRSTOR_VERSION;
-static intmax_t chunk_size = 4 * 1024 * 1024; /* in kB (default: 4 MB) */
-static intmax_t vir_size = 2ULL << 40; /* in MB (default: 2 TB) */
+
+#define GVIRSTOR_CHUNK_SIZE "4M"
+#define GVIRSTOR_VIR_SIZE "2T"
#if G_LIB_VERSION == 1
/* Support RELENG_6 */
@@ -62,44 +63,44 @@ static intmax_t vir_size = 2ULL << 40; /* in MB (default: 2 TB) */
static void virstor_main(struct gctl_req *req, unsigned flags);
struct g_command class_commands[] = {
- {"clear", G_FLAG_VERBOSE, virstor_main, G_NULL_OPTS, NULL,
- "[-v] prov ..."
+ { "clear", G_FLAG_VERBOSE, virstor_main, G_NULL_OPTS,
+ "[-v] prov ..."
},
- {"dump", 0, virstor_main, G_NULL_OPTS, NULL,
- "prov ..."
+ { "dump", 0, virstor_main, G_NULL_OPTS,
+ "prov ..."
},
- {"label", G_FLAG_VERBOSE | G_FLAG_LOADKLD, virstor_main,
- {
- {'h', "hardcode", NULL, G_TYPE_BOOL},
- {'m', "chunk_size", &chunk_size, G_TYPE_NUMBER},
- {'s', "vir_size", &vir_size, G_TYPE_NUMBER},
- G_OPT_SENTINEL
- },
- NULL, "[-h] [-v] [-m chunk_size] [-s vir_size] name provider0 [provider1 ...]"
+ { "label", G_FLAG_VERBOSE | G_FLAG_LOADKLD, virstor_main,
+ {
+ { 'h', "hardcode", NULL, G_TYPE_BOOL},
+ { 'm', "chunk_size", GVIRSTOR_CHUNK_SIZE, G_TYPE_NUMBER},
+ { 's', "vir_size", GVIRSTOR_VIR_SIZE, G_TYPE_NUMBER},
+ G_OPT_SENTINEL
+ },
+ "[-h] [-v] [-m chunk_size] [-s vir_size] name provider0 [provider1 ...]"
},
- {"destroy", G_FLAG_VERBOSE, NULL,
- {
- {'f', "force", NULL, G_TYPE_BOOL},
- G_OPT_SENTINEL
- },
- NULL, "[-fv] name ..."
+ { "destroy", G_FLAG_VERBOSE, NULL,
+ {
+ { 'f', "force", NULL, G_TYPE_BOOL},
+ G_OPT_SENTINEL
+ },
+ "[-fv] name ..."
},
- {"stop", G_FLAG_VERBOSE, NULL,
- {
- {'f', "force", NULL, G_TYPE_BOOL},
- G_OPT_SENTINEL
- },
- NULL, "[-fv] name ... (alias for \"destroy\")"
+ { "stop", G_FLAG_VERBOSE, NULL,
+ {
+ { 'f', "force", NULL, G_TYPE_BOOL},
+ G_OPT_SENTINEL
+ },
+ "[-fv] name ... (alias for \"destroy\")"
},
- {"add", G_FLAG_VERBOSE, NULL,
- {
- {'h', "hardcode", NULL, G_TYPE_BOOL},
- G_OPT_SENTINEL
- },
- NULL, "[-vh] name prov [prov ...]"
+ { "add", G_FLAG_VERBOSE, NULL,
+ {
+ { 'h', "hardcode", NULL, G_TYPE_BOOL},
+ G_OPT_SENTINEL
+ },
+ "[-vh] name prov [prov ...]"
},
- {"remove", G_FLAG_VERBOSE, NULL, G_NULL_OPTS, NULL,
- "[-v] name ..."
+ { "remove", G_FLAG_VERBOSE, NULL, G_NULL_OPTS,
+ "[-v] name ..."
},
G_CMD_SENTINEL
};
diff --git a/sbin/geom/core/geom.c b/sbin/geom/core/geom.c
index b891098..4a3dcd4 100644
--- a/sbin/geom/core/geom.c
+++ b/sbin/geom/core/geom.c
@@ -75,8 +75,8 @@ static void std_load(struct gctl_req *req, unsigned flags);
static void std_unload(struct gctl_req *req, unsigned flags);
struct g_command std_commands[] = {
- { "help", 0, std_help, G_NULL_OPTS, NULL, NULL },
- { "list", 0, std_list, G_NULL_OPTS, NULL,
+ { "help", 0, std_help, G_NULL_OPTS, NULL },
+ { "list", 0, std_list, G_NULL_OPTS,
"[name ...]"
},
{ "status", 0, std_status,
@@ -84,11 +84,11 @@ struct g_command std_commands[] = {
{ 's', "script", NULL, G_TYPE_BOOL },
G_OPT_SENTINEL
},
- NULL, "[-s] [name ...]"
+ "[-s] [name ...]"
},
{ "load", G_FLAG_VERBOSE | G_FLAG_LOADKLD, std_load, G_NULL_OPTS,
- NULL, NULL },
- { "unload", G_FLAG_VERBOSE, std_unload, G_NULL_OPTS, NULL, NULL },
+ NULL },
+ { "unload", G_FLAG_VERBOSE, std_unload, G_NULL_OPTS, NULL },
G_CMD_SENTINEL
};
@@ -129,8 +129,6 @@ usage_command(struct g_command *cmd, const char *prefix)
if (opt->go_val != NULL || G_OPT_TYPE(opt) == G_TYPE_BOOL)
fprintf(stderr, "]");
}
- if (cmd->gc_argname)
- fprintf(stderr, " %s", cmd->gc_argname);
fprintf(stderr, "\n");
}
@@ -348,39 +346,24 @@ parse_arguments(struct g_command *cmd, struct gctl_req *req, int *argc,
warnx("Option '%c' not specified.",
opt->go_char);
usage();
+ } else if (G_OPT_TYPE(opt) == G_TYPE_ASCNUM &&
+ *(const char *)opt->go_val == '\0') {
+ ; /* add nothing. */
} else {
- if (G_OPT_TYPE(opt) == G_TYPE_NUMBER) {
- gctl_ro_param(req, opt->go_name,
- sizeof(intmax_t), opt->go_val);
- } else if (G_OPT_TYPE(opt) == G_TYPE_STRING ||
- G_OPT_TYPE(opt) == G_TYPE_ASCNUM) {
- if (cmd->gc_argname == NULL ||
- opt->go_val == NULL ||
- *(const char *)opt->go_val != '\0')
- gctl_ro_param(req, opt->go_name,
- -1, opt->go_val);
- } else {
- assert(!"Invalid type");
- }
+ set_option(req, opt, opt->go_val);
}
}
}
- if (cmd->gc_argname == NULL) {
- /*
- * Add rest of given arguments.
- */
- gctl_ro_param(req, "nargs", sizeof(int), argc);
- for (i = 0; i < (unsigned)*argc; i++) {
- char argname[16];
+ /*
+ * Add rest of given arguments.
+ */
+ gctl_ro_param(req, "nargs", sizeof(int), argc);
+ for (i = 0; i < (unsigned)*argc; i++) {
+ char argname[16];
- snprintf(argname, sizeof(argname), "arg%u", i);
- gctl_ro_param(req, argname, -1, (*argv)[i]);
- }
- } else {
- if (*argc != 1)
- usage();
- gctl_ro_param(req, cmd->gc_argname, -1, (*argv)[0]);
+ snprintf(argname, sizeof(argname), "arg%u", i);
+ gctl_ro_param(req, argname, -1, (*argv)[i]);
}
}
diff --git a/sbin/geom/core/geom.h b/sbin/geom/core/geom.h
index e2f96e9..92c97a3 100644
--- a/sbin/geom/core/geom.h
+++ b/sbin/geom/core/geom.h
@@ -28,7 +28,7 @@
#ifndef _GEOM_H_
#define _GEOM_H_
-#define G_LIB_VERSION 4
+#define G_LIB_VERSION 5
#define G_FLAG_NONE 0x0000
#define G_FLAG_VERBOSE 0x0001
@@ -49,7 +49,7 @@
#define G_OPT_SENTINEL { '\0', NULL, NULL, G_TYPE_NONE }
#define G_NULL_OPTS { G_OPT_SENTINEL }
-#define G_CMD_SENTINEL { NULL, 0, NULL, G_NULL_OPTS, NULL, NULL }
+#define G_CMD_SENTINEL { NULL, 0, NULL, G_NULL_OPTS, NULL }
struct g_option {
char go_char;
@@ -63,7 +63,6 @@ struct g_command {
unsigned gc_flags;
void (*gc_func)(struct gctl_req *, unsigned);
struct g_option gc_options[G_OPT_MAX];
- const char *gc_argname;
const char *gc_usage;
};
#endif /* !_GEOM_H_ */
diff --git a/sys/geom/part/g_part.c b/sys/geom/part/g_part.c
index b9fca08..cedc3ac 100644
--- a/sys/geom/part/g_part.c
+++ b/sys/geom/part/g_part.c
@@ -1327,6 +1327,10 @@ g_part_ctlreq(struct gctl_req *req, struct g_class *mp, const char *verb)
parm = 0;
switch (ap->name[0]) {
case 'a':
+ if (!strcmp(ap->name, "arg0")) {
+ parm = mparms &
+ (G_PART_PARM_GEOM | G_PART_PARM_PROVIDER);
+ }
if (!strcmp(ap->name, "attrib"))
parm = G_PART_PARM_ATTRIB;
break;
@@ -1346,10 +1350,6 @@ g_part_ctlreq(struct gctl_req *req, struct g_class *mp, const char *verb)
if (!strcmp(ap->name, "flags"))
parm = G_PART_PARM_FLAGS;
break;
- case 'g':
- if (!strcmp(ap->name, "geom"))
- parm = G_PART_PARM_GEOM;
- break;
case 'i':
if (!strcmp(ap->name, "index"))
parm = G_PART_PARM_INDEX;
@@ -1362,10 +1362,6 @@ g_part_ctlreq(struct gctl_req *req, struct g_class *mp, const char *verb)
if (!strcmp(ap->name, "output"))
parm = G_PART_PARM_OUTPUT;
break;
- case 'p':
- if (!strcmp(ap->name, "provider"))
- parm = G_PART_PARM_PROVIDER;
- break;
case 's':
if (!strcmp(ap->name, "scheme"))
parm = G_PART_PARM_SCHEME;
OpenPOWER on IntegriCloud