diff mbox

[3/4] multipath-tools: change default failback from manual to undefined

Message ID 1471543096-11441-3-git-send-email-xose.vazquez@gmail.com (mailing list archive)
State Not Applicable, archived
Delegated to: christophe varoqui
Headers show

Commit Message

Xose Vazquez Perez Aug. 18, 2016, 5:58 p.m. UTC
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 <hare@suse.de>
Cc: Benjamin Marzinski <bmarzins@redhat.com>
Cc: Christophe Varoqui <christophe.varoqui@opensvc.com>
Cc: device-mapper development <dm-devel@redhat.com>
Signed-off-by: Xose Vazquez Perez <xose.vazquez@gmail.com>
---
 libmultipath/defaults.h    |  2 +-
 libmultipath/hwtable.c     | 32 +-------------------------------
 multipath/multipath.conf.5 |  8 +++++++-
 3 files changed, 9 insertions(+), 33 deletions(-)

Comments

Christophe Varoqui Oct. 3, 2016, 11:29 a.m. UTC | #1
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 <xose.vazquez@gmail.com>
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 <hare@suse.de>
> Cc: Benjamin Marzinski <bmarzins@redhat.com>
> Cc: Christophe Varoqui <christophe.varoqui@opensvc.com>
> Cc: device-mapper development <dm-devel@redhat.com>
> Signed-off-by: Xose Vazquez Perez <xose.vazquez@gmail.com>
> ---
>  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
dm-devel@redhat.com
https://www.redhat.com/mailman/listinfo/dm-devel
Hannes Reinecke Oct. 3, 2016, 11:56 a.m. UTC | #2
On 10/03/2016 01:29 PM, Christophe Varoqui wrote:
> 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 ?
> 
Yes, please.
FAILBACK_UNDEF always was kinda pointless, as and we're now using
defaults more aggressively I'm all for dropping FAILBACK_UNDEF and use
FAILBACK_MANUAL as the default.

Cheers,

Hannes
Christophe Varoqui Oct. 3, 2016, 12:19 p.m. UTC | #3
Patch pushed.

On Mon, Oct 3, 2016 at 1:56 PM, Hannes Reinecke <hare@suse.de> wrote:

> On 10/03/2016 01:29 PM, Christophe Varoqui wrote:
> > 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 ?
> >
> Yes, please.
> FAILBACK_UNDEF always was kinda pointless, as and we're now using
> defaults more aggressively I'm all for dropping FAILBACK_UNDEF and use
> FAILBACK_MANUAL as the default.
>
> Cheers,
>
> Hannes
> --
> Dr. Hannes Reinecke                   zSeries & Storage
> hare@suse.de                          +49 911 74053 688
> SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg
> GF: J. Hawn, J. Guild, F. Imendörffer, HRB 16746 (AG Nürnberg)
>
--
dm-devel mailing list
dm-devel@redhat.com
https://www.redhat.com/mailman/listinfo/dm-devel
diff mbox

Patch

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
 .
 .