Revert "multipath-tools: change default failback from manual to immediate"
authorChristophe Varoqui <christophe.varoqui@opensvc.com>
Sun, 31 Jul 2016 08:40:55 +0000 (10:40 +0200)
committerChristophe Varoqui <christophe.varoqui@opensvc.com>
Sun, 31 Jul 2016 08:40:55 +0000 (10:40 +0200)
This reverts commit 5c418c1f38e6e766928ac634f6dcee44518c53bf.

Hannes reported:

'immediate' fallback only makes sense if the device has a working
prioritizer _and_ supports a 'preferred path'.
None of which can be assumed for an unknown device, so this patch
will break automatic configuration.

libmultipath/defaults.h
libmultipath/hwtable.c
multipath/multipath.conf.5

index 9de5914..0d51ba0 100644 (file)
@@ -8,7 +8,7 @@
 #define DEFAULT_MINIO          1000
 #define DEFAULT_MINIO_RQ       1
 #define DEFAULT_PGPOLICY       GROUP_BY_PRIO
-#define DEFAULT_FAILBACK       -FAILBACK_IMMEDIATE
+#define DEFAULT_FAILBACK       -FAILBACK_MANUAL
 #define DEFAULT_RR_WEIGHT      RR_WEIGHT_NONE
 #define DEFAULT_NO_PATH_RETRY  NO_PATH_RETRY_UNDEF
 #define DEFAULT_VERBOSITY      2
index a1fc3e8..b3629e2 100644 (file)
@@ -31,6 +31,7 @@ static struct hwentry default_hw[] = {
                .vendor        = "COMPELNT",
                .product       = "Compellent Vol",
                .pgpolicy      = MULTIBUS,
+               .pgfailback    = -FAILBACK_IMMEDIATE,
                .no_path_retry = NO_PATH_RETRY_QUEUE,
        },
        /*
@@ -86,6 +87,7 @@ static struct hwentry default_hw[] = {
                /* MSA 1000/1500 with new firmware */
                .vendor        = "(COMPAQ|HP)",
                .product       = "MSA VOLUME",
+               .pgfailback    = -FAILBACK_IMMEDIATE,
                .no_path_retry = 12,
                .minio         = 100,
                .prio_name     = PRIO_ALUA,
@@ -94,6 +96,7 @@ static struct hwentry default_hw[] = {
                /* EVA 3000/5000 with new firmware, EVA 4000/6000/8000 */
                .vendor        = "(COMPAQ|HP)",
                .product       = "HSV1[01]1|HSV2[01]0|HSV3[046]0|HSV4[05]0",
+               .pgfailback    = -FAILBACK_IMMEDIATE,
                .no_path_retry = 12,
                .minio         = 100,
                .prio_name     = PRIO_ALUA,
@@ -103,6 +106,7 @@ static struct hwentry default_hw[] = {
                .vendor        = "HP",
                .product       = "MSA2[02]12fc|MSA2012i",
                .pgpolicy      = MULTIBUS,
+               .pgfailback    = -FAILBACK_IMMEDIATE,
                .no_path_retry = 18,
                .minio         = 100,
        },
@@ -110,6 +114,7 @@ static struct hwentry default_hw[] = {
                /* HP MSA2000 family with new firmware */
                .vendor        = "HP",
                .product       = "MSA2012sa|MSA23(12|24)(fc|i|sa)|MSA2000s VOLUME",
+               .pgfailback    = -FAILBACK_IMMEDIATE,
                .no_path_retry = 18,
                .minio         = 100,
                .prio_name     = PRIO_ALUA,
@@ -118,6 +123,7 @@ static struct hwentry default_hw[] = {
                /* HP MSA 1040/2040 family */
                .vendor        = "HP",
                .product       = "MSA (1|2)040 SA(N|S)",
+               .pgfailback    = -FAILBACK_IMMEDIATE,
                .no_path_retry = 18,
                .minio         = 100,
                .prio_name     = PRIO_ALUA,
@@ -127,6 +133,7 @@ static struct hwentry default_hw[] = {
                .vendor        = "HP",
                .product       = "HSVX700",
                .hwhandler     = "1 alua",
+               .pgfailback    = -FAILBACK_IMMEDIATE,
                .no_path_retry = 12,
                .minio         = 100,
                .prio_name     = PRIO_ALUA,
@@ -143,6 +150,7 @@ static struct hwentry default_hw[] = {
                /* HP P2000 family */
                .vendor        = "HP",
                .product       = "P2000 G3 FC|P2000G3 FC/iSCSI|P2000 G3 SAS|P2000 G3 iSCSI",
+               .pgfailback    = -FAILBACK_IMMEDIATE,
                .no_path_retry = 18,
                .minio         = 100,
                .prio_name     = PRIO_ALUA,
@@ -176,6 +184,7 @@ static struct hwentry default_hw[] = {
                .bl_product    = "LUNZ",
                .features      = "1 queue_if_no_path",
                .hwhandler     = "1 emc",
+               .pgfailback    = -FAILBACK_IMMEDIATE,
                .no_path_retry = (300 / DEFAULT_CHECKINT),
                .checker_name  = EMC_CLARIION,
                .prio_name     = PRIO_EMC,
@@ -208,6 +217,7 @@ static struct hwentry default_hw[] = {
                .vendor        = "FUJITSU",
                .product       = "ETERNUS_DX(H|L|M|400|8000)",
                .features      = "1 queue_if_no_path",
+               .pgfailback    = -FAILBACK_IMMEDIATE,
                .no_path_retry = 10,
                .prio_name     = PRIO_ALUA,
        },
@@ -227,6 +237,7 @@ static struct hwentry default_hw[] = {
                .vendor        = "HITACHI",
                .product       = "DF.*",
                .features      = "1 queue_if_no_path",
+               .pgfailback    = -FAILBACK_IMMEDIATE,
                .prio_name     = PRIO_HDS,
        },
        /*
@@ -248,6 +259,7 @@ static struct hwentry default_hw[] = {
                .bl_product    = "Universal Xport",
                .features      = "1 queue_if_no_path",
                .hwhandler     = "1 rdac",
+               .pgfailback    = -FAILBACK_IMMEDIATE,
                .no_path_retry = 300,
                .checker_name  = RDAC,
                .prio_name     = PRIO_RDAC,
@@ -259,6 +271,7 @@ static struct hwentry default_hw[] = {
                .bl_product    = "Universal Xport",
                .features      = "1 queue_if_no_path",
                .hwhandler     = "1 rdac",
+               .pgfailback    = -FAILBACK_IMMEDIATE,
                .no_path_retry = 300,
                .checker_name  = RDAC,
                .prio_name     = PRIO_RDAC,
@@ -270,6 +283,7 @@ static struct hwentry default_hw[] = {
                .bl_product    = "Universal Xport",
                .features      = "1 queue_if_no_path",
                .hwhandler     = "1 rdac",
+               .pgfailback    = -FAILBACK_IMMEDIATE,
                .no_path_retry = 300,
                .checker_name  = RDAC,
                .prio_name     = PRIO_RDAC,
@@ -280,6 +294,7 @@ static struct hwentry default_hw[] = {
                .product       = "^1742",
                .bl_product    = "Universal Xport",
                .hwhandler     = "1 rdac",
+               .pgfailback    = -FAILBACK_IMMEDIATE,
                .no_path_retry = NO_PATH_RETRY_QUEUE,
                .checker_name  = RDAC,
                .prio_name     = PRIO_RDAC,
@@ -290,6 +305,7 @@ static struct hwentry default_hw[] = {
                .bl_product    = "Universal Xport",
                .features      = "2 pg_init_retries 50",
                .hwhandler     = "1 rdac",
+               .pgfailback    = -FAILBACK_IMMEDIATE,
                .no_path_retry = 15,
                .checker_name  = RDAC,
                .prio_name     = PRIO_RDAC,
@@ -300,6 +316,7 @@ static struct hwentry default_hw[] = {
                .product       = "^1814",
                .bl_product    = "Universal Xport",
                .hwhandler     = "1 rdac",
+               .pgfailback    = -FAILBACK_IMMEDIATE,
                .no_path_retry = NO_PATH_RETRY_QUEUE,
                .checker_name  = RDAC,
                .prio_name     = PRIO_RDAC,
@@ -310,6 +327,7 @@ static struct hwentry default_hw[] = {
                .product       = "^1815",
                .bl_product    = "Universal Xport",
                .hwhandler     = "1 rdac",
+               .pgfailback    = -FAILBACK_IMMEDIATE,
                .no_path_retry = NO_PATH_RETRY_QUEUE,
                .checker_name  = RDAC,
                .prio_name     = PRIO_RDAC,
@@ -320,6 +338,7 @@ static struct hwentry default_hw[] = {
                .product       = "^1818",
                .bl_product    = "Universal Xport",
                .hwhandler     = "1 rdac",
+               .pgfailback    = -FAILBACK_IMMEDIATE,
                .no_path_retry = NO_PATH_RETRY_QUEUE,
                .checker_name  = RDAC,
                .prio_name     = PRIO_RDAC,
@@ -330,6 +349,7 @@ static struct hwentry default_hw[] = {
                .product       = "^3526",
                .bl_product    = "Universal Xport",
                .hwhandler     = "1 rdac",
+               .pgfailback    = -FAILBACK_IMMEDIATE,
                .no_path_retry = NO_PATH_RETRY_QUEUE,
                .checker_name  = RDAC,
                .prio_name     = PRIO_RDAC,
@@ -362,6 +382,7 @@ static struct hwentry default_hw[] = {
                .vendor        = "IBM",
                .product       = "^1750500",
                .features      = "1 queue_if_no_path",
+               .pgfailback    = -FAILBACK_IMMEDIATE,
                .prio_name     = PRIO_ALUA,
        },
        {
@@ -377,6 +398,7 @@ static struct hwentry default_hw[] = {
                .vendor        = "IBM",
                .product       = "^2145",
                .features      = "1 queue_if_no_path",
+               .pgfailback    = -FAILBACK_IMMEDIATE,
                .prio_name     = PRIO_ALUA,
        },
        {
@@ -405,12 +427,14 @@ static struct hwentry default_hw[] = {
                .product       = "^IPR.*",
                .features      = "1 queue_if_no_path",
                .hwhandler     = "1 alua",
+               .pgfailback    = -FAILBACK_IMMEDIATE,
                .prio_name     = PRIO_ALUA,
        },
        {
                /* IBM RSSM */
                .vendor        = "IBM",
                .product       = "1820N00",
+               .pgfailback    = -FAILBACK_IMMEDIATE,
                .no_path_retry = NO_PATH_RETRY_QUEUE,
                .minio         = 100,
                .prio_name     = PRIO_ALUA,
@@ -435,12 +459,14 @@ static struct hwentry default_hw[] = {
                .vendor        = "AIX",
                .product       = "VDASD",
                .pgpolicy      = MULTIBUS,
+               .pgfailback    = -FAILBACK_IMMEDIATE,
                .no_path_retry = (300 / DEFAULT_CHECKINT),
        },
        {
                /* IBM 3303 NVDISK */
                .vendor        = "IBM",
                .product       = "3303      NVDISK",
+               .pgfailback    = -FAILBACK_IMMEDIATE,
                .no_path_retry = (300 / DEFAULT_CHECKINT),
                .pgpolicy      = FAILOVER,
        },
@@ -449,6 +475,7 @@ static struct hwentry default_hw[] = {
                .vendor        = "AIX",
                .product       = "NVDISK",
                .hwhandler     = "1 alua",
+               .pgfailback    = -FAILBACK_IMMEDIATE,
                .no_path_retry = (300 / DEFAULT_CHECKINT),
                .prio_name     = PRIO_ALUA,
        },
@@ -462,6 +489,7 @@ static struct hwentry default_hw[] = {
                .bl_product    = "Universal Xport",
                .features      = "2 pg_init_retries 50",
                .hwhandler     = "1 rdac",
+               .pgfailback    = -FAILBACK_IMMEDIATE,
                .no_path_retry = 15,
                .checker_name  = RDAC,
                .prio_name     = PRIO_RDAC,
@@ -473,6 +501,7 @@ static struct hwentry default_hw[] = {
                .bl_product    = "Universal Xport",
                .features      = "2 pg_init_retries 50",
                .hwhandler     = "1 rdac",
+               .pgfailback    = -FAILBACK_IMMEDIATE,
                .no_path_retry = 15,
                .checker_name  = RDAC,
                .prio_name     = PRIO_RDAC,
@@ -484,6 +513,7 @@ static struct hwentry default_hw[] = {
                .bl_product    = "Universal Xport",
                .features      = "2 pg_init_retries 50",
                .hwhandler     = "1 rdac",
+               .pgfailback    = -FAILBACK_IMMEDIATE,
                .no_path_retry = 15,
                .checker_name  = RDAC,
                .prio_name     = PRIO_RDAC,
@@ -498,6 +528,7 @@ static struct hwentry default_hw[] = {
                .vendor        = "NETAPP",
                .product       = "LUN.*",
                .features      = "3 queue_if_no_path pg_init_retries 50",
+               .pgfailback    = -FAILBACK_IMMEDIATE,
                .flush_on_last_del = FLUSH_ENABLED,
                .minio         = 128,
                .dev_loss      = MAX_DEV_LOSS_TMO,
@@ -508,6 +539,7 @@ static struct hwentry default_hw[] = {
                .vendor        = "IBM",
                .product       = "Nseries.*",
                .features      = "1 queue_if_no_path",
+               .pgfailback    = -FAILBACK_IMMEDIATE,
                .minio         = 128,
                .prio_name     = PRIO_ONTAP,
        },
@@ -522,6 +554,7 @@ static struct hwentry default_hw[] = {
                .product       = "COMSTAR",
                .features      = "1 queue_if_no_path",
                .pgpolicy      = GROUP_BY_SERIAL,
+               .pgfailback    = -FAILBACK_IMMEDIATE,
                .no_path_retry = 30,
                .minio         = 128,
        },
@@ -551,6 +584,7 @@ static struct hwentry default_hw[] = {
                .product       = "TP9[45]00",
                .bl_product    = "Universal Xport",
                .hwhandler     = "1 rdac",
+               .pgfailback    = -FAILBACK_IMMEDIATE,
                .no_path_retry = NO_PATH_RETRY_QUEUE,
                .checker_name  = RDAC,
                .prio_name     = PRIO_RDAC,
@@ -561,6 +595,7 @@ static struct hwentry default_hw[] = {
                .bl_product    = "Universal Xport",
                .features      = "2 pg_init_retries 50",
                .hwhandler     = "1 rdac",
+               .pgfailback    = -FAILBACK_IMMEDIATE,
                .no_path_retry = 15,
                .checker_name  = RDAC,
                .prio_name     = PRIO_RDAC,
@@ -573,6 +608,7 @@ static struct hwentry default_hw[] = {
                .vendor        = "NEC",
                .product       = "DISK ARRAY",
                .hwhandler     = "1 alua",
+               .pgfailback    = -FAILBACK_IMMEDIATE,
                .prio_name     = PRIO_ALUA,
        },
        /*
@@ -583,6 +619,7 @@ static struct hwentry default_hw[] = {
                .product       = "OPENstorage D280",
                .bl_product    = "Universal Xport",
                .hwhandler     = "1 rdac",
+               .pgfailback    = -FAILBACK_IMMEDIATE,
                .checker_name  = RDAC,
                .prio_name     = PRIO_RDAC,
        },
@@ -600,6 +637,7 @@ static struct hwentry default_hw[] = {
                .product       = "STK6580_6780",
                .bl_product    = "Universal Xport",
                .hwhandler     = "1 rdac",
+               .pgfailback    = -FAILBACK_IMMEDIATE,
                .checker_name  = RDAC,
                .prio_name     = PRIO_RDAC,
        },
@@ -627,6 +665,7 @@ static struct hwentry default_hw[] = {
                .product       = "CSM200_R",
                .bl_product    = "Universal Xport",
                .hwhandler     = "1 rdac",
+               .pgfailback    = -FAILBACK_IMMEDIATE,
                .no_path_retry = NO_PATH_RETRY_QUEUE,
                .checker_name  = RDAC,
                .prio_name     = PRIO_RDAC,
@@ -637,6 +676,7 @@ static struct hwentry default_hw[] = {
                .product       = "LCSM100_[IEFS]",
                .bl_product    = "Universal Xport",
                .hwhandler     = "1 rdac",
+               .pgfailback    = -FAILBACK_IMMEDIATE,
                .no_path_retry = NO_PATH_RETRY_QUEUE,
                .checker_name  = RDAC,
                .prio_name     = PRIO_RDAC,
@@ -647,6 +687,7 @@ static struct hwentry default_hw[] = {
                .product       = "SUN_6180",
                .bl_product    = "Universal Xport",
                .hwhandler     = "1 rdac",
+               .pgfailback    = -FAILBACK_IMMEDIATE,
                .no_path_retry = NO_PATH_RETRY_QUEUE,
                .checker_name  = RDAC,
                .prio_name     = PRIO_RDAC,
@@ -662,6 +703,7 @@ static struct hwentry default_hw[] = {
                .bl_product    = "Universal Xport",
                .features      = "2 pg_init_retries 50",
                .hwhandler     = "1 rdac",
+               .pgfailback    = -FAILBACK_IMMEDIATE,
                .no_path_retry = 30,
                .checker_name  = RDAC,
                .prio_name     = PRIO_RDAC,
@@ -671,6 +713,7 @@ static struct hwentry default_hw[] = {
                .product       = "FLEXLINE 380",
                .bl_product    = "Universal Xport",
                .hwhandler     = "1 rdac",
+               .pgfailback    = -FAILBACK_IMMEDIATE,
                .no_path_retry = NO_PATH_RETRY_QUEUE,
                .checker_name  = RDAC,
                .prio_name     = PRIO_RDAC,
@@ -679,6 +722,7 @@ static struct hwentry default_hw[] = {
                .vendor        = "Intel",
                .product       = "Multi-Flex",
                .hwhandler     = "1 alua",
+               .pgfailback    = -FAILBACK_IMMEDIATE,
                .no_path_retry = NO_PATH_RETRY_QUEUE,
                .prio_name     = PRIO_ALUA,
        },
@@ -686,6 +730,7 @@ static struct hwentry default_hw[] = {
                .vendor        = "(LIO-ORG|SUSE)",
                .product       = "RBD",
                .hwhandler     = "1 alua",
+               .pgfailback    = -FAILBACK_IMMEDIATE,
                .no_path_retry = 12,
                .minio         = 100,
                .prio_name     = PRIO_ALUA,
@@ -693,12 +738,14 @@ static struct hwentry default_hw[] = {
        {
                .vendor        = "DataCore",
                .product       = "SANmelody",
+               .pgfailback    = -FAILBACK_IMMEDIATE,
                .no_path_retry = NO_PATH_RETRY_QUEUE,
                .prio_name     = PRIO_ALUA,
        },
        {
                .vendor        = "DataCore",
                .product       = "Virtual Disk",
+               .pgfailback    = -FAILBACK_IMMEDIATE,
                .no_path_retry = NO_PATH_RETRY_QUEUE,
                .prio_name     = PRIO_ALUA,
        },
@@ -707,6 +754,7 @@ static struct hwentry default_hw[] = {
                .product       = "FlashArray",
                .selector      = "queue-length 0",
                .pgpolicy      = MULTIBUS,
+               .pgfailback    = -FAILBACK_IMMEDIATE,
                .fast_io_fail  = 10,
                .no_path_retry = 0,
                .dev_loss      = 60,
@@ -715,6 +763,7 @@ static struct hwentry default_hw[] = {
                .vendor        = "HUAWEI",
                .product       = "XSG1",
                .pgpolicy      = MULTIBUS,
+               .pgfailback    = -FAILBACK_IMMEDIATE,
        },
        /*
         * Violin Memory
@@ -727,6 +776,7 @@ static struct hwentry default_hw[] = {
                .prio_name     = PRIO_ALUA,
                .minio         = 100,
                .rr_weight     = RR_WEIGHT_PRIO,
+               .pgfailback    = -FAILBACK_IMMEDIATE,
                .features      = "1 queue_if_no_path",
                .no_path_retry = 300,
        },
index f542d3f..ecaef1f 100644 (file)
@@ -365,7 +365,7 @@ another node requested the failover.
 .I values > 0
 Deferred failback (time to defer in seconds).
 .TP
-Default value is: \fBimmediate\fR
+Default value is: \fBmanual\fR
 .RE
 .TP
 .B  rr_min_io