Received: by 2002:a17:90a:bc8d:0:0:0:0 with SMTP id x13csp2415456pjr; Tue, 19 May 2020 14:50:09 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxghBfobuKLFhYiDAghPpXfVAZDItnxObNGvDMvOmzQ2zHAOvWrVpGL3FNW0tQG38mskgC6 X-Received: by 2002:a17:906:f1c3:: with SMTP id gx3mr1133093ejb.278.1589925009409; Tue, 19 May 2020 14:50:09 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1589925009; cv=none; d=google.com; s=arc-20160816; b=HsIlWII+SQapfo8u9a8/k23CoLsJIQVOHHwpc0tuaLcEsdwdJmilC0lmosmqsqkWyK 5AYgY8ZN3NM+cvyYFAVNbcpVcTg5E1ZrypyqWj8AH2BwMVInpqhlrYkS1L5vyr03Qzc+ Ag8u7y981NCWQILchRfg/VMpaep8AOo1m8oOlegUsy0sZMN8kBJv7+9VBsfzXJQ/pWJc tSL5unz1nzhDRTfhkX5qezYNg674EnWfjqVPn5y+FrlspvblCYdU172miMU0F7reJtpx SsQdcn7AoLQ5AHbJ7+BzJHS73TRaVXqAKxx+iwAbLO1oCyriuGzDwZ/Ju8eE4WCKo/Wh d2vw== 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=yfiq24t9Gff+dED9/a31AsuVO7lEIT1/KkDjJZD9uaDiCgCvAkwYuUNl/hTX5M91HE 6wD59PQ6+jGmTTldOmCMpXgDDdPjI4bdZwtKeBNUEa/UVlXRTQzJ4+a/S+5jmDle8xGc 7EqJYNEfJpej4spvK/5YotgNYQx40LQI3usW4pg3LT+17f69tLtaXM1aTtvKPM1tESOP SiLZlHe+iZvQKEsP/9G+Fh04qTf09LhpQTc93JUTfvP1FO3EldvZbGvgJSehKJglWIfW R9tZQ4vJ2FGi8+ej5MxNYFWSXJeXszT5+kiKgeXkXmzk0Yh47qjQDYidSpBMaJ6yZbCx OHqA== 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 k29si337794edj.567.2020.05.19.14.49.46; Tue, 19 May 2020 14:50:09 -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 S1728495AbgESVrn (ORCPT + 99 others); Tue, 19 May 2020 17:47:43 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40982 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728436AbgESVrg (ORCPT ); Tue, 19 May 2020 17:47:36 -0400 Received: from Galois.linutronix.de (Galois.linutronix.de [IPv6:2a0a:51c0:0:12e:550::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id BBEAEC08C5C2; Tue, 19 May 2020 14:47:36 -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 1jbA5C-0002uD-Ji; Tue, 19 May 2020 23:47:30 +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 v1 20/25] raid5: Use sequence counter with associated spinlock Date: Tue, 19 May 2020 23:45:42 +0200 Message-Id: <20200519214547.352050-21-a.darwish@linutronix.de> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200519214547.352050-1-a.darwish@linutronix.de> References: <20200519214547.352050-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