Received: by 2002:a17:90a:88:0:0:0:0 with SMTP id a8csp31624pja; Fri, 22 Nov 2019 03:04:31 -0800 (PST) X-Google-Smtp-Source: APXvYqzTpsNJ4bJIx53ZwJoWS/aFoslHz7on0CthNoRptc8gF0eqpuCgWr8Lz3dfXvMTqZ00J7D8 X-Received: by 2002:aa7:d0c1:: with SMTP id u1mr314112edo.27.1574420671499; Fri, 22 Nov 2019 03:04:31 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1574420671; cv=none; d=google.com; s=arc-20160816; b=bkXWsQ0ChrvcrCSbUVOKfHoBkEFt7+rITzA/reuUDqksC/fjmMnubtvMdC80owD14v 4CQmUFkD8iN6r9bj9HbPDaqcTaJt2w4tbcsd0Btrbc+tVtsKeyejOdlcdOhinwTiwBkE u9mIIcq1jPLSlEUuXqxjGiihVIiBD0lB7OrI4L8hJvXVX5xmvBeoz6iRVrGlb2SfUpkT Bmzc7T28HDzLkTvi4zx/WT7asCNLtG0jIo55Y3vtumu3giEFpkQ4Fsxx1oN9ywDUjRCI a4ZFZtUjDj4mpc97J9Whbl9lNRYKsoEnbOGCEo5QRL1ctH4na6K6Tc/WwJH+tuvROXrB T7rw== 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=mZ5Ued3A4rmP2uMM0mkZhTE42FgADEXCuBfxwdYaIqk=; b=e7cjthRpc9nfQRBPyvzvRbzu8xQb0QIbNmy6HUN84bSEqLr2610cQ38XpXUwO/HllD k7H5PnR1ypySLxHVQGMXzv1fj2252/MtMo9YJFj04m7u5XXO4u6Z8e2CNECRAxLLyqWt rHIWSifct5E3ZM1LpMFl/MEUL3EM/SFf0WuTHISxtIdq2wlbXpxfR6V3l/uRdolWKnFH iMvnBPem4Y0T2gO1ImMkYQ60x7RzL6T1pRvP0SUK2jQRRgPy+O1ZNtm5lTBuWC9sKuoF tvTpd9kU1xofvHyg8sXQH5MYJoX80CsGvQEcrUaN9htIpC2FJA3JrCorYC5/8ZVAqXRw Zrlw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=X1gJrn85; 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 g40si4776147edb.369.2019.11.22.03.04.07; Fri, 22 Nov 2019 03:04:31 -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=X1gJrn85; 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 S1730755AbfKVLBa (ORCPT + 99 others); Fri, 22 Nov 2019 06:01:30 -0500 Received: from mail.kernel.org ([198.145.29.99]:54396 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730766AbfKVLB2 (ORCPT ); Fri, 22 Nov 2019 06:01:28 -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 88F2920706; Fri, 22 Nov 2019 11:01:26 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1574420487; bh=SLDHED6xIDXCXATD9sFjZPXRCps2xfzuuQ0qam3yhVM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=X1gJrn85hgpXLZQF1YJaLLVcTRU4adGL1A5VSiITsJDMlNUZ/pafQfGFIYZszIWih 4ybB5TkhTZ9wrl2o+4vaGLT4lAOpFiyTOPhxxRcMJcOZfJ80+k4BpejujLbGmtKVdQ oTHwd9gvXEWfubL6Fgt/jrjQ9j1Is5g3IWbihxwM= 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.19 079/220] md: allow metadata updates while suspending an array - fix Date: Fri, 22 Nov 2019 11:27:24 +0100 Message-Id: <20191122100918.048620714@linuxfoundation.org> X-Mailer: git-send-email 2.24.0 In-Reply-To: <20191122100912.732983531@linuxfoundation.org> References: <20191122100912.732983531@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 a8fbaa384e9ae..2fe4f93d1d7d4 100644 --- a/drivers/md/md.c +++ b/drivers/md/md.c @@ -8778,6 +8778,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; @@ -8938,16 +8950,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