diff options
-rw-r--r-- | sbin/geom/class/concat/gconcat.8 | 18 | ||||
-rw-r--r-- | sbin/geom/class/concat/geom_concat.c | 9 | ||||
-rw-r--r-- | sbin/geom/class/label/geom_label.c | 9 | ||||
-rw-r--r-- | sbin/geom/class/label/glabel.8 | 22 | ||||
-rw-r--r-- | sbin/geom/class/stripe/geom_stripe.c | 9 | ||||
-rw-r--r-- | sbin/geom/class/stripe/gstripe.8 | 18 | ||||
-rw-r--r-- | sys/geom/concat/g_concat.c | 3 | ||||
-rw-r--r-- | sys/geom/concat/g_concat.h | 2 | ||||
-rw-r--r-- | sys/geom/label/g_label.c | 3 | ||||
-rw-r--r-- | sys/geom/label/g_label.h | 2 | ||||
-rw-r--r-- | sys/geom/stripe/g_stripe.c | 3 | ||||
-rw-r--r-- | sys/geom/stripe/g_stripe.h | 2 |
12 files changed, 83 insertions, 17 deletions
diff --git a/sbin/geom/class/concat/gconcat.8 b/sbin/geom/class/concat/gconcat.8 index 3fc896c..1812022 100644 --- a/sbin/geom/class/concat/gconcat.8 +++ b/sbin/geom/class/concat/gconcat.8 @@ -39,6 +39,11 @@ .Ar dev2 .Op Ar dev3 Op Ar ... .Nm +.Cm destroy +.Op Fl fv +.Ar name +.Op Ar name2 Op Ar ... +.Nm .Cm label .Op Fl v .Ar name @@ -46,7 +51,7 @@ .Ar dev2 .Op Ar dev3 Op Ar ... .Nm -.Cm destroy +.Cm stop .Op Fl fv .Ar name .Op Ar name2 Op Ar ... @@ -104,9 +109,13 @@ method, where metadata are stored in every device's last sector. The kernel module .Pa geom_concat.ko will be loaded if it is not loaded already. -.It Cm destroy +.It Cm stop Turn off existing concatenate device by its .Ar name . +This command doesn't touch on-disk metadata! +.It Cm destroy +Same as +.Cm stop . .It Cm clear Clear metadata on the given devices. .It Cm list @@ -135,6 +144,10 @@ concatenation, create a file system on it, and mount it: gconcat label -v data /dev/da0 /dev/da1 /dev/da2 /dev/da3 newfs /dev/data.concat mount /dev/data.concat /mnt +[...] +umount /mnt +gconcat stop data +gconcat unload .Ed .Sh DIAGNOSTICS Exit status is 0 on success, and 1 if the command fails. @@ -143,6 +156,7 @@ Exit status is 0 on success, and 1 if the command fails. .Xr geom 8 , .Xr mount 8 , .Xr newfs 8 , +.Xr umount 8 , .Xr vinum 8 .Sh HISTORY The diff --git a/sbin/geom/class/concat/geom_concat.c b/sbin/geom/class/concat/geom_concat.c index 8000dcb..3042b5f 100644 --- a/sbin/geom/class/concat/geom_concat.c +++ b/sbin/geom/class/concat/geom_concat.c @@ -49,6 +49,7 @@ static void concat_label(struct gctl_req *req); static void concat_clear(struct gctl_req *req); struct g_command class_commands[] = { + { "clear", G_FLAG_VERBOSE, concat_main, G_NULL_OPTS }, { "create", G_FLAG_VERBOSE | G_FLAG_LOADKLD, NULL, G_NULL_OPTS }, { "destroy", G_FLAG_VERBOSE, NULL, { @@ -57,7 +58,12 @@ struct g_command class_commands[] = { } }, { "label", G_FLAG_VERBOSE | G_FLAG_LOADKLD, concat_main, G_NULL_OPTS }, - { "clear", G_FLAG_VERBOSE, concat_main, G_NULL_OPTS }, + { "stop", G_FLAG_VERBOSE, NULL, + { + { 'f', "force", NULL, G_TYPE_NONE }, + G_OPT_SENTINEL + } + }, G_CMD_SENTINEL }; @@ -72,6 +78,7 @@ usage(const char *name) fprintf(stderr, "usage: %s create [-v] <name> <dev1> <dev2> [dev3 [...]]\n", name); fprintf(stderr, " %s destroy [-fv] <name> [name2 [...]]\n", name); fprintf(stderr, " %s label [-v] <name> <dev1> <dev2> [dev3 [...]]\n", name); + fprintf(stderr, " %s stop [-fv] <name> [name2 [...]]\n", name); fprintf(stderr, " %s clear [-v] <dev1> [dev2 [...]]\n", name); } diff --git a/sbin/geom/class/label/geom_label.c b/sbin/geom/class/label/geom_label.c index bbd6e7f..edb0d7e 100644 --- a/sbin/geom/class/label/geom_label.c +++ b/sbin/geom/class/label/geom_label.c @@ -49,6 +49,7 @@ static void label_label(struct gctl_req *req); static void label_clear(struct gctl_req *req); struct g_command class_commands[] = { + { "clear", G_FLAG_VERBOSE, label_main, G_NULL_OPTS }, { "create", G_FLAG_VERBOSE | G_FLAG_LOADKLD, NULL, G_NULL_OPTS }, { "destroy", G_FLAG_VERBOSE, NULL, { @@ -57,7 +58,12 @@ struct g_command class_commands[] = { } }, { "label", G_FLAG_VERBOSE | G_FLAG_LOADKLD, label_main, G_NULL_OPTS }, - { "clear", G_FLAG_VERBOSE, label_main, G_NULL_OPTS }, + { "stop", G_FLAG_VERBOSE, NULL, + { + { 'f', "force", NULL, G_TYPE_NONE }, + G_OPT_SENTINEL + } + }, G_CMD_SENTINEL }; @@ -72,6 +78,7 @@ usage(const char *name) fprintf(stderr, "usage: %s create [-v] <name> <dev>\n", name); fprintf(stderr, " %s destroy [-fv] <name> [name2 [...]]\n", name); fprintf(stderr, " %s label [-v] <name> <dev>\n", name); + fprintf(stderr, " %s stop [-fv] <name> [name2 [...]]\n", name); fprintf(stderr, " %s clear [-v] <dev1> [dev2 [...]]\n", name); } diff --git a/sbin/geom/class/label/glabel.8 b/sbin/geom/class/label/glabel.8 index 4b656e2..46f20e9 100644 --- a/sbin/geom/class/label/glabel.8 +++ b/sbin/geom/class/label/glabel.8 @@ -37,12 +37,17 @@ .Ar name .Ar dev .Nm +.Cm destroy +.Op Fl fv +.Ar name +.Op Ar name Op Ar ... +.Nm .Cm label .Op Fl v .Ar name .Ar dev .Nm -.Cm destroy +.Cm stop .Op Fl fv .Ar name .Op Ar name Op Ar ... @@ -127,9 +132,13 @@ method, where metadata is stored in provider's last sector. The kernel module .Pa geom_label.ko will be loaded if it is not loaded already. -.It Cm destroy -Turn off the given labels by its +.It Cm stop +Turn off the given label by its .Ar name . +This command doesn't touch on-disk metadata! +.It Cm destroy +Same as +.Cm stop . .It Cm clear Clear metadata on the given devices. .It Cm list @@ -158,6 +167,10 @@ create a file system on it, and mount it: glabel label -v usr /dev/da2 newfs /dev/label/usr mount /dev/label/usr /usr +[...] +umount /usr +glabel stop usr +glabel unload .Ed .Pp The next example shows how to setup a label for a UFS file system: @@ -172,7 +185,8 @@ Exit status is 0 on success, and 1 if the command fails. .Xr geom 8 , .Xr mount 8 , .Xr newfs 8 , -.Xr tunefs 8 +.Xr tunefs 8 , +.Xr umount 8 .Sh HISTORY The .Nm diff --git a/sbin/geom/class/stripe/geom_stripe.c b/sbin/geom/class/stripe/geom_stripe.c index 24731b7..0ed77c8 100644 --- a/sbin/geom/class/stripe/geom_stripe.c +++ b/sbin/geom/class/stripe/geom_stripe.c @@ -52,6 +52,7 @@ static void stripe_label(struct gctl_req *req); static void stripe_clear(struct gctl_req *req); struct g_command class_commands[] = { + { "clear", G_FLAG_VERBOSE, stripe_main, G_NULL_OPTS }, { "create", G_FLAG_VERBOSE | G_FLAG_LOADKLD, NULL, { { 's', "stripesize", &stripesize, G_TYPE_NUMBER }, @@ -70,7 +71,12 @@ struct g_command class_commands[] = { G_OPT_SENTINEL } }, - { "clear", G_FLAG_VERBOSE, stripe_main, G_NULL_OPTS }, + { "stop", G_FLAG_VERBOSE, NULL, + { + { 'f', "force", NULL, G_TYPE_NONE }, + G_OPT_SENTINEL + } + }, G_CMD_SENTINEL }; @@ -84,6 +90,7 @@ usage(const char *name) fprintf(stderr, "usage: %s create [-v] [-s stripesize] <name> <dev1> <dev2> [dev3 [...]]\n", name); fprintf(stderr, " %s destroy [-fv] <name> [name2 [...]]\n", name); fprintf(stderr, " %s label [-v] [-s stripesize] <name> <dev1> <dev2> [dev3 [...]]\n", name); + fprintf(stderr, " %s stop [-fv] <name> [name2 [...]]\n", name); fprintf(stderr, " %s clear [-v] <dev1> [dev2 [...]]\n", name); } diff --git a/sbin/geom/class/stripe/gstripe.8 b/sbin/geom/class/stripe/gstripe.8 index a2837ae..1f3e7e1 100644 --- a/sbin/geom/class/stripe/gstripe.8 +++ b/sbin/geom/class/stripe/gstripe.8 @@ -40,6 +40,11 @@ .Ar dev2 .Op Ar dev3 Op Ar ... .Nm +.Cm destroy +.Op Fl fv +.Ar name +.Op Ar name2 Op Ar ... +.Nm .Cm label .Op Fl v .Op Fl s Ar stripesize @@ -48,7 +53,7 @@ .Ar dev2 .Op Ar dev3 Op Ar ... .Nm -.Cm destroy +.Cm stop .Op Fl fv .Ar name .Op Ar name2 Op Ar ... @@ -106,9 +111,13 @@ method, where metadata are stored in every device's last sector. The kernel module .Pa geom_stripe.ko will be loaded if it is not loaded already. -.It Cm destroy +.It Cm stop Turn off existing striped device by its .Ar name . +This command doesn't touch on-disk metadata! +.It Cm destroy +Same as +.Cm stop . .It Cm clear Clear metadata on the given devices. .It Cm list @@ -139,6 +148,10 @@ for automatic configuration, create a file system on it, and mount it: gstripe label -v -s 65536 data /dev/da0 /dev/da1 /dev/da2 /dev/da3 newfs /dev/data.stripe mount /dev/data.stripe /mnt +[...] +umount /mnt +gstripe stop data +gstripe unload .Ed .Sh DIAGNOSTICS Exit status is 0 on success, and 1 if the command fails. @@ -147,6 +160,7 @@ Exit status is 0 on success, and 1 if the command fails. .Xr geom 8 , .Xr mount 8 , .Xr newfs 8 , +.Xr umount 8 , .Xr vinum 8 .Sh HISTORY The diff --git a/sys/geom/concat/g_concat.c b/sys/geom/concat/g_concat.c index 768e2cb..9dd8bff 100644 --- a/sys/geom/concat/g_concat.c +++ b/sys/geom/concat/g_concat.c @@ -791,7 +791,8 @@ g_concat_config(struct gctl_req *req, struct g_class *mp, const char *verb) if (strcmp(verb, "create") == 0) { g_concat_ctl_create(req, mp); return; - } else if (strcmp(verb, "destroy") == 0) { + } else if (strcmp(verb, "destroy") == 0 || + strcmp(verb, "stop") == 0) { g_concat_ctl_destroy(req, mp); return; } diff --git a/sys/geom/concat/g_concat.h b/sys/geom/concat/g_concat.h index 013356b..81675d8 100644 --- a/sys/geom/concat/g_concat.h +++ b/sys/geom/concat/g_concat.h @@ -34,7 +34,7 @@ #define G_CONCAT_CLASS_NAME "CONCAT" #define G_CONCAT_MAGIC "GEOM::CONCAT" -#define G_CONCAT_VERSION 1 +#define G_CONCAT_VERSION 2 #ifdef _KERNEL #define G_CONCAT_TYPE_MANUAL 0 diff --git a/sys/geom/label/g_label.c b/sys/geom/label/g_label.c index 2aa9754..7b0781b 100644 --- a/sys/geom/label/g_label.c +++ b/sys/geom/label/g_label.c @@ -394,7 +394,8 @@ g_label_config(struct gctl_req *req, struct g_class *mp, const char *verb) if (strcmp(verb, "create") == 0) { g_label_ctl_create(req, mp); return; - } else if (strcmp(verb, "destroy") == 0) { + } else if (strcmp(verb, "destroy") == 0 || + strcmp(verb, "stop") == 0) { g_label_ctl_destroy(req, mp); return; } diff --git a/sys/geom/label/g_label.h b/sys/geom/label/g_label.h index 011cc5e..2b71dc1 100644 --- a/sys/geom/label/g_label.h +++ b/sys/geom/label/g_label.h @@ -34,7 +34,7 @@ #define G_LABEL_CLASS_NAME "LABEL" #define G_LABEL_MAGIC "GEOM::LABEL" -#define G_LABEL_VERSION 0 +#define G_LABEL_VERSION 1 #define G_LABEL_DIR "label" #ifdef _KERNEL diff --git a/sys/geom/stripe/g_stripe.c b/sys/geom/stripe/g_stripe.c index 1d87a49..cac06f8 100644 --- a/sys/geom/stripe/g_stripe.c +++ b/sys/geom/stripe/g_stripe.c @@ -859,7 +859,8 @@ g_stripe_config(struct gctl_req *req, struct g_class *mp, const char *verb) if (strcmp(verb, "create") == 0) { g_stripe_ctl_create(req, mp); return; - } else if (strcmp(verb, "destroy") == 0) { + } else if (strcmp(verb, "destroy") == 0 || + strcmp(verb, "stop") == 0) { g_stripe_ctl_destroy(req, mp); return; } diff --git a/sys/geom/stripe/g_stripe.h b/sys/geom/stripe/g_stripe.h index 07db6de..2a9ff2d 100644 --- a/sys/geom/stripe/g_stripe.h +++ b/sys/geom/stripe/g_stripe.h @@ -34,7 +34,7 @@ #define G_STRIPE_CLASS_NAME "STRIPE" #define G_STRIPE_MAGIC "GEOM::STRIPE" -#define G_STRIPE_VERSION 0 +#define G_STRIPE_VERSION 1 #ifdef _KERNEL #define G_STRIPE_TYPE_MANUAL 0 |