From patchwork Fri Mar 18 22:33:35 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Martin Wilck X-Patchwork-Id: 12785972 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 84882C43217 for ; Fri, 18 Mar 2022 22:34:06 +0000 (UTC) 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-657-0Y8NXhFRNvav-tzIKp691A-1; Fri, 18 Mar 2022 18:34:02 -0400 X-MC-Unique: 0Y8NXhFRNvav-tzIKp691A-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 775F31044562; Fri, 18 Mar 2022 22:34:00 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id 64DFE145B978; Fri, 18 Mar 2022 22:34:00 +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 8F182196419C; Fri, 18 Mar 2022 22:33:57 +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 5AEA1195355A for ; Fri, 18 Mar 2022 22:33:54 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id 3656F40FF415; Fri, 18 Mar 2022 22:33:54 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast09.extmail.prod.ext.rdu2.redhat.com [10.11.55.25]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 324F840FF40F for ; Fri, 18 Mar 2022 22:33:54 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-1.mimecast.com [207.211.31.81]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 035F0296A626 for ; Fri, 18 Mar 2022 22:33:54 +0000 (UTC) Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.220.29]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-153-L0IqzzCOOC2XLXtrZyubFA-1; Fri, 18 Mar 2022 18:33:52 -0400 X-MC-Unique: L0IqzzCOOC2XLXtrZyubFA-1 Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by smtp-out2.suse.de (Postfix) with ESMTPS id 90B7A1F393; Fri, 18 Mar 2022 22:33:50 +0000 (UTC) Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by imap2.suse-dmz.suse.de (Postfix) with ESMTPS id 54EEA132D4; Fri, 18 Mar 2022 22:33:50 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id +G7WEs4INWLSdwAAMHmgww (envelope-from ); Fri, 18 Mar 2022 22:33:50 +0000 From: mwilck@suse.com To: Christophe Varoqui , Benjamin Marzinski , Guozhonghua Date: Fri, 18 Mar 2022 23:33:35 +0100 Message-Id: <20220318223339.4226-8-mwilck@suse.com> In-Reply-To: <20220318223339.4226-1-mwilck@suse.com> References: <20220318223339.4226-1-mwilck@suse.com> MIME-Version: 1.0 X-Mimecast-Impersonation-Protect: Policy=CLT - Impersonation Protection Definition; Similar Internal Domain=false; Similar Monitored External Domain=false; Custom External Domain=false; Mimecast External Domain=false; Newly Observed Domain=false; Internal User Name=false; Custom Display Name List=false; Reply-to Address Mismatch=false; Targeted Threat Dictionary=false; Mimecast Threat Dictionary=false; Custom Threat Dictionary=false X-Scanned-By: MIMEDefang 2.84 on 10.11.54.2 Subject: [dm-devel] [PATCH v2 07/11] multipathd: use remove_map_callback for delayed reconfigure 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: dm-devel@redhat.com, Martin Wilck Errors-To: dm-devel-bounces@redhat.com Sender: "dm-devel" X-Scanned-By: MIMEDefang 2.85 on 10.11.54.7 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=dm-devel-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com From: Martin Wilck If multipathd needs to delay reconfigure() because it's waiting for a map creation uevent, it can happen that child() isn't woken up if the map being waited for is removed before the uevent arrives. Fix this by unblocking reconfigure() with the remove_map_callback() function. Signed-off-by: Martin Wilck Reviewed-by: Benjamin Marzinski --- multipathd/main.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/multipathd/main.c b/multipathd/main.c index f3b8eb4..4721cd8 100644 --- a/multipathd/main.c +++ b/multipathd/main.c @@ -319,6 +319,17 @@ static bool unblock_reconfigure(void) return was_delayed; } +/* + * Make sure child() is woken up when a map is removed that multipathd + * is currently waiting for. + * Overrides libmultipath's weak symbol by the same name + */ +void remove_map_callback(struct multipath *mpp) +{ + if (mpp->wait_for_udev > 0) + unblock_reconfigure(); +} + void schedule_reconfigure(enum force_reload_types requested_type) { pthread_mutex_lock(&config_lock);