* Tuning suggestions on these parameters should go to
* dm-devel@redhat.com
*
- * You are welcome to claim maintainership over a controler
+ * You are welcome to claim maintainership over a controller
* family. Please mail the currently enlisted maintainer and
* the upstream package maintainer.
*/
static struct hwentry default_hw[] = {
/*
- * Apple controler family
+ * Apple controller family
*
* Maintainer : Shyam Sundar
* Mail : g.shyamsundar@yahoo.co.in
.checker_name = DEFAULT_CHECKER,
},
/*
- * StorageWorks controler family
+ * StorageWorks controller family
*
* Maintainer : Christophe Varoqui
* Mail : christophe.varoqui@free.fr
.checker_name = READSECTOR0,
},
/*
- * DDN controler family
+ * DDN controller family
*
* Maintainer : Christophe Varoqui
* Mail : christophe.varoqui@free.fr
.checker_name = READSECTOR0,
},
/*
- * EMC / Clariion controler family
+ * EMC / Clariion controller family
*
* Maintainer : Edward Goggin, EMC
* Mail : egoggin@emc.com
.checker_name = EMC_CLARIION,
},
/*
- * Fujitsu controler family
+ * Fujitsu controller family
*
* Maintainer : Christophe Varoqui
* Mail : christophe.varoqui@free.fr
.checker_name = READSECTOR0,
},
/*
- * Hitachi controler family
+ * Hitachi controller family
*
* Maintainer : Matthias Rudolph
* Mail : matthias.rudolph@hds.com
.checker_name = READSECTOR0,
},
/*
- * IBM controler family
+ * IBM controller family
*
* Maintainer : Hannes Reinecke, SuSE
* Mail : hare@suse.de
.checker_name = DIRECTIO,
},
/*
- * NETAPP controler family
+ * NETAPP controller family
*
* Maintainer : Dave Wysochanski
* Mail : davidw@netapp.com
.checker_name = READSECTOR0,
},
/*
- * IBM NSeries (NETAPP) controler family
+ * IBM NSeries (NETAPP) controller family
*
* Maintainer : Dave Wysochanski
* Mail : davidw@netapp.com
.checker_name = READSECTOR0,
},
/*
- * Pillar Data controler family
+ * Pillar Data controller family
*
* Maintainer : Christophe Varoqui
* Mail : christophe.varoqui@free.fr
#define POLICY_NAME_SIZE 32
-/* Storage controlers capabilities */
+/* Storage controllers capabilities */
enum iopolicies {
IOPOLICY_UNDEF,
FAILOVER,
}
if (mp->hwe && mp->hwe->rr_weight) {
mp->rr_weight = mp->hwe->rr_weight;
- condlog(3, "%s: rr_weight = %i (controler setting)",
+ condlog(3, "%s: rr_weight = %i (controller setting)",
mp->alias, mp->rr_weight);
return 0;
}
}
if (mp->hwe && mp->hwe->pgfailback != FAILBACK_UNDEF) {
mp->pgfailback = mp->hwe->pgfailback;
- condlog(3, "%s: pgfailback = %i (controler setting)",
+ condlog(3, "%s: pgfailback = %i (controller setting)",
mp->alias, mp->pgfailback);
return 0;
}
mp->pgpolicyfn = pgpolicies[mp->pgpolicy];
get_pgpolicy_name(pgpolicy_name, POLICY_NAME_SIZE,
mp->pgpolicy);
- condlog(3, "%s: pgpolicy = %s (controler setting)",
+ condlog(3, "%s: pgpolicy = %s (controller setting)",
mp->alias, pgpolicy_name);
return 0;
}
}
if (mp->hwe && mp->hwe->selector) {
mp->selector = mp->hwe->selector;
- condlog(3, "%s: selector = %s (controler setting)",
+ condlog(3, "%s: selector = %s (controller setting)",
mp->alias, mp->selector);
return 0;
}
{
if (mp->hwe && mp->hwe->features) {
mp->features = mp->hwe->features;
- condlog(3, "%s: features = %s (controler setting)",
+ condlog(3, "%s: features = %s (controller setting)",
mp->alias, mp->features);
return 0;
}
{
if (mp->hwe && mp->hwe->hwhandler) {
mp->hwhandler = mp->hwe->hwhandler;
- condlog(3, "%s: hwhandler = %s (controler setting)",
+ condlog(3, "%s: hwhandler = %s (controller setting)",
mp->alias, mp->hwhandler);
return 0;
}
if (pp->hwe && pp->hwe->checker) {
checker_get(c, pp->hwe->checker);
- condlog(3, "%s: path checker = %s (controler setting)",
+ condlog(3, "%s: path checker = %s (controller setting)",
pp->dev, checker_name(c));
return 0;
}
{
if (pp->hwe && pp->hwe->getuid) {
pp->getuid = pp->hwe->getuid;
- condlog(3, "%s: getuid = %s (controler setting)",
+ condlog(3, "%s: getuid = %s (controller setting)",
pp->dev, pp->getuid);
return 0;
}
{
if (pp->hwe && pp->hwe->getprio) {
pp->getprio = pp->hwe->getprio;
- condlog(3, "%s: getprio = %s (controler setting)",
+ condlog(3, "%s: getprio = %s (controller setting)",
pp->dev, pp->getprio);
return 0;
}
}
if (mp->hwe && mp->hwe->no_path_retry != NO_PATH_RETRY_UNDEF) {
mp->no_path_retry = mp->hwe->no_path_retry;
- condlog(3, "%s: no_path_retry = %i (controler setting)",
+ condlog(3, "%s: no_path_retry = %i (controller setting)",
mp->alias, mp->no_path_retry);
return 0;
}
}
if (mp->hwe && mp->hwe->minio) {
mp->minio = mp->hwe->minio;
- condlog(3, "%s: minio = %i (controler setting)",
+ condlog(3, "%s: minio = %i (controller setting)",
mp->alias, mp->minio);
return 0;
}
##
## name : devices
## scope : multipath & multipathd
-## desc : list of per storage controler settings
+## desc : list of per storage controller settings
## overrides default settings (device_maps block)
## overriden by per multipath settings (multipaths block)
##
# #
# # name : device
# # scope : multipath & multipathd
-# # desc : settings for this specific storage controler
+# # desc : settings for this specific storage controller
# #
# device {
# #
# # name : path_grouping_policy
# # scope : multipath
# # desc : path grouping policy to apply to multipath hosted
-# # by this storage controler
+# # by this storage controller
# # values : failover = 1 path per priority group
# # multibus = all valid paths in 1 priority
# # group
1 priority group per serial
.TP
.B group_by_prio
-1 priority group per priority value. Priorities are determined by callout programs specified as a global, per-controler or per-multipath option in the configuration file
+1 priority group per priority value. Priorities are determined by callout programs specified as a global, per-controller or per-multipath option in the configuration file
.TP
.B group_by_node_name
1 priority group per target node name. Target node names are fetched in /sys/class/fc_transport/target*/node_name.
* This code is GPLv2, see license file
*
* This path prioritizer aims to balance logical units over all
- * controlers available. The logic is :
+ * controllers available. The logic is :
*
* - list all paths in all primary path groups
- * - for each path, get the controler's serial
- * - compute the number of active paths attached to each controler
- * - compute the max number of paths attached to the same controler
+ * - for each path, get the controller's serial
+ * - compute the number of active paths attached to each controller
+ * - compute the max number of paths attached to the same controller
* - if sums are already balanced or if the path passed as parameter is
- * attached to controler with less active paths, then return
- * (max_path_attached_to_one_controler - number_of_paths_on_this_controler)
+ * attached to controller with less active paths, then return
+ * (max_path_attached_to_one_controller - number_of_paths_on_this_controller)
* - else, or if anything goes wrong, return 1 as a default prio
*
*/
char serial[SERIAL_SIZE];
};
-struct controler {
+struct controller {
char serial[SERIAL_SIZE];
int path_count;
};
}
static void *
-find_controler (vector controlers, char * serial)
+find_controller (vector controllers, char * serial)
{
int i;
- struct controler * cp;
+ struct controller * cp;
- if (!controlers)
+ if (!controllers)
return NULL;
- vector_foreach_slot (controlers, cp, i)
+ vector_foreach_slot (controllers, cp, i)
if (!strncmp(cp->serial, serial, SERIAL_SIZE))
return cp;
return NULL;
}
static void
-get_controlers (vector controlers, vector pathvec)
+get_controllers (vector controllers, vector pathvec)
{
int i;
struct path * pp;
- struct controler * cp;
+ struct controller * cp;
- if (!controlers)
+ if (!controllers)
return;
vector_foreach_slot (pathvec, pp, i) {
if (!pp || !strlen(pp->serial))
continue;
- cp = find_controler(controlers, pp->serial);
+ cp = find_controller(controllers, pp->serial);
if (!cp) {
- cp = zalloc(sizeof(struct controler));
- vector_alloc_slot(controlers);
- vector_set_slot(controlers, cp);
+ cp = zalloc(sizeof(struct controller));
+ vector_alloc_slot(controllers);
+ vector_set_slot(controllers, cp);
strncpy(cp->serial, pp->serial, SERIAL_SIZE);
}
cp->path_count++;
}
static int
-get_max_path_count (vector controlers)
+get_max_path_count (vector controllers)
{
int i;
int max = 0;
- struct controler * cp;
+ struct controller * cp;
- if (!controlers)
+ if (!controllers)
return 0;
- vector_foreach_slot (controlers, cp, i) {
- debug("controler %s : %i paths", cp->serial, cp->path_count);
+ vector_foreach_slot (controllers, cp, i) {
+ debug("controller %s : %i paths", cp->serial, cp->path_count);
if(cp->path_count > max)
max = cp->path_count;
}
main (int argc, char **argv)
{
vector pathvec = NULL;
- vector controlers = NULL;
+ vector controllers = NULL;
struct path * ref_path = NULL;
- struct controler * cp = NULL;
+ struct controller * cp = NULL;
int max_path_count = 0;
ref_path = zalloc(sizeof(struct path));
exit_tool(0);
pathvec = vector_alloc();
- controlers = vector_alloc();
+ controllers = vector_alloc();
get_paths(pathvec);
- get_controlers(controlers, pathvec);
- max_path_count = get_max_path_count(controlers);
- cp = find_controler(controlers, ref_path->serial);
+ get_controllers(controllers, pathvec);
+ max_path_count = get_max_path_count(controllers);
+ cp = find_controller(controllers, ref_path->serial);
if (!cp) {
debug("no other active path on serial %s\n",