Received: by 2002:ac0:a5a6:0:0:0:0:0 with SMTP id m35-v6csp1335257imm; Thu, 23 Aug 2018 01:01:52 -0700 (PDT) X-Google-Smtp-Source: AA+uWPyWPC5iyCay4pzOmwGuEB73jqfAoinONHgjQwXtMRgmdPnYZ198AWaxXv7cNXQql8sHKhrE X-Received: by 2002:a63:f309:: with SMTP id l9-v6mr53476298pgh.369.1535011312163; Thu, 23 Aug 2018 01:01:52 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1535011312; cv=none; d=google.com; s=arc-20160816; b=R2v0Am9chfcGkhtjPITRkhH3mHt/yK9J+eoOG3/ZW2i8wX5YJfcWrjk0zQPN9lpehc iNBYweixTr0I6tCUXJ/iBMYUFcow989z383HEUZhAOo4uBam2AVYcWkRHp9fcuLqdUSz Yxxtw2gC2n0hK/kVB0lJEoOWe2w5bq6j2qmqCOQTpGv/nTXxIILvkEWQn2KJvD8RcEBj ogGzIAyUlBzO8+yBh98SIdatzfD8R6TKnovLC4OKyJpKZI3cVS/Iua8fJUyZ113gOum0 zDpTrgzS/yBaNjWCYam6fX5Nh3J7H5xFwuY2blODsgEswNMgGajazY95y/4LGeofKutR mSZA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:user-agent:references :in-reply-to:message-id:date:subject:cc:to:from :arc-authentication-results; bh=iZhfE785xsJvg2OuzEzgk1zhpw6iMpIA0esb12Zd8wc=; b=rX3ndpPAMpt01EhEOTunOCDbyiykv1qZfz0HT7mMHrA+iHF3KAyQU68Luh/bbkZyqf EkkI1jo5eaTO8NSOEyeAFoBW9UZ5tiTRL9YkvYisSS38y7gVg7YseCa64sRtGZfrE1OW rnRZugmgv7s+U+dX0QVCODnVjkOW3W205Y5z1Z3fnt2Z33GXuyIAsZgzxwqT/SCrzmaL 8R71acYYMqBbgY3vqN3NlHBV4e+GuWW9TVjDDARi2kCiYKzKyzWTI3ytf7xXrf2TjB2x NvfLiiT3/HLE0Gfapf1+WZA/uUan0SSi99QPQUX56qmPVoNtaRjIQ/JkkjW1dYDbQuuB 4nRA== ARC-Authentication-Results: i=1; mx.google.com; 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 a6-v6si3656007plz.227.2018.08.23.01.01.37; Thu, 23 Aug 2018 01:01:52 -0700 (PDT) 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; 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 S1728426AbeHWL1o (ORCPT + 99 others); Thu, 23 Aug 2018 07:27:44 -0400 Received: from mail.linuxfoundation.org ([140.211.169.12]:41992 "EHLO mail.linuxfoundation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726836AbeHWL1n (ORCPT ); Thu, 23 Aug 2018 07:27:43 -0400 Received: from localhost (5355525A.cm-6-6b.dynamic.ziggo.nl [83.85.82.90]) by mail.linuxfoundation.org (Postfix) with ESMTPSA id E92B7ACC; Thu, 23 Aug 2018 07:59:19 +0000 (UTC) From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Alex Chen , Alex Wu , Chung-Chiang Cheng , BingJing Chang , Shaohua Li , Sasha Levin Subject: [PATCH 4.4 33/79] md/raid10: fix that replacement cannot complete recovery after reassemble Date: Thu, 23 Aug 2018 09:53:09 +0200 Message-Id: <20180823074920.875469452@linuxfoundation.org> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20180823074918.641878835@linuxfoundation.org> References: <20180823074918.641878835@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 4.4-stable review patch. If anyone has any objections, please let me know. ------------------ From: BingJing Chang [ Upstream commit bda3153998f3eb2cafa4a6311971143628eacdbc ] During assemble, the spare marked for replacement is not checked. conf->fullsync cannot be updated to be 1. As a result, recovery will treat it as a clean array. All recovering sectors are skipped. Original device is replaced with the not-recovered spare. mdadm -C /dev/md0 -l10 -n4 -pn2 /dev/loop[0123] mdadm /dev/md0 -a /dev/loop4 mdadm /dev/md0 --replace /dev/loop0 mdadm -S /dev/md0 # stop array during recovery mdadm -A /dev/md0 /dev/loop[01234] After reassemble, you can see recovery go on, but it completes immediately. In fact, recovery is not actually processed. To solve this problem, we just add the missing logics for replacment spares. (In raid1.c or raid5.c, they have already been checked.) Reported-by: Alex Chen Reviewed-by: Alex Wu Reviewed-by: Chung-Chiang Cheng Signed-off-by: BingJing Chang Signed-off-by: Shaohua Li Signed-off-by: Sasha Levin Signed-off-by: Greg Kroah-Hartman --- drivers/md/raid10.c | 7 +++++++ 1 file changed, 7 insertions(+) --- a/drivers/md/raid10.c +++ b/drivers/md/raid10.c @@ -3691,6 +3691,13 @@ static int run(struct mddev *mddev) disk->rdev->saved_raid_disk < 0) conf->fullsync = 1; } + + if (disk->replacement && + !test_bit(In_sync, &disk->replacement->flags) && + disk->replacement->saved_raid_disk < 0) { + conf->fullsync = 1; + } + disk->recovery_disabled = mddev->recovery_disabled - 1; }