All of lore.kernel.org
 help / color / mirror / Atom feed
From: Xose Vazquez Perez <xose.vazquez@gmail.com>
Cc: Xose Vazquez Perez <xose.vazquez@gmail.com>,
	device-mapper development <dm-devel@redhat.com>,
	Sean Stewart <Sean.Stewart@netapp.com>
Subject: [PATCH 09/15] multipath-tools: standardize all RDAC devices
Date: Wed, 10 Aug 2016 18:20:32 +0200	[thread overview]
Message-ID: <1470846038-6590-9-git-send-email-xose.vazquez@gmail.com> (raw)
In-Reply-To: <1470846038-6590-1-git-send-email-xose.vazquez@gmail.com>

This is a combo patch.

Reorder keyworks as in code and manpage for "(NETAPP|LSI|ENGENIO)"/"INF-01-00",
and clone its configuration to ALL other RDAC devices.

There are only two differences in all rdac devices. And they look minor:
.features and .no_path_retry

 devices                keyword          values
 =======                ==============   ====================
      3                 .features      = "1 queue_if_no_path",

      5                 .no_path_retry = 15,
      1                 .no_path_retry = 30,
      3                 .no_path_retry = 300,
     10                 .no_path_retry = NO_PATH_RETRY_QUEUE,

"queue_if_no_path" is identical to the "no_path_retry" keyword.
So "queue_if_no_path" can be replaced by "no_path_retry = XX"

And there are just six devices with:
      6                 .features      = "2 pg_init_retries 50",

Sean Stewart, from NetApp, provided more detailed information:

"The pg_init_retries value should be good for all RDAC devices, and can be
synced, the no_path_retry should also be fine. I don’t think that there’s
necessarily an “ideal” value for it, and may be more of a user preference type
of thing, but I personally don’t see anything wrong with having that value on
all RDAC devices, as well. It’s easy enough to change in the conf file if an end
user needs a different value."

I think the pg_init_retries parameter is set as such because part of
scsi_dh_rdac’s path activation involves sending a Mode Select page 0x2C to
change the ownership. If the array is already processing one, it will return
with a vendor unique check condition (05/91/36), which returns SCSI_DH_RETRY."

As for the no_path_retry, we’ve seen scenarios where both paths can be
temporarily unavailable during a storage firmware upgrade, usually because udev
processing has not added the path from one controller before the path from the
second controller goes away. This is just to give it some time to settle in
cases like that, so I/O can continue. The value of 30 was suggested by my
predecessor, but I think is largely arbitrary."

Cc: Sean Stewart <Sean.Stewart@netapp.com>
Cc: Benjamin Marzinski <bmarzins@redhat.com>
Cc: Hannes Reinecke <hare@suse.de>
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/hwtable.c | 152 +++++++++++++++++++++++++++----------------------
 1 file changed, 83 insertions(+), 69 deletions(-)

diff --git a/libmultipath/hwtable.c b/libmultipath/hwtable.c
index f7cd456..cc0cfd4 100644
--- a/libmultipath/hwtable.c
+++ b/libmultipath/hwtable.c
@@ -224,37 +224,37 @@ static struct hwentry default_hw[] = {
 		.vendor        = "DELL",
 		.product       = "MD3000",
 		.bl_product    = "Universal Xport",
-		.features      = "2 pg_init_retries 50",
-		.hwhandler     = "1 rdac",
 		.pgpolicy      = GROUP_BY_PRIO,
-		.pgfailback    = -FAILBACK_IMMEDIATE,
-		.no_path_retry = 15,
 		.checker_name  = RDAC,
+		.features      = "2 pg_init_retries 50",
+		.hwhandler     = "1 rdac",
 		.prio_name     = PRIO_RDAC,
+		.pgfailback    = -FAILBACK_IMMEDIATE,
+		.no_path_retry = 30,
 	},
 	{
 		.vendor        = "DELL",
 		.product       = "(MD32xx|MD36xx)",
 		.bl_product    = "Universal Xport",
-		.features      = "2 pg_init_retries 50",
-		.hwhandler     = "1 rdac",
 		.pgpolicy      = GROUP_BY_PRIO,
-		.pgfailback    = -FAILBACK_IMMEDIATE,
-		.no_path_retry = 15,
 		.checker_name  = RDAC,
+		.features      = "2 pg_init_retries 50",
+		.hwhandler     = "1 rdac",
 		.prio_name     = PRIO_RDAC,
+		.pgfailback    = -FAILBACK_IMMEDIATE,
+		.no_path_retry = 30,
 	},
 	{
 		.vendor        = "DELL",
 		.product       = "(MD34xx|MD38xx)",
 		.bl_product    = "Universal Xport",
-		.features      = "2 pg_init_retries 50",
-		.hwhandler     = "1 rdac",
 		.pgpolicy      = GROUP_BY_PRIO,
-		.pgfailback    = -FAILBACK_IMMEDIATE,
-		.no_path_retry = 15,
 		.checker_name  = RDAC,
+		.features      = "2 pg_init_retries 50",
+		.hwhandler     = "1 rdac",
 		.prio_name     = PRIO_RDAC,
+		.pgfailback    = -FAILBACK_IMMEDIATE,
+		.no_path_retry = 30,
 	},
 	/*
 	 * Fujitsu
@@ -320,112 +320,117 @@ static struct hwentry default_hw[] = {
 		.vendor        = "IBM",
 		.product       = "^1722-600",
 		.bl_product    = "Universal Xport",
-		.features      = "1 queue_if_no_path",
-		.hwhandler     = "1 rdac",
 		.pgpolicy      = GROUP_BY_PRIO,
-		.pgfailback    = -FAILBACK_IMMEDIATE,
-		.no_path_retry = 300,
 		.checker_name  = RDAC,
+		.features      = "2 pg_init_retries 50",
+		.hwhandler     = "1 rdac",
 		.prio_name     = PRIO_RDAC,
+		.pgfailback    = -FAILBACK_IMMEDIATE,
+		.no_path_retry = 30,
 	},
 	{
 		/* DS4100 / FAStT100 */
 		.vendor        = "IBM",
 		.product       = "^1724",
 		.bl_product    = "Universal Xport",
-		.features      = "1 queue_if_no_path",
-		.hwhandler     = "1 rdac",
 		.pgpolicy      = GROUP_BY_PRIO,
-		.pgfailback    = -FAILBACK_IMMEDIATE,
-		.no_path_retry = 300,
 		.checker_name  = RDAC,
+		.features      = "2 pg_init_retries 50",
+		.hwhandler     = "1 rdac",
 		.prio_name     = PRIO_RDAC,
+		.pgfailback    = -FAILBACK_IMMEDIATE,
+		.no_path_retry = 30,
 	},
 	{
 		/* DS3200 / DS3300 / DS3400 / Boot DS */
 		.vendor        = "IBM",
 		.product       = "^1726",
 		.bl_product    = "Universal Xport",
-		.features      = "1 queue_if_no_path",
-		.hwhandler     = "1 rdac",
 		.pgpolicy      = GROUP_BY_PRIO,
-		.pgfailback    = -FAILBACK_IMMEDIATE,
-		.no_path_retry = 300,
 		.checker_name  = RDAC,
+		.features      = "2 pg_init_retries 50",
+		.hwhandler     = "1 rdac",
 		.prio_name     = PRIO_RDAC,
+		.pgfailback    = -FAILBACK_IMMEDIATE,
+		.no_path_retry = 30,
 	},
 	{
 		/* DS4400 / DS4500 / FAStT700 / FAStT900 */
 		.vendor        = "IBM",
 		.product       = "^1742",
 		.bl_product    = "Universal Xport",
-		.hwhandler     = "1 rdac",
 		.pgpolicy      = GROUP_BY_PRIO,
-		.pgfailback    = -FAILBACK_IMMEDIATE,
-		.no_path_retry = NO_PATH_RETRY_QUEUE,
 		.checker_name  = RDAC,
+		.features      = "2 pg_init_retries 50",
+		.hwhandler     = "1 rdac",
 		.prio_name     = PRIO_RDAC,
+		.pgfailback    = -FAILBACK_IMMEDIATE,
+		.no_path_retry = 30,
 	},
 	{
 		/* DS3500 / DS3512 / DS3524 */
 		.vendor        = "IBM",
 		.product       = "^(1745|1746)",
 		.bl_product    = "Universal Xport",
-		.features      = "2 pg_init_retries 50",
-		.hwhandler     = "1 rdac",
 		.pgpolicy      = GROUP_BY_PRIO,
-		.pgfailback    = -FAILBACK_IMMEDIATE,
-		.no_path_retry = 15,
 		.checker_name  = RDAC,
+		.features      = "2 pg_init_retries 50",
+		.hwhandler     = "1 rdac",
 		.prio_name     = PRIO_RDAC,
+		.pgfailback    = -FAILBACK_IMMEDIATE,
+		.no_path_retry = 30,
 	},
 	{
 		/* DS3950 / DS4200 / DS4700 / DS5020 */
 		.vendor        = "IBM",
 		.product       = "^1814",
 		.bl_product    = "Universal Xport",
-		.hwhandler     = "1 rdac",
 		.pgpolicy      = GROUP_BY_PRIO,
-		.pgfailback    = -FAILBACK_IMMEDIATE,
-		.no_path_retry = NO_PATH_RETRY_QUEUE,
 		.checker_name  = RDAC,
+		.features      = "2 pg_init_retries 50",
+		.hwhandler     = "1 rdac",
 		.prio_name     = PRIO_RDAC,
+		.pgfailback    = -FAILBACK_IMMEDIATE,
+		.no_path_retry = 30,
 	},
 	{
 		/* DS4800 */
 		.vendor        = "IBM",
 		.product       = "^1815",
 		.bl_product    = "Universal Xport",
-		.hwhandler     = "1 rdac",
 		.pgpolicy      = GROUP_BY_PRIO,
-		.pgfailback    = -FAILBACK_IMMEDIATE,
-		.no_path_retry = NO_PATH_RETRY_QUEUE,
 		.checker_name  = RDAC,
+		.features      = "2 pg_init_retries 50",
+		.hwhandler     = "1 rdac",
 		.prio_name     = PRIO_RDAC,
+		.pgfailback    = -FAILBACK_IMMEDIATE,
+		.no_path_retry = 30,
 	},
 	{
 		/* DS5000 / DS5100 / DS5300 / DCS3700 */
 		.vendor        = "IBM",
 		.product       = "^1818",
 		.bl_product    = "Universal Xport",
-		.hwhandler     = "1 rdac",
 		.pgpolicy      = GROUP_BY_PRIO,
-		.pgfailback    = -FAILBACK_IMMEDIATE,
-		.no_path_retry = NO_PATH_RETRY_QUEUE,
 		.checker_name  = RDAC,
+		.features      = "2 pg_init_retries 50",
+		.hwhandler     = "1 rdac",
 		.prio_name     = PRIO_RDAC,
+		.pgfailback    = -FAILBACK_IMMEDIATE,
+		.no_path_retry = 30,
 	},
 	{
 		/* Netfinity Fibre Channel RAID Controller Unit */
 		.vendor        = "IBM",
 		.product       = "^3526",
 		.bl_product    = "Universal Xport",
-		.hwhandler     = "1 rdac",
 		.pgpolicy      = GROUP_BY_PRIO,
-		.pgfailback    = -FAILBACK_IMMEDIATE,
-		.no_path_retry = NO_PATH_RETRY_QUEUE,
 		.checker_name  = RDAC,
+		.features      = "2 pg_init_retries 50",
+		.hwhandler     = "1 rdac",
 		.prio_name     = PRIO_RDAC,
+		.pgfailback    = -FAILBACK_IMMEDIATE,
+		.no_path_retry = 30,
 	},
 	{
 		/* DS4200 / FAStT200 */
@@ -582,13 +587,13 @@ static struct hwentry default_hw[] = {
 		.vendor        = "(NETAPP|LSI|ENGENIO)",
 		.product       = "INF-01-00",
 		.bl_product    = "Universal Xport",
+		.pgpolicy      = GROUP_BY_PRIO,
+		.checker_name  = RDAC,
 		.features      = "2 pg_init_retries 50",
 		.hwhandler     = "1 rdac",
-		.pgpolicy      = GROUP_BY_PRIO,
+		.prio_name     = PRIO_RDAC,
 		.pgfailback    = -FAILBACK_IMMEDIATE,
 		.no_path_retry = 30,
-		.checker_name  = RDAC,
-		.prio_name     = PRIO_RDAC,
 	},
 	/*
 	 * Nexenta
@@ -618,25 +623,26 @@ static struct hwentry default_hw[] = {
 		.vendor        = "SGI",
 		.product       = "TP9[345]00",
 		.bl_product    = "Universal Xport",
-		.hwhandler     = "1 rdac",
 		.pgpolicy      = GROUP_BY_PRIO,
-		.pgfailback    = -FAILBACK_IMMEDIATE,
-		.no_path_retry = NO_PATH_RETRY_QUEUE,
 		.checker_name  = RDAC,
+		.features      = "2 pg_init_retries 50",
+		.hwhandler     = "1 rdac",
 		.prio_name     = PRIO_RDAC,
+		.pgfailback    = -FAILBACK_IMMEDIATE,
+		.no_path_retry = 30,
 	},
 	{
 		/* InfiniteStorage ??? */
 		.vendor        = "SGI",
 		.product       = "IS",
 		.bl_product    = "Universal Xport",
-		.features      = "2 pg_init_retries 50",
-		.hwhandler     = "1 rdac",
 		.pgpolicy      = GROUP_BY_PRIO,
-		.pgfailback    = -FAILBACK_IMMEDIATE,
-		.no_path_retry = 15,
 		.checker_name  = RDAC,
+		.features      = "2 pg_init_retries 50",
+		.hwhandler     = "1 rdac",
 		.prio_name     = PRIO_RDAC,
+		.pgfailback    = -FAILBACK_IMMEDIATE,
+		.no_path_retry = 30,
 	},
 	/*
 	 * NEC
@@ -678,22 +684,25 @@ static struct hwentry default_hw[] = {
 		.vendor        = "STK",
 		.product       = "OPENstorage D280",
 		.bl_product    = "Universal Xport",
-		.hwhandler     = "1 rdac",
 		.pgpolicy      = GROUP_BY_PRIO,
-		.pgfailback    = -FAILBACK_IMMEDIATE,
 		.checker_name  = RDAC,
+		.features      = "2 pg_init_retries 50",
+		.hwhandler     = "1 rdac",
 		.prio_name     = PRIO_RDAC,
+		.pgfailback    = -FAILBACK_IMMEDIATE,
+		.no_path_retry = 30,
 	},
 	{
 		.vendor        = "STK",
 		.product       = "FLEXLINE 380",
 		.bl_product    = "Universal Xport",
-		.hwhandler     = "1 rdac",
 		.pgpolicy      = GROUP_BY_PRIO,
-		.pgfailback    = -FAILBACK_IMMEDIATE,
-		.no_path_retry = NO_PATH_RETRY_QUEUE,
 		.checker_name  = RDAC,
+		.features      = "2 pg_init_retries 50",
+		.hwhandler     = "1 rdac",
 		.prio_name     = PRIO_RDAC,
+		.pgfailback    = -FAILBACK_IMMEDIATE,
+		.no_path_retry = 30,
 	},
 	{
 		.vendor        = "SUN",
@@ -705,46 +714,51 @@ static struct hwentry default_hw[] = {
 		.vendor        = "SUN",
 		.product       = "STK6580_6780",
 		.bl_product    = "Universal Xport",
-		.hwhandler     = "1 rdac",
 		.pgpolicy      = GROUP_BY_PRIO,
-		.pgfailback    = -FAILBACK_IMMEDIATE,
 		.checker_name  = RDAC,
+		.features      = "2 pg_init_retries 50",
+		.hwhandler     = "1 rdac",
 		.prio_name     = PRIO_RDAC,
+		.pgfailback    = -FAILBACK_IMMEDIATE,
+		.no_path_retry = 30,
 	},
 	{
 		/* 6140 */
 		.vendor        = "SUN",
 		.product       = "CSM200_R",
 		.bl_product    = "Universal Xport",
-		.hwhandler     = "1 rdac",
 		.pgpolicy      = GROUP_BY_PRIO,
-		.pgfailback    = -FAILBACK_IMMEDIATE,
-		.no_path_retry = NO_PATH_RETRY_QUEUE,
 		.checker_name  = RDAC,
+		.features      = "2 pg_init_retries 50",
+		.hwhandler     = "1 rdac",
 		.prio_name     = PRIO_RDAC,
+		.pgfailback    = -FAILBACK_IMMEDIATE,
+		.no_path_retry = 30,
 	},
 	{
 		/* 2510 / 2530 / 2540 */
 		.vendor        = "SUN",
 		.product       = "LCSM100_[IEFS]",
 		.bl_product    = "Universal Xport",
-		.hwhandler     = "1 rdac",
 		.pgpolicy      = GROUP_BY_PRIO,
-		.pgfailback    = -FAILBACK_IMMEDIATE,
-		.no_path_retry = NO_PATH_RETRY_QUEUE,
 		.checker_name  = RDAC,
+		.features      = "2 pg_init_retries 50",
+		.hwhandler     = "1 rdac",
 		.prio_name     = PRIO_RDAC,
+		.pgfailback    = -FAILBACK_IMMEDIATE,
+		.no_path_retry = 30,
 	},
 	{
 		.vendor        = "SUN",
 		.product       = "SUN_6180",
 		.bl_product    = "Universal Xport",
-		.hwhandler     = "1 rdac",
 		.pgpolicy      = GROUP_BY_PRIO,
-		.pgfailback    = -FAILBACK_IMMEDIATE,
-		.no_path_retry = NO_PATH_RETRY_QUEUE,
 		.checker_name  = RDAC,
+		.features      = "2 pg_init_retries 50",
+		.hwhandler     = "1 rdac",
 		.prio_name     = PRIO_RDAC,
+		.pgfailback    = -FAILBACK_IMMEDIATE,
+		.no_path_retry = 30,
 	},
 	/*
 	 * Pivot3
-- 
2.7.4

--
dm-devel mailing list
dm-devel@redhat.com
https://www.redhat.com/mailman/listinfo/dm-devel

  parent reply	other threads:[~2016-08-10 16:20 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-08-10 16:20 [PATCH 01/15] multipath-tools: identify more devices at hwtable Xose Vazquez Perez
2016-08-10 16:20 ` [PATCH 02/15] multipath-tools: remove pgpolicy=FAILOVER from Ceph/RBD Xose Vazquez Perez
2016-08-10 16:51   ` Mike Christie
2016-08-10 16:20 ` [PATCH 03/15] multipath-tools: replace (|) with [] when there is one element Xose Vazquez Perez
2016-08-10 16:20 ` [PATCH 04/15] multipath-tools: replace spaces with a regex in IBM/"3303 NVDISK" Xose Vazquez Perez
2016-08-10 16:20 ` [PATCH 05/15] multipath-tools: replace "." for real values in (COMPAQ|HP)/"(MSA|HSV)1.0" Xose Vazquez Perez
2016-08-10 16:20 ` [PATCH 06/15] multipath-tools: SGI/TP9300 is a RDAC array Xose Vazquez Perez
2016-08-10 16:20 ` [PATCH 07/15] multipath-tools: add Oracle FS to hwtable Xose Vazquez Perez
2016-08-10 16:20 ` [PATCH 08/15] multipath-tools: remove blank line at multipath.conf.5 Xose Vazquez Perez
2016-08-10 16:20 ` Xose Vazquez Perez [this message]
2016-08-10 16:20 ` [PATCH 10/15] multipath-tools: delete .minio from hwtable Xose Vazquez Perez
2016-08-10 16:20 ` [PATCH 11/15] multipath-tools: add IBM/1813 - DCS3860 to hwtable Xose Vazquez Perez
2016-08-10 16:20 ` [PATCH 12/15] multipath-tools: remove patchwork reference Xose Vazquez Perez
2016-08-10 16:20 ` [PATCH 13/15] multipath-tools: document vendor, product, revision and bl_product are POSIX Extended regex Xose Vazquez Perez
2016-08-10 16:20 ` [PATCH 14/15] multipath-tools: replace queue-length by default selector Xose Vazquez Perez
2016-08-11  5:58   ` Hannes Reinecke
2016-08-11  6:52     ` Christophe Varoqui
2016-08-11 16:16     ` Xose Vazquez Perez
2016-08-10 16:20 ` [PATCH 15/15] multipath-tools: document the relation between queue_if_no_path and no_path_retry Xose Vazquez Perez
2016-08-16  7:51 ` [PATCH 01/15] multipath-tools: identify more devices at hwtable Christophe Varoqui

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1470846038-6590-9-git-send-email-xose.vazquez@gmail.com \
    --to=xose.vazquez@gmail.com \
    --cc=Sean.Stewart@netapp.com \
    --cc=dm-devel@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.