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