Received: by 2002:a17:90a:88:0:0:0:0 with SMTP id a8csp50811pja; Fri, 22 Nov 2019 03:19:13 -0800 (PST) X-Google-Smtp-Source: APXvYqymn5CEaqDO/vm2iLKfq9suOLADhRdvqUUhtVeOphApdVC4bKdZQJ2SPgioEK5tRQKDjI/F X-Received: by 2002:a05:6402:205c:: with SMTP id bc28mr381450edb.124.1574421553775; Fri, 22 Nov 2019 03:19:13 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1574421553; cv=none; d=google.com; s=arc-20160816; b=Wm8FGrVjDAIuPJd+xoI2LA162t877OYfdOEbtPuNKFH7my/gkLatqcfrcYkWUoGgFW ecwm2aYAzScpK3fKY4D7g2Irr7F3me+oJ86fd1Skizkyby8oEvOq2ZkZbUSgC5BHScA2 QJMicXnt06OgJdHsh0kfmjX29UTVgnadTC8miNVBvsYcdj04gDUXev3okIbe6+EoPuNP EuJThBQvz2E/x4tyK9WHYVvvPtACN8yIqOhOYgGJAdllrujvy6NPVOutVl76DH788DDR eojXR6g0t7ilmg+z9ObTypwCvS0b2oGsDgndc3TuK6SJ4x3xXiewwRgKbtoLQlRsDxJB WezQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=xI7+3/jYnGr5t4XAq4uQWwag97ciUiUXJJKKxHgRMOk=; b=OltfmpryIAbteX6KrUK52YUzdofVZtRcEvBFrRr6cMMXlx7ISVRmG7vAsvI0CyoOvl ydP9z7iJ+HzlAitGnaAeFehSRIFdLWWPR/SGVPsNLqcqKCQzaeKVtuTgIQZlokKIwob4 dCqZ1lgBB1oC+NmMN8upO/MoXMghgiztFAGOUhSCvgFgqQ7vZ1Crj33b2sXHzioQLhY1 sdJ+UvVa6L+2ycGLzGkBuTibjCdMMaOMVs7RZYOG8H7QDNCMkC7itqnhBAmJ6ZlrdCeU A/OHgGGTY38HR1GbOEoc1qlAwZUo63iv7t0F8G+qtHBcM74C50MqVbcnUpsYBxgaQJ+d GcvQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=JLgz0Qhq; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id s46si5233014edd.336.2019.11.22.03.18.50; Fri, 22 Nov 2019 03:19:13 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=JLgz0Qhq; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730100AbfKVKvw (ORCPT + 99 others); Fri, 22 Nov 2019 05:51:52 -0500 Received: from mail.kernel.org ([198.145.29.99]:34842 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729281AbfKVKvr (ORCPT ); Fri, 22 Nov 2019 05:51:47 -0500 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 542A32073B; Fri, 22 Nov 2019 10:51:46 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1574419906; bh=JzuVXnbANtHScJdB3rqEe/ae8c7To3o2P+Dk19lLAnE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=JLgz0QhqwwKBUew4u+TTYNEKbmzpfN/uGQ6JtA7eR3y9O1906HgYEZU4StCXyr8Od 9RydVAzbrPk3HlBwarcuUpw9vaPiT2qew5sLOsf7E21qS2IArIac+KeGJWWIoYOpTH Ik7ouLOLU5Js42VkOfw1ue9+T3vI9pQCQ8lgmKps= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Jeff Mahoney , NeilBrown , Shaohua Li , Sasha Levin Subject: [PATCH 4.14 049/122] md: allow metadata updates while suspending an array - fix Date: Fri, 22 Nov 2019 11:28:22 +0100 Message-Id: <20191122100757.092527726@linuxfoundation.org> X-Mailer: git-send-email 2.24.0 In-Reply-To: <20191122100722.177052205@linuxfoundation.org> References: <20191122100722.177052205@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: NeilBrown [ Upstream commit 059421e041eb461fb2b3e81c9adaec18ef03ca3c ] Commit 35bfc52187f6 ("md: allow metadata update while suspending.") added support for allowing md_check_recovery() to still perform metadata updates while the array is entering the 'suspended' state. This is needed to allow the processes of entering the state to complete. Unfortunately, the patch doesn't really work. The test for "mddev->suspended" at the start of md_check_recovery() means that the function doesn't try to do anything at all while entering suspend. This patch moves the code of updating the metadata while suspending to *before* the test on mddev->suspended. Reported-by: Jeff Mahoney Fixes: 35bfc52187f6 ("md: allow metadata update while suspending.") Signed-off-by: NeilBrown Signed-off-by: Shaohua Li Signed-off-by: Sasha Levin --- drivers/md/md.c | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/drivers/md/md.c b/drivers/md/md.c index e529cef5483a8..b942c74f1ce83 100644 --- a/drivers/md/md.c +++ b/drivers/md/md.c @@ -8736,6 +8736,18 @@ static void md_start_sync(struct work_struct *ws) */ void md_check_recovery(struct mddev *mddev) { + if (test_bit(MD_ALLOW_SB_UPDATE, &mddev->flags) && mddev->sb_flags) { + /* Write superblock - thread that called mddev_suspend() + * holds reconfig_mutex for us. + */ + set_bit(MD_UPDATING_SB, &mddev->flags); + smp_mb__after_atomic(); + if (test_bit(MD_ALLOW_SB_UPDATE, &mddev->flags)) + md_update_sb(mddev, 0); + clear_bit_unlock(MD_UPDATING_SB, &mddev->flags); + wake_up(&mddev->sb_wait); + } + if (mddev->suspended) return; @@ -8896,16 +8908,6 @@ void md_check_recovery(struct mddev *mddev) unlock: wake_up(&mddev->sb_wait); mddev_unlock(mddev); - } else if (test_bit(MD_ALLOW_SB_UPDATE, &mddev->flags) && mddev->sb_flags) { - /* Write superblock - thread that called mddev_suspend() - * holds reconfig_mutex for us. - */ - set_bit(MD_UPDATING_SB, &mddev->flags); - smp_mb__after_atomic(); - if (test_bit(MD_ALLOW_SB_UPDATE, &mddev->flags)) - md_update_sb(mddev, 0); - clear_bit_unlock(MD_UPDATING_SB, &mddev->flags); - wake_up(&mddev->sb_wait); } } EXPORT_SYMBOL(md_check_recovery); -- 2.20.1