- Add 'stop' command, which works just like 'destroy' command, but sounds
less dangerous. - Update manual pages and extend examples. - Bump versions.
This commit is contained in:
parent
de0b7a6307
commit
a2e31b8b53
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=131649
@ -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
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user