From patchwork Wed Aug 10 16:20:32 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Xose Vazquez Perez X-Patchwork-Id: 9273227 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id D7A4B6075E for ; Wed, 10 Aug 2016 16:25:01 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id C75D82656B for ; Wed, 10 Aug 2016 16:25:01 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id B6E3A2841E; Wed, 10 Aug 2016 16:25:01 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.8 required=2.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED, FREEMAIL_FROM, RCVD_IN_DNSWL_HI, T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from mx4-phx2.redhat.com (mx4-phx2.redhat.com [209.132.183.25]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id ACA192656B for ; Wed, 10 Aug 2016 16:25:00 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by mx4-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id u7AGLIfb019522; Wed, 10 Aug 2016 12:21:18 -0400 Received: from int-mx10.intmail.prod.int.phx2.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id u7AGL7AN010856 for ; Wed, 10 Aug 2016 12:21:07 -0400 Received: from mx1.redhat.com (ext-mx09.extmail.prod.ext.phx2.redhat.com [10.5.110.38]) by int-mx10.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id u7AGL78l025928 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO); Wed, 10 Aug 2016 12:21:07 -0400 Received: from mail-wm0-f66.google.com (mail-wm0-f66.google.com [74.125.82.66]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id B86124E33C; Wed, 10 Aug 2016 16:21:05 +0000 (UTC) Received: by mail-wm0-f66.google.com with SMTP id q128so10532840wma.1; Wed, 10 Aug 2016 09:21:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=06JPSPkUHWWWUnblQZT62Qprgywjo5O4gyse/lOvOIY=; b=dZeOHg9oq9pwyn9MZfycHUbxvS5pbWAjc8kcYU7XArBwgPHZy0Utrv2Vtmh2dQse+r ygyk9uqBIj20VR0BO63SSB8Kz0vfM9oAgRhPG1j/QpiTzSinQiDGhs9zBf+rLTE8keSU MCkIn+3oAaYAEDuKPyxVD6zgGYBr0tT0Oq/6UIIC9u7sfwvOc5dJZD2+3qrh3F2CbFJL s7h/9qIhHdTEnOVpM6UCRIY8/0rUSKtGIf3sCWMuSbphqCdGpDkM8/5SXHjETami7G/0 nh201rpjIa9hpya+XsT6C1ODEmhSFUMgBxtvkImg6OqrwZfBeoD2scHAXdZHsc9J98QN uZkQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=06JPSPkUHWWWUnblQZT62Qprgywjo5O4gyse/lOvOIY=; b=Zh/NwriwB85mO25D7YvYHlGK0+sxGqLZgRs3zKVoifaHf2oZqPKNzkSZD46hRjjXYJ /IkfK9vbpdJM7LqnsLR1Tcqn9VvVI1rVWrTEi9Xgpzu6dzhPbCqZmurJG+e4SzV7MJVX EtVBWdLeKRDZ1H4kkvVIQQ7dg+spaMxEIngMGV0r1Zle2bAv2QSgGBogLIBnXt5TanQc 1PRtGcqLPSYd9e4+FvzdAP8+VAbvgebW8DjrI9//28v0G98P/MZmyA93KqWymht6LA9D sSb833EmKL1chNdHkJmSUq6aw7ZEV2eX3gahQsUiQeTWinX40y1+h7qfQBedlnzcaCQT sBEA== X-Gm-Message-State: AEkoousoGnnBE937VCo+W1z8SGW8p/rq4Uce/BCLkaThiXWPex5x567VWMVjSxtcWOTPRw== X-Received: by 10.194.164.229 with SMTP id yt5mr4793799wjb.39.1470846064347; Wed, 10 Aug 2016 09:21:04 -0700 (PDT) Received: from localhost ([46.222.153.25]) by smtp.gmail.com with ESMTPSA id ub8sm43823725wjc.39.2016.08.10.09.21.03 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 10 Aug 2016 09:21:03 -0700 (PDT) From: Xose Vazquez Perez To: Date: Wed, 10 Aug 2016 18:20:32 +0200 Message-Id: <1470846038-6590-9-git-send-email-xose.vazquez@gmail.com> In-Reply-To: <1470846038-6590-1-git-send-email-xose.vazquez@gmail.com> References: <1470846038-6590-1-git-send-email-xose.vazquez@gmail.com> MIME-Version: 1.0 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.38]); Wed, 10 Aug 2016 16:21:06 +0000 (UTC) X-Greylist: inspected by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.38]); Wed, 10 Aug 2016 16:21:06 +0000 (UTC) for IP:'74.125.82.66' DOMAIN:'mail-wm0-f66.google.com' HELO:'mail-wm0-f66.google.com' FROM:'xose.vazquez@gmail.com' RCPT:'' X-RedHat-Spam-Score: -0.02 (BAYES_50, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, FREEMAIL_FROM, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, SPF_PASS) 74.125.82.66 mail-wm0-f66.google.com 74.125.82.66 mail-wm0-f66.google.com X-Scanned-By: MIMEDefang 2.68 on 10.5.11.23 X-Scanned-By: MIMEDefang 2.78 on 10.5.110.38 X-loop: dm-devel@redhat.com Cc: Xose Vazquez Perez , device-mapper development , Sean Stewart Subject: [dm-devel] [PATCH 09/15] multipath-tools: standardize all RDAC devices X-BeenThere: dm-devel@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: device-mapper development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: dm-devel-bounces@redhat.com Errors-To: dm-devel-bounces@redhat.com X-Virus-Scanned: ClamAV using ClamSMTP 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 Cc: Benjamin Marzinski Cc: Hannes Reinecke Cc: Christophe Varoqui Cc: device-mapper development Signed-off-by: Xose Vazquez Perez --- 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