From patchwork Tue Jan 31 19:34:18 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Benjamin Marzinski X-Patchwork-Id: 13123328 X-Patchwork-Delegate: christophe.varoqui@free.fr Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id CD63DC636CC for ; Tue, 31 Jan 2023 19:34:36 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1675193675; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=XA/bxO64xsNJNyze8P4/6DgrYCQ79AlwMlwpw3YA0aQ=; b=QlsNsy6Z/kLBztvELeoBgvEtbfOCsA+9RXVxphbkJXtIQKnig6pP0vI2pkEainbMJxYbKE i/ZJe7SFp6EU3UlWCQUVQLMQRDcx14F/tWjCz0k2b9NJ9CYuVaAMRO5tpqpnA05VMC8FEe Bwm5VEzx3KeEEW4/jkHatNV7xC0+KSY= Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-563-x5FG7lalMpiPeQsjCO-HtA-1; Tue, 31 Jan 2023 14:34:34 -0500 X-MC-Unique: x5FG7lalMpiPeQsjCO-HtA-1 Received: from smtp.corp.redhat.com (int-mx10.intmail.prod.int.rdu2.redhat.com [10.11.54.10]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 71D201C05AC0; Tue, 31 Jan 2023 19:34:31 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id DFC9F492B00; Tue, 31 Jan 2023 19:34:28 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id AF1011946589; Tue, 31 Jan 2023 19:34:28 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.rdu2.redhat.com [10.11.54.6]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 83BD51946587 for ; Tue, 31 Jan 2023 19:34:25 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id 7698A2166B34; Tue, 31 Jan 2023 19:34:25 +0000 (UTC) Received: from octiron.msp.redhat.com (octiron.msp.redhat.com [10.15.80.209]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 6217F2166B33; Tue, 31 Jan 2023 19:34:25 +0000 (UTC) Received: from octiron.msp.redhat.com (localhost.localdomain [127.0.0.1]) by octiron.msp.redhat.com (8.14.9/8.14.9) with ESMTP id 30VJYO5t001189; Tue, 31 Jan 2023 13:34:24 -0600 Received: (from bmarzins@localhost) by octiron.msp.redhat.com (8.14.9/8.14.9/Submit) id 30VJYNuM001188; Tue, 31 Jan 2023 13:34:23 -0600 From: Benjamin Marzinski To: Christophe Varoqui Date: Tue, 31 Jan 2023 13:34:18 -0600 Message-Id: <1675193661-1147-2-git-send-email-bmarzins@redhat.com> In-Reply-To: <1675193661-1147-1-git-send-email-bmarzins@redhat.com> References: <1675193661-1147-1-git-send-email-bmarzins@redhat.com> X-Scanned-By: MIMEDefang 3.1 on 10.11.54.6 Subject: [dm-devel] [PATCH 1/4] libmultipath: use select_reload_action in select_action X-BeenThere: dm-devel@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: device-mapper development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: device-mapper development , Martin Wilck MIME-Version: 1.0 Errors-To: dm-devel-bounces@redhat.com Sender: "dm-devel" X-Scanned-By: MIMEDefang 3.1 on 10.11.54.10 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Since we have a function to set the action to reload, use it. Signed-off-by: Benjamin Marzinski Reviewed-by: Martin Wilck --- libmultipath/configure.c | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/libmultipath/configure.c b/libmultipath/configure.c index e689f8a7..050b984a 100644 --- a/libmultipath/configure.c +++ b/libmultipath/configure.c @@ -729,9 +729,7 @@ void select_action (struct multipath *mpp, const struct _vector *curmp, if (force_reload) { mpp->force_udev_reload = 1; - mpp->action = ACT_RELOAD; - condlog(3, "%s: set ACT_RELOAD (forced by user)", - mpp->alias); + select_reload_action(mpp, "forced by user"); return; } if (cmpp->size != mpp->size) { @@ -744,9 +742,7 @@ void select_action (struct multipath *mpp, const struct _vector *curmp, if (!is_udev_ready(cmpp) && count_active_paths(mpp) > 0) { mpp->force_udev_reload = 1; - mpp->action = ACT_RELOAD; - condlog(3, "%s: set ACT_RELOAD (udev incomplete)", - mpp->alias); + select_reload_action(mpp, "udev incomplete"); return; } From patchwork Tue Jan 31 19:34:19 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Benjamin Marzinski X-Patchwork-Id: 13123330 X-Patchwork-Delegate: christophe.varoqui@free.fr Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id C3383C38142 for ; Tue, 31 Jan 2023 19:36:19 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1675193778; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=R+CEfBxbYV6HtF156pr8TyDuh+fq/Im3Bp86TuOOzac=; b=W5jpin6BOGoPCDTT/etVQea4m3HPr2JaQztkmtX/v4AAcBNLOjWBwoEz+YkgNT9fua4Wpr utRHG+Ubx/cliCk1WBW4sO/VWHoJo7ZdNGLh0G4NmfprRSzyx7zs2EoDyoewnMrLdcm8Lu hf1e5rSQo7NKUNvaooFQsvcBDMzJ5QY= Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-546-in3c0p6qMbasJ1t5GnraPQ-1; Tue, 31 Jan 2023 14:36:15 -0500 X-MC-Unique: in3c0p6qMbasJ1t5GnraPQ-1 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.rdu2.redhat.com [10.11.54.7]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 6F5AD800D8E; Tue, 31 Jan 2023 19:36:12 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id 5EE1F140EBF4; Tue, 31 Jan 2023 19:36:12 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 01E1419465B2; Tue, 31 Jan 2023 19:36:12 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx10.intmail.prod.int.rdu2.redhat.com [10.11.54.10]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id D4A081946587 for ; Tue, 31 Jan 2023 19:34:26 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id C60F3492B00; Tue, 31 Jan 2023 19:34:26 +0000 (UTC) Received: from octiron.msp.redhat.com (octiron.msp.redhat.com [10.15.80.209]) by smtp.corp.redhat.com (Postfix) with ESMTPS id AF45F492C3E; Tue, 31 Jan 2023 19:34:26 +0000 (UTC) Received: from octiron.msp.redhat.com (localhost.localdomain [127.0.0.1]) by octiron.msp.redhat.com (8.14.9/8.14.9) with ESMTP id 30VJYP7g001193; Tue, 31 Jan 2023 13:34:25 -0600 Received: (from bmarzins@localhost) by octiron.msp.redhat.com (8.14.9/8.14.9/Submit) id 30VJYOSI001192; Tue, 31 Jan 2023 13:34:25 -0600 From: Benjamin Marzinski To: Christophe Varoqui Date: Tue, 31 Jan 2023 13:34:19 -0600 Message-Id: <1675193661-1147-3-git-send-email-bmarzins@redhat.com> In-Reply-To: <1675193661-1147-1-git-send-email-bmarzins@redhat.com> References: <1675193661-1147-1-git-send-email-bmarzins@redhat.com> X-Scanned-By: MIMEDefang 3.1 on 10.11.54.10 Subject: [dm-devel] [PATCH 2/4] libmultipath: select resize action even if reload is forced X-BeenThere: dm-devel@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: device-mapper development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: device-mapper development , Martin Wilck MIME-Version: 1.0 Errors-To: dm-devel-bounces@redhat.com Sender: "dm-devel" X-Scanned-By: MIMEDefang 3.1 on 10.11.54.7 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com The ACT_RESIZE action is the same as the ACT_RELOAD action, except that it flushes outstanding IO because the device size is changing and the new size might be too small for some of the outstanding IO. If we've detected a size change, and a forced reload is requested, we still need to flush the IO because the reload will change the device size. Signed-off-by: Benjamin Marzinski Reviewed-by: Martin Wilck --- libmultipath/configure.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/libmultipath/configure.c b/libmultipath/configure.c index 050b984a..6811e661 100644 --- a/libmultipath/configure.c +++ b/libmultipath/configure.c @@ -727,11 +727,6 @@ void select_action (struct multipath *mpp, const struct _vector *curmp, return; } - if (force_reload) { - mpp->force_udev_reload = 1; - select_reload_action(mpp, "forced by user"); - return; - } if (cmpp->size != mpp->size) { mpp->force_udev_reload = 1; mpp->action = ACT_RESIZE; @@ -740,6 +735,12 @@ void select_action (struct multipath *mpp, const struct _vector *curmp, return; } + if (force_reload) { + mpp->force_udev_reload = 1; + select_reload_action(mpp, "forced by user"); + return; + } + if (!is_udev_ready(cmpp) && count_active_paths(mpp) > 0) { mpp->force_udev_reload = 1; select_reload_action(mpp, "udev incomplete"); From patchwork Tue Jan 31 19:34:20 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Benjamin Marzinski X-Patchwork-Id: 13123339 X-Patchwork-Delegate: christophe.varoqui@free.fr Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 0FD82C38142 for ; Tue, 31 Jan 2023 19:43:21 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1675194201; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=pREKA1csCiSognxL7G2+/j7n/RIcxs703hXLwsYAozY=; b=VZlfJddvlbkE5XnNhkj31NoOrlxSqh6btU9WvxfUXMtdXQvg8wsgCZlbm1wsc69HmdTewX 3dJkMYYNXYMi5vtgpuIboA8+1uuTitgT58f9JiWKpnQkqPAyL/UCs7EF/INvnZ99d1bkez hh76clcXnXJxTDeB33uqi2k4/OLyl6g= Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-500-O2acpM8_NXicg6eDnAeZ_A-1; Tue, 31 Jan 2023 14:43:17 -0500 X-MC-Unique: O2acpM8_NXicg6eDnAeZ_A-1 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.rdu2.redhat.com [10.11.54.1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 0D75D1991C42; Tue, 31 Jan 2023 19:43:16 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id EC24540C2064; Tue, 31 Jan 2023 19:43:15 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id B11AA1946589; Tue, 31 Jan 2023 19:43:15 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.rdu2.redhat.com [10.11.54.2]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 32AEB1946587 for ; Tue, 31 Jan 2023 19:34:28 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id 17A214010D2A; Tue, 31 Jan 2023 19:34:28 +0000 (UTC) Received: from octiron.msp.redhat.com (octiron.msp.redhat.com [10.15.80.209]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 0175B401531A; Tue, 31 Jan 2023 19:34:27 +0000 (UTC) Received: from octiron.msp.redhat.com (localhost.localdomain [127.0.0.1]) by octiron.msp.redhat.com (8.14.9/8.14.9) with ESMTP id 30VJYQX5001197; Tue, 31 Jan 2023 13:34:26 -0600 Received: (from bmarzins@localhost) by octiron.msp.redhat.com (8.14.9/8.14.9/Submit) id 30VJYQAT001196; Tue, 31 Jan 2023 13:34:26 -0600 From: Benjamin Marzinski To: Christophe Varoqui Date: Tue, 31 Jan 2023 13:34:20 -0600 Message-Id: <1675193661-1147-4-git-send-email-bmarzins@redhat.com> In-Reply-To: <1675193661-1147-1-git-send-email-bmarzins@redhat.com> References: <1675193661-1147-1-git-send-email-bmarzins@redhat.com> X-Scanned-By: MIMEDefang 3.1 on 10.11.54.2 Subject: [dm-devel] [PATCH 3/4] libmultipath: cleanup ACT_CREATE code in select_action X-BeenThere: dm-devel@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: device-mapper development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: device-mapper development , Martin Wilck MIME-Version: 1.0 Errors-To: dm-devel-bounces@redhat.com Sender: "dm-devel" X-Scanned-By: MIMEDefang 3.1 on 10.11.54.1 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Combine the two separate blocks that set ACT_CREATE into one. Signed-off-by: Benjamin Marzinski Reviewed-by: Martin Wilck --- libmultipath/configure.c | 38 +++++++++++++++++--------------------- 1 file changed, 17 insertions(+), 21 deletions(-) diff --git a/libmultipath/configure.c b/libmultipath/configure.c index 6811e661..e870e0f6 100644 --- a/libmultipath/configure.c +++ b/libmultipath/configure.c @@ -686,33 +686,29 @@ void select_action (struct multipath *mpp, const struct _vector *curmp, if (mpp->need_reload || (cmpp && cmpp->need_reload)) force_reload = 1; - if (!cmpp_by_name) { - if (cmpp) { - condlog(2, "%s: rename %s to %s", mpp->wwid, - cmpp->alias, mpp->alias); - strlcpy(mpp->alias_old, cmpp->alias, WWID_SIZE); - mpp->action = ACT_RENAME; - if (force_reload) { - mpp->force_udev_reload = 1; - mpp->action = ACT_FORCERENAME; - } - return; + if (!cmpp) { + if (cmpp_by_name) { + condlog(1, "%s: can't use alias \"%s\" used by %s, falling back to WWID", + mpp->wwid, mpp->alias, cmpp_by_name->wwid); + /* We can do this because wwid wasn't found */ + free(mpp->alias); + mpp->alias = strdup(mpp->wwid); } mpp->action = ACT_CREATE; - condlog(3, "%s: set ACT_CREATE (map does not exist)", - mpp->alias); + condlog(3, "%s: set ACT_CREATE (map does not exist%s)", + mpp->alias, cmpp_by_name ? ", name changed" : ""); return; } - if (!cmpp) { - condlog(1, "%s: can't use alias \"%s\" used by %s, falling back to WWID", - mpp->wwid, mpp->alias, cmpp_by_name->wwid); - /* We can do this because wwid wasn't found */ - free(mpp->alias); - mpp->alias = strdup(mpp->wwid); - mpp->action = ACT_CREATE; - condlog(3, "%s: set ACT_CREATE (map does not exist, name changed)", + if (!cmpp_by_name) { + condlog(2, "%s: rename %s to %s", mpp->wwid, cmpp->alias, mpp->alias); + strlcpy(mpp->alias_old, cmpp->alias, WWID_SIZE); + mpp->action = ACT_RENAME; + if (force_reload) { + mpp->force_udev_reload = 1; + mpp->action = ACT_FORCERENAME; + } return; } From patchwork Tue Jan 31 19:34:21 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Benjamin Marzinski X-Patchwork-Id: 13123329 X-Patchwork-Delegate: christophe.varoqui@free.fr Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 84941C636CC for ; Tue, 31 Jan 2023 19:36:19 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1675193778; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=8IWguvJ/nPvAdmh0TGDxMTF+Hze/UCVRHv0NtfJLL/k=; b=bZQurhrvZ4fHJ14RCS0HflPe5ht7XP6ZdkxOsOqr4o5up+3nzY2+P9q0sLTS0pSV1M7uTW gdEpDM9y2leEvmzTIlAD9BtS5rb14po4+rya+7meC9HORneTOlceOWJ71Sg53pOs3RJTk1 Nu6najnM0Ncfc3Pw1VTygG+ZZdrWs7I= Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-645-jv9st9VOPB2j-taQ6mXBSw-1; Tue, 31 Jan 2023 14:36:14 -0500 X-MC-Unique: jv9st9VOPB2j-taQ6mXBSw-1 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.rdu2.redhat.com [10.11.54.8]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 20EE02805588; Tue, 31 Jan 2023 19:36:12 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id 0BD8EC15BAD; Tue, 31 Jan 2023 19:36:12 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id C49D91946589; Tue, 31 Jan 2023 19:36:11 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.rdu2.redhat.com [10.11.54.2]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 83CFC194658F for ; Tue, 31 Jan 2023 19:34:29 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id 69D6540E4314; Tue, 31 Jan 2023 19:34:29 +0000 (UTC) Received: from octiron.msp.redhat.com (octiron.msp.redhat.com [10.15.80.209]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 4B30540C1255; Tue, 31 Jan 2023 19:34:29 +0000 (UTC) Received: from octiron.msp.redhat.com (localhost.localdomain [127.0.0.1]) by octiron.msp.redhat.com (8.14.9/8.14.9) with ESMTP id 30VJYR14001201; Tue, 31 Jan 2023 13:34:28 -0600 Received: (from bmarzins@localhost) by octiron.msp.redhat.com (8.14.9/8.14.9/Submit) id 30VJYRQD001200; Tue, 31 Jan 2023 13:34:27 -0600 From: Benjamin Marzinski To: Christophe Varoqui Date: Tue, 31 Jan 2023 13:34:21 -0600 Message-Id: <1675193661-1147-5-git-send-email-bmarzins@redhat.com> In-Reply-To: <1675193661-1147-1-git-send-email-bmarzins@redhat.com> References: <1675193661-1147-1-git-send-email-bmarzins@redhat.com> X-Scanned-By: MIMEDefang 3.1 on 10.11.54.2 Subject: [dm-devel] [PATCH 4/4] libmultipath: keep renames from stopping other multipath actions X-BeenThere: dm-devel@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: device-mapper development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: device-mapper development , Martin Wilck MIME-Version: 1.0 Errors-To: dm-devel-bounces@redhat.com Sender: "dm-devel" X-Scanned-By: MIMEDefang 3.1 on 10.11.54.8 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com If select_action() is called and a multipath device needs to be renamed, the code currently checks if force_reload is set, and if so, does the reload after the rename. But if force_reload isn't set, only the rename happens, regardless of what other actions are needed. This can happen if multipathd starts up and a device needs both a reload and a rename. Make multipath check for resize, reload, and switch pathgroup along with rename, and do both if necessary. Signed-off-by: Benjamin Marzinski --- libmultipath/configure.c | 60 +++++++++++++++++----------------------- libmultipath/configure.h | 4 ++- 2 files changed, 29 insertions(+), 35 deletions(-) diff --git a/libmultipath/configure.c b/libmultipath/configure.c index e870e0f6..2228176d 100644 --- a/libmultipath/configure.c +++ b/libmultipath/configure.c @@ -670,7 +670,8 @@ static bool is_udev_ready(struct multipath *cmpp) static void select_reload_action(struct multipath *mpp, const char *reason) { - mpp->action = ACT_RELOAD; + mpp->action = mpp->action == ACT_RENAME ? ACT_RELOAD_RENAME : + ACT_RELOAD; condlog(3, "%s: set ACT_RELOAD (%s)", mpp->alias, reason); } @@ -681,6 +682,7 @@ void select_action (struct multipath *mpp, const struct _vector *curmp, struct multipath * cmpp_by_name; char * mpp_feat, * cmpp_feat; + mpp->action = ACT_NOTHING; cmpp = find_mp_by_wwid(curmp, mpp->wwid); cmpp_by_name = find_mp_by_alias(curmp, mpp->alias); if (mpp->need_reload || (cmpp && cmpp->need_reload)) @@ -705,14 +707,8 @@ void select_action (struct multipath *mpp, const struct _vector *curmp, mpp->alias); strlcpy(mpp->alias_old, cmpp->alias, WWID_SIZE); mpp->action = ACT_RENAME; - if (force_reload) { - mpp->force_udev_reload = 1; - mpp->action = ACT_FORCERENAME; - } - return; - } - - if (cmpp != cmpp_by_name) { + /* don't return here. Check for other needed actions */ + } else if (cmpp != cmpp_by_name) { condlog(2, "%s: unable to rename %s to %s (%s is used by %s)", mpp->wwid, cmpp->alias, mpp->alias, mpp->alias, cmpp_by_name->wwid); @@ -725,7 +721,8 @@ void select_action (struct multipath *mpp, const struct _vector *curmp, if (cmpp->size != mpp->size) { mpp->force_udev_reload = 1; - mpp->action = ACT_RESIZE; + mpp->action = mpp->action == ACT_RENAME ? ACT_RESIZE_RENAME : + ACT_RESIZE; condlog(3, "%s: set ACT_RESIZE (size change)", mpp->alias); return; @@ -801,14 +798,14 @@ void select_action (struct multipath *mpp, const struct _vector *curmp, return; } if (cmpp->nextpg != mpp->bestpg) { - mpp->action = ACT_SWITCHPG; + mpp->action = mpp->action == ACT_RENAME ? ACT_SWITCHPG_RENAME : + ACT_SWITCHPG; condlog(3, "%s: set ACT_SWITCHPG (next path group change)", mpp->alias); return; } - mpp->action = ACT_NOTHING; - condlog(3, "%s: set ACT_NOTHING (map unchanged)", - mpp->alias); + if (mpp->action == ACT_NOTHING) + condlog(3, "%s: set ACT_NOTHING (map unchanged)", mpp->alias); return; } @@ -909,6 +906,17 @@ int domap(struct multipath *mpp, char *params, int is_daemon) } } + if (mpp->action == ACT_RENAME || mpp->action == ACT_SWITCHPG_RENAME || + mpp->action == ACT_RELOAD_RENAME || + mpp->action == ACT_RESIZE_RENAME) { + conf = get_multipath_config(); + pthread_cleanup_push(put_multipath_config, conf); + r = dm_rename(mpp->alias_old, mpp->alias, + conf->partition_delim, mpp->skip_kpartx); + pthread_cleanup_pop(1); + if (r == DOMAP_FAIL) + return r; + } switch (mpp->action) { case ACT_REJECT: case ACT_NOTHING: @@ -916,6 +924,7 @@ int domap(struct multipath *mpp, char *params, int is_daemon) return DOMAP_EXIST; case ACT_SWITCHPG: + case ACT_SWITCHPG_RENAME: dm_switchgroup(mpp->alias, mpp->bestpg); /* * we may have avoided reinstating paths because there where in @@ -942,6 +951,7 @@ int domap(struct multipath *mpp, char *params, int is_daemon) break; case ACT_RELOAD: + case ACT_RELOAD_RENAME: sysfs_set_max_sectors_kb(mpp, 1); if (mpp->ghost_delay_tick > 0 && pathcount(mpp, PATH_UP)) mpp->ghost_delay_tick = 0; @@ -949,6 +959,7 @@ int domap(struct multipath *mpp, char *params, int is_daemon) break; case ACT_RESIZE: + case ACT_RESIZE_RENAME: sysfs_set_max_sectors_kb(mpp, 1); if (mpp->ghost_delay_tick > 0 && pathcount(mpp, PATH_UP)) mpp->ghost_delay_tick = 0; @@ -956,29 +967,10 @@ int domap(struct multipath *mpp, char *params, int is_daemon) break; case ACT_RENAME: - conf = get_multipath_config(); - pthread_cleanup_push(put_multipath_config, conf); - r = dm_rename(mpp->alias_old, mpp->alias, - conf->partition_delim, mpp->skip_kpartx); - pthread_cleanup_pop(1); - break; - - case ACT_FORCERENAME: - conf = get_multipath_config(); - pthread_cleanup_push(put_multipath_config, conf); - r = dm_rename(mpp->alias_old, mpp->alias, - conf->partition_delim, mpp->skip_kpartx); - pthread_cleanup_pop(1); - if (r) { - sysfs_set_max_sectors_kb(mpp, 1); - if (mpp->ghost_delay_tick > 0 && - pathcount(mpp, PATH_UP)) - mpp->ghost_delay_tick = 0; - r = dm_addmap_reload(mpp, params, 0); - } break; default: + r = DOMAP_FAIL; break; } diff --git a/libmultipath/configure.h b/libmultipath/configure.h index 2bf73e65..9d935db3 100644 --- a/libmultipath/configure.h +++ b/libmultipath/configure.h @@ -18,9 +18,11 @@ enum actions { ACT_RENAME, ACT_CREATE, ACT_RESIZE, - ACT_FORCERENAME, + ACT_RELOAD_RENAME, ACT_DRY_RUN, ACT_IMPOSSIBLE, + ACT_RESIZE_RENAME, + ACT_SWITCHPG_RENAME, }; /*