<div dir="ltr">Wouldn't it be nicer to keep manual as the default and remove all FAILBACK_UNDEF from the hwtable ?<div><br></div><div>In the current code base, FAILBACK_UNDEF causes need_switch_pathgroup() to refresh each path prio and mpp->bestpg, and return to the caller it should switch pathgroup. But the caller (check_path()) won't switch anyway.</div><div><br></div><div>As I read it FAILBACK_UNDEF never fails back automatically, like FAILBACK_MANUAL, but causes unecessary work.</div><div><br></div><div>Hannes, Ben, do you confirm I read correctly ? Would you ack to removal of FAILBACK_UNDEF from the hwtable ?</div><div><br></div><div>Regards,</div><div>Christophe Varoqui</div><div>OpenSVC</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Aug 18, 2016 at 7:58 PM, Xose Vazquez Perez <span dir="ltr"><<a href="mailto:xose.vazquez@gmail.com" target="_blank">xose.vazquez@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Default value is: manual<br>
30 .pgfailback = FAILBACK_UNDEF,<br>
45 .pgfailback = -FAILBACK_IMMEDIATE,<br>
manual is not used by any device.<br>
<br>
I hope it's reasonable. If someone disagrees, drop it.<br>
<br>
Cc: Hannes Reinecke <<a href="mailto:hare@suse.de">hare@suse.de</a>><br>
Cc: Benjamin Marzinski <<a href="mailto:bmarzins@redhat.com">bmarzins@redhat.com</a>><br>
Cc: Christophe Varoqui <<a href="mailto:christophe.varoqui@opensvc.com">christophe.varoqui@opensvc.<wbr>com</a>><br>
Cc: device-mapper development <<a href="mailto:dm-devel@redhat.com">dm-devel@redhat.com</a>><br>
Signed-off-by: Xose Vazquez Perez <<a href="mailto:xose.vazquez@gmail.com">xose.vazquez@gmail.com</a>><br>
---<br>
libmultipath/defaults.h | 2 +-<br>
libmultipath/hwtable.c | 32 +-----------------------------<wbr>--<br>
multipath/multipath.conf.5 | 8 +++++++-<br>
3 files changed, 9 insertions(+), 33 deletions(-)<br>
<br>
diff --git a/libmultipath/defaults.h b/libmultipath/defaults.h<br>
index 9bf27d6..a7c74fe 100644<br>
--- a/libmultipath/defaults.h<br>
+++ b/libmultipath/defaults.h<br>
@@ -12,7 +12,7 @@<br>
#define DEFAULT_MINIO 1000<br>
#define DEFAULT_MINIO_RQ 1<br>
#define DEFAULT_PGPOLICY FAILOVER<br>
-#define DEFAULT_FAILBACK -FAILBACK_MANUAL<br>
+#define DEFAULT_FAILBACK FAILBACK_UNDEF<br>
#define DEFAULT_RR_WEIGHT RR_WEIGHT_NONE<br>
#define DEFAULT_NO_PATH_RETRY NO_PATH_RETRY_UNDEF<br>
#define DEFAULT_VERBOSITY 2<br>
diff --git a/libmultipath/hwtable.c b/libmultipath/hwtable.c<br>
index 72b5e1d..c4037d5 100644<br>
--- a/libmultipath/hwtable.c<br>
+++ b/libmultipath/hwtable.c<br>
@@ -37,7 +37,6 @@ static struct hwentry default_hw[] = {<br>
.vendor = "APPLE",<br>
.product = "Xserve RAID",<br>
.pgpolicy = MULTIBUS,<br>
- .pgfailback = FAILBACK_UNDEF,<br>
},<br>
/*<br>
* HPE<br>
@@ -58,7 +57,6 @@ static struct hwentry default_hw[] = {<br>
.no_path_retry = NO_PATH_RETRY_QUEUE,<br>
.hwhandler = "1 hp_sw",<br>
.pgpolicy = GROUP_BY_PRIO,<br>
- .pgfailback = FAILBACK_UNDEF,<br>
.checker_name = HP_SW,<br>
.prio_name = PRIO_HP_SW,<br>
},<br>
@@ -67,7 +65,6 @@ static struct hwentry default_hw[] = {<br>
.vendor = "HP",<br>
.product = "A6189A",<br>
.pgpolicy = MULTIBUS,<br>
- .pgfailback = FAILBACK_UNDEF,<br>
.no_path_retry = 12,<br>
},<br>
{<br>
@@ -76,7 +73,6 @@ static struct hwentry default_hw[] = {<br>
.product = "(MSA|HSV)1[01]0",<br>
.hwhandler = "1 hp_sw",<br>
.pgpolicy = GROUP_BY_PRIO,<br>
- .pgfailback = FAILBACK_UNDEF,<br>
.no_path_retry = 12,<br>
.checker_name = HP_SW,<br>
.prio_name = PRIO_HP_SW,<br>
@@ -104,7 +100,6 @@ static struct hwentry default_hw[] = {<br>
.vendor = "HP",<br>
.product = "(MSA2[02]12fc|MSA2012i)",<br>
.pgpolicy = MULTIBUS,<br>
- .pgfailback = FAILBACK_UNDEF,<br>
.no_path_retry = 18,<br>
},<br>
{<br>
@@ -140,7 +135,6 @@ static struct hwentry default_hw[] = {<br>
.vendor = "HP",<br>
.product = "LOGICAL VOLUME",<br>
.pgpolicy = MULTIBUS,<br>
- .pgfailback = FAILBACK_UNDEF,<br>
.no_path_retry = 12,<br>
},<br>
{<br>
@@ -159,7 +153,6 @@ static struct hwentry default_hw[] = {<br>
.vendor = "DDN",<br>
.product = "SAN DataDirector",<br>
.pgpolicy = MULTIBUS,<br>
- .pgfailback = FAILBACK_UNDEF,<br>
},<br>
/*<br>
* EMC<br>
@@ -169,7 +162,6 @@ static struct hwentry default_hw[] = {<br>
.vendor = "EMC",<br>
.product = "SYMMETRIX",<br>
.pgpolicy = MULTIBUS,<br>
- .pgfailback = FAILBACK_UNDEF,<br>
.no_path_retry = 6,<br>
},<br>
{<br>
@@ -190,14 +182,12 @@ static struct hwentry default_hw[] = {<br>
.product = "Invista",<br>
.bl_product = "LUNZ",<br>
.pgpolicy = MULTIBUS,<br>
- .pgfailback = FAILBACK_UNDEF,<br>
.no_path_retry = 5,<br>
},<br>
{<br>
.vendor = "XtremIO",<br>
.product = "XtremApp",<br>
.pgpolicy = MULTIBUS,<br>
- .pgfailback = FAILBACK_UNDEF,<br>
},<br>
/*<br>
* DELL<br>
@@ -212,7 +202,6 @@ static struct hwentry default_hw[] = {<br>
.vendor = "COMPELNT",<br>
.product = "Compellent Vol",<br>
.pgpolicy = MULTIBUS,<br>
- .pgfailback = FAILBACK_UNDEF,<br>
.no_path_retry = NO_PATH_RETRY_QUEUE,<br>
},<br>
{<br>
@@ -258,7 +247,6 @@ static struct hwentry default_hw[] = {<br>
.vendor = "FSC",<br>
.product = "CentricStor",<br>
.pgpolicy = GROUP_BY_SERIAL,<br>
- .pgfailback = FAILBACK_UNDEF,<br>
},<br>
{<br>
.vendor = "FUJITSU",<br>
@@ -273,7 +261,6 @@ static struct hwentry default_hw[] = {<br>
.vendor = "(EUROLOGC|EuroLogc)",<br>
.product = "FC2502",<br>
.pgpolicy = MULTIBUS,<br>
- .pgfailback = FAILBACK_UNDEF,<br>
},<br>
/*<br>
* Hitachi<br>
@@ -286,7 +273,6 @@ static struct hwentry default_hw[] = {<br>
.vendor = "(HITACHI|HP)",<br>
.product = "^OPEN-",<br>
.pgpolicy = MULTIBUS,<br>
- .pgfailback = FAILBACK_UNDEF,<br>
},<br>
{<br>
/* AMS 2000 and HUS 100 families */<br>
@@ -307,7 +293,6 @@ static struct hwentry default_hw[] = {<br>
.vendor = "IBM",<br>
.product = "ProFibre 4000R",<br>
.pgpolicy = MULTIBUS,<br>
- .pgfailback = FAILBACK_UNDEF,<br>
},<br>
{<br>
/* DS4300 / FAStT600 */<br>
@@ -444,7 +429,6 @@ static struct hwentry default_hw[] = {<br>
.vendor = "IBM",<br>
.product = "^3542",<br>
.pgpolicy = MULTIBUS,<br>
- .pgfailback = FAILBACK_UNDEF,<br>
},<br>
{<br>
/* Enterprise Storage Server / Shark family */<br>
@@ -452,7 +436,6 @@ static struct hwentry default_hw[] = {<br>
.product = "^2105",<br>
.no_path_retry = NO_PATH_RETRY_QUEUE,<br>
.pgpolicy = MULTIBUS,<br>
- .pgfailback = FAILBACK_UNDEF,<br>
},<br>
{<br>
/* DS6000 */<br>
@@ -469,7 +452,6 @@ static struct hwentry default_hw[] = {<br>
.product = "^2107900",<br>
.no_path_retry = NO_PATH_RETRY_QUEUE,<br>
.pgpolicy = MULTIBUS,<br>
- .pgfailback = FAILBACK_UNDEF,<br>
},<br>
{<br>
/* Storwize family / SAN Volume Controller / Flex System V7000 */<br>
@@ -487,7 +469,6 @@ static struct hwentry default_hw[] = {<br>
.uid_attribute = "ID_UID",<br>
.no_path_retry = NO_PATH_RETRY_QUEUE,<br>
.pgpolicy = MULTIBUS,<br>
- .pgfailback = FAILBACK_UNDEF,<br>
},<br>
{<br>
.vendor = "IBM",<br>
@@ -496,7 +477,6 @@ static struct hwentry default_hw[] = {<br>
.uid_attribute = "ID_UID",<br>
.no_path_retry = NO_PATH_RETRY_QUEUE,<br>
.pgpolicy = MULTIBUS,<br>
- .pgfailback = FAILBACK_UNDEF,<br>
},<br>
{<br>
/* Power RAID */<br>
@@ -523,7 +503,6 @@ static struct hwentry default_hw[] = {<br>
.product = "2810XIV",<br>
.no_path_retry = NO_PATH_RETRY_QUEUE,<br>
.pgpolicy = MULTIBUS,<br>
- .pgfailback = FAILBACK_UNDEF,<br>
},<br>
/*<br>
* IBM Power Virtual SCSI Devices<br>
@@ -535,14 +514,12 @@ static struct hwentry default_hw[] = {<br>
.vendor = "AIX",<br>
.product = "VDASD",<br>
.pgpolicy = MULTIBUS,<br>
- .pgfailback = FAILBACK_UNDEF,<br>
.no_path_retry = (300 / DEFAULT_CHECKINT),<br>
},<br>
{<br>
/* 3303 NVDISK */<br>
.vendor = "IBM",<br>
.product = "3303[ ]+NVDISK",<br>
- .pgfailback = FAILBACK_UNDEF,<br>
.no_path_retry = (300 / DEFAULT_CHECKINT),<br>
},<br>
{<br>
@@ -602,7 +579,6 @@ static struct hwentry default_hw[] = {<br>
.vendor = "NEXENTA",<br>
.product = "COMSTAR",<br>
.pgpolicy = GROUP_BY_SERIAL,<br>
- .pgfailback = FAILBACK_UNDEF,<br>
.no_path_retry = 30,<br>
},<br>
/*<br>
@@ -612,7 +588,6 @@ static struct hwentry default_hw[] = {<br>
.vendor = "SGI",<br>
.product = "TP9100",<br>
.pgpolicy = MULTIBUS,<br>
- .pgfailback = FAILBACK_UNDEF,<br>
},<br>
{<br>
.vendor = "SGI",<br>
@@ -703,7 +678,6 @@ static struct hwentry default_hw[] = {<br>
.vendor = "SUN",<br>
.product = "(StorEdge 3510|T4)",<br>
.pgpolicy = MULTIBUS,<br>
- .pgfailback = FAILBACK_UNDEF,<br>
},<br>
{<br>
.vendor = "SUN",<br>
@@ -766,7 +740,6 @@ static struct hwentry default_hw[] = {<br>
.product = "RAIGE VOLUME",<br>
.no_path_retry = NO_PATH_RETRY_QUEUE,<br>
.pgpolicy = MULTIBUS,<br>
- .pgfailback = FAILBACK_UNDEF,<br>
},<br>
/*<br>
* Intel<br>
@@ -818,7 +791,6 @@ static struct hwentry default_hw[] = {<br>
.vendor = "PURE",<br>
.product = "FlashArray",<br>
.pgpolicy = MULTIBUS,<br>
- .pgfailback = FAILBACK_UNDEF,<br>
.fast_io_fail = 10,<br>
.dev_loss = 60,<br>
},<br>
@@ -830,7 +802,6 @@ static struct hwentry default_hw[] = {<br>
.vendor = "(HUAWEI|HUASY)",<br>
.product = "XSG1",<br>
.pgpolicy = MULTIBUS,<br>
- .pgfailback = FAILBACK_UNDEF,<br>
},<br>
/*<br>
* Red Hat<br>
@@ -852,7 +823,6 @@ static struct hwentry default_hw[] = {<br>
.vendor = "KOVE",<br>
.product = "XPD",<br>
.pgpolicy = MULTIBUS,<br>
- .pgfailback = FAILBACK_UNDEF,<br>
},<br>
#if 0<br>
/*<br>
@@ -882,7 +852,7 @@ static struct hwentry default_hw[] = {<br>
.hwhandler = "0",<br>
.prio_name = "const",<br>
.prio_args = "",<br>
- .pgfailback = -FAILBACK_MANUAL,<br>
+ .pgfailback = FAILBACK_UNDEF,<br>
.rr_weight = RR_WEIGHT_NONE,<br>
.no_path_retry = NO_PATH_RETRY_UNDEF,<br>
.minio = 1000,<br>
diff --git a/multipath/multipath.conf.5 b/multipath/multipath.conf.5<br>
index 40df315..466ad94 100644<br>
--- a/multipath/multipath.conf.5<br>
+++ b/multipath/multipath.conf.5<br>
@@ -422,6 +422,8 @@ Default value is: \fBmpath\fR<br>
.TP<br>
.B failback<br>
Tell multipathd how to manage path group failback.<br>
+To select \fIimmediate\fR or a \fIvalue\fR, it's mandatory that the device<br>
+has support for a working prioritizer and a 'preferred path'.<br>
.RS<br>
.TP 12<br>
.I immediate<br>
@@ -440,7 +442,11 @@ another node requested the failover.<br>
.I values > 0<br>
Deferred failback (time to defer in seconds).<br>
.TP<br>
-Default value is: \fBmanual\fR<br>
+.\" XXX<br>
+.I <unset><br>
+??? Undefined.<br>
+.TP<br>
+Default value is: \fB<unset>\fR<br>
.RE<br>
.<br>
.<br>
<span class="HOEnZb"><font color="#888888">--<br>
2.7.4<br>
<br>
</font></span></blockquote></div><br></div>