Received: by 2002:a25:683:0:0:0:0:0 with SMTP id 125csp4000007ybg; Sun, 7 Jun 2020 18:02:26 -0700 (PDT) X-Google-Smtp-Source: ABdhPJybMME+9V+cpIH2VFjZ3rSjIzS4ySvMRPFyBgcEp90T3pw3u8vFPqQf3WpzWh8DeD0OpuQT X-Received: by 2002:a17:906:c952:: with SMTP id fw18mr18344515ejb.505.1591578146068; Sun, 07 Jun 2020 18:02:26 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1591578146; cv=none; d=google.com; s=arc-20160816; b=y80ckyxb8qqa9CpR7dXZHpraKOQ0sSa8B8ciL6/upcPo+K6Iq5gIjEiBqzVlzgNg3S 82+rlj/dF26Eo8MhHWA7usAODlaJOmx26r9/hVMmH2sbMGLyEXXT76vZc55ZuRYl5DXL qGK7wQFH2cZSOKWXo+PGbKN+RnT4ITKRJAFpqJyUcazzUiJsi+eh0m+QFTgCfmY1wL96 S5BhHsPkbRzX940EYFFimP6Pkm8r5UsjMQ+CeJvLsx4TrBI7kxbQMuDZ6lH9WflBJOEg lmqOTGOMt3fouc8n0snKFQglDvbjrvR9rAcOGKSzrOfQ5/b1G8nskYixFx3h1SPN5w2L Of4Q== 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 :references:in-reply-to:message-id:date:subject:cc:to:from; bh=XWt0OHLhWZJdoIps6tr6DxmgC57ikZdT1tzzOT2kOdA=; b=o5K8YbW9v2n6yarlbId1jJcDonZIYl7pO/7w+cnfZ/Kbg5t2nNAG50XZXLnvOwbFZl W+ksjjytvXpGT0HsUep8Jy0VY61t4O151PPNjQgvzJoUHRULWCTWdtLBWZvsSFDET9k1 eGD8gYZqRk0TjgXivHBU8Y0xvWumk/neItrkIHPMVps9nTDRKrF3hy+yQwYC4X1YReB5 XxLT1MbcBpiDOJ2oTp5JHmf1D26b4pbEvG8KwnBGcCqaO7havoVNQxAkNU4eiq9vubvX 2JsvRIYSbfWFcTaabQ/hRxJORqTC+FT1IDnovHdbLCfIafaUoPwCJd/0oWPFJTfKtX7W Fisw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id y1si7454757ejq.726.2020.06.07.18.02.04; Sun, 07 Jun 2020 18:02:26 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728046AbgFHA73 (ORCPT + 99 others); Sun, 7 Jun 2020 20:59:29 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58426 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728966AbgFHA6k (ORCPT ); Sun, 7 Jun 2020 20:58:40 -0400 Received: from Galois.linutronix.de (Galois.linutronix.de [IPv6:2a0a:51c0:0:12e:550::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3E260C08C5C3; Sun, 7 Jun 2020 17:58:40 -0700 (PDT) Received: from [5.158.153.53] (helo=debian-buster-darwi.lab.linutronix.de.) by Galois.linutronix.de with esmtpsa (TLS1.2:DHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.80) (envelope-from ) id 1ji67W-0000w0-Gy; Mon, 08 Jun 2020 02:58:34 +0200 From: "Ahmed S. Darwish" To: Peter Zijlstra , Ingo Molnar , Will Deacon Cc: Thomas Gleixner , "Paul E. McKenney" , "Sebastian A. Siewior" , Steven Rostedt , LKML , "Ahmed S. Darwish" , Song Liu , linux-raid@vger.kernel.org Subject: [PATCH v2 13/18] raid5: Use sequence counter with associated spinlock Date: Mon, 8 Jun 2020 02:57:24 +0200 Message-Id: <20200608005729.1874024-14-a.darwish@linutronix.de> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200608005729.1874024-1-a.darwish@linutronix.de> References: <20200519214547.352050-1-a.darwish@linutronix.de> <20200608005729.1874024-1-a.darwish@linutronix.de> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Linutronix-Spam-Score: -1.0 X-Linutronix-Spam-Level: - X-Linutronix-Spam-Status: No , -1.0 points, 5.0 required, ALL_TRUSTED=-1,SHORTCIRCUIT=-0.0001 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org A sequence counter write side critical section must be protected by some form of locking to serialize writers. A plain seqcount_t does not contain the information of which lock must be held when entering a write side critical section. Use the new seqcount_spinlock_t data type, which allows to associate a spinlock with the sequence counter. This enables lockdep to verify that the spinlock used for writer serialization is held when the write side critical section is entered. If lockdep is disabled this lock association is compiled out and has neither storage size nor runtime overhead. Signed-off-by: Ahmed S. Darwish --- drivers/md/raid5.c | 2 +- drivers/md/raid5.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c index ba00e9877f02..69f31c675b58 100644 --- a/drivers/md/raid5.c +++ b/drivers/md/raid5.c @@ -6929,7 +6929,7 @@ static struct r5conf *setup_conf(struct mddev *mddev) } else goto abort; spin_lock_init(&conf->device_lock); - seqcount_init(&conf->gen_lock); + seqcount_spinlock_init(&conf->gen_lock, &conf->device_lock); mutex_init(&conf->cache_size_mutex); init_waitqueue_head(&conf->wait_for_quiescent); init_waitqueue_head(&conf->wait_for_stripe); diff --git a/drivers/md/raid5.h b/drivers/md/raid5.h index f90e0704bed9..a2c9e9e9f5ac 100644 --- a/drivers/md/raid5.h +++ b/drivers/md/raid5.h @@ -589,7 +589,7 @@ struct r5conf { int prev_chunk_sectors; int prev_algo; short generation; /* increments with every reshape */ - seqcount_t gen_lock; /* lock against generation changes */ + seqcount_spinlock_t gen_lock; /* lock against generation changes */ unsigned long reshape_checkpoint; /* Time we last updated * metadata */ long long min_offset_diff; /* minimum difference between -- 2.20.1