summaryrefslogtreecommitdiffstats
path: root/sbin
diff options
context:
space:
mode:
authorpjd <pjd@FreeBSD.org>2009-09-06 06:52:06 +0000
committerpjd <pjd@FreeBSD.org>2009-09-06 06:52:06 +0000
commite816f7728692ffef935f5e4d4d39094d08950f18 (patch)
tree8f069836b12490e9096ac0f499804e579cc39e85 /sbin
parent4a0af0108af55541f2b370516dbd30eb95118b49 (diff)
downloadFreeBSD-src-e816f7728692ffef935f5e4d4d39094d08950f18.zip
FreeBSD-src-e816f7728692ffef935f5e4d4d39094d08950f18.tar.gz
Add support for changing providers priority.
Submitted by: Mel Flynn
Diffstat (limited to 'sbin')
-rw-r--r--sbin/geom/class/mirror/geom_mirror.c9
-rw-r--r--sbin/geom/class/mirror/gmirror.819
2 files changed, 19 insertions, 9 deletions
diff --git a/sbin/geom/class/mirror/geom_mirror.c b/sbin/geom/class/mirror/geom_mirror.c
index 38912a3..6ac4fb9 100644
--- a/sbin/geom/class/mirror/geom_mirror.c
+++ b/sbin/geom/class/mirror/geom_mirror.c
@@ -1,5 +1,5 @@
/*-
- * Copyright (c) 2004-2005 Pawel Jakub Dawidek <pjd@FreeBSD.org>
+ * Copyright (c) 2004-2009 Pawel Jakub Dawidek <pjd@FreeBSD.org>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -41,13 +41,12 @@ __FBSDID("$FreeBSD$");
#include <core/geom.h>
#include <misc/subr.h>
-
uint32_t lib_version = G_LIB_VERSION;
uint32_t version = G_MIRROR_VERSION;
static char label_balance[] = "split", configure_balance[] = "none";
static intmax_t label_slice = 4096, configure_slice = -1;
-static intmax_t insert_priority = 0;
+static intmax_t insert_priority = 0, configure_priority = -1;
static void mirror_main(struct gctl_req *req, unsigned flags);
static void mirror_activate(struct gctl_req *req);
@@ -71,10 +70,12 @@ 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 },
G_OPT_SENTINEL
},
- NULL, "[-adfFhnv] [-b balance] [-s slice] name"
+ NULL, "[-adfFhnv] [-b balance] [-s slice] name\n"
+ "[-v] -p priority name prov"
},
{ "deactivate", G_FLAG_VERBOSE, NULL, G_NULL_OPTS, NULL,
"[-v] name prov ..."
diff --git a/sbin/geom/class/mirror/gmirror.8 b/sbin/geom/class/mirror/gmirror.8
index 185b3d3..78baf0b 100644
--- a/sbin/geom/class/mirror/gmirror.8
+++ b/sbin/geom/class/mirror/gmirror.8
@@ -1,4 +1,4 @@
-.\" Copyright (c) 2004-2005 Pawel Jakub Dawidek <pjd@FreeBSD.org>
+.\" Copyright (c) 2004-2009 Pawel Jakub Dawidek <pjd@FreeBSD.org>
.\" All rights reserved.
.\"
.\" Redistribution and use in source and binary forms, with or without
@@ -24,7 +24,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd November 1, 2006
+.Dd August 1, 2009
.Dt GMIRROR 8
.Os
.Sh NAME
@@ -49,6 +49,12 @@
.Op Fl s Ar slice
.Ar name
.Nm
+.Cm configure
+.Op Fl v
+.Fl p Ar priority
+.Ar name
+.Ar prov
+.Nm
.Cm rebuild
.Op Fl v
.Ar name
@@ -115,8 +121,8 @@ indicates an action to be performed:
.It Cm label
Create a mirror.
The order of components is important, because a component's priority is based on its position
-(starting from 0).
-The component with the biggest priority is used by the
+(starting from 0 to 255).
+The component with the biggest priority (the lowest number) is used by the
.Cm prefer
balance algorithm
and is also used as a master component when resynchronization is needed,
@@ -159,7 +165,7 @@ Clear metadata on the given providers.
Configure the given device.
.Pp
Additional options include:
-.Bl -tag -width ".Fl b Ar balance"
+.Bl -tag -width ".Fl p Ar priority"
.It Fl a
Turn on autosynchronization of stale components.
.It Fl b Ar balance
@@ -175,6 +181,9 @@ Assumes device is in consistent state.
Hardcode providers' names in metadata.
.It Fl n
Turn off autosynchronization of stale components.
+.It Fl p Ar priority
+Specifies priority for the given component
+.Ar prov .
.It Fl s Ar slice
Specifies slice size for
.Cm split
OpenPOWER on IntegriCloud