Received: by 2002:a05:7412:251c:b0:e2:908c:2ebd with SMTP id w28csp1740578rda; Tue, 24 Oct 2023 01:33:39 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFCd70LFSBZBHDVPFA5dcg8o5b6gPVujCR47bTG8cLg+GSKimhh1s8kE6UyTNs4JjrUqeb+ X-Received: by 2002:a17:90a:9f06:b0:27d:a015:a783 with SMTP id n6-20020a17090a9f0600b0027da015a783mr8492951pjp.35.1698136418937; Tue, 24 Oct 2023 01:33:38 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1698136418; cv=none; d=google.com; s=arc-20160816; b=il5iZRRL8njCQtwoBTFk+e2B9g0xOPw75WFI90yQJ9SobtQoXRzCrK6dhmoQdkgVUV Gw17JFD8p/SBZ1830LZ9itFLSGbznuzJFkaHpC3lduDtFxZLuGUybeOntakQtmnojckk uh/ngVEiJHcIo/PPxqa7bGMLqzO8CcnMaNy3jr/sr88JadfcM1j0HKQwLuaQF1vZr7iu pqTt+/gkFBosx5xqFw824J0SzFFUQAXH+ktxUPUsVX6Z0Mnf7yMaD4Ixpu2uazzCYiRp y8FAtIRPMAfc7KZwUr7FBNM7mM74jl3nubDi4GNNbzBbAvnk4JBtIHzGt7U7/sdqnHQ7 n72A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=r3L72Q2C0A6XyhsC7UMGOLSZK5Azm/i+GpPRU3MZq4Q=; fh=W1ujNbDikRM6mL+MA7cZ93eipzimk+g+Mb7QYnlff5s=; b=Tlh8ktL7kx71tBi1Rfz1uFUjcGLbScwjhiZdcJ09W3v9S2UzbEhBxqcQYM/97R+TB6 5zchyqbvhpwQK2Qnjn4UljEYr7/Q5j740/oPKRIozl1la0kEy7yi4znCm+SDenkyGqww FfLRwaPkmP9NlcUoooVz0mv0x3S88JKgW2tlwOOywTYD8jN090sE8t1gInfoP3VnPJ3a T75Bgkx+qypouQBA2JvS+hz8yQfG+NscOhsmRS7wQRTtBTWhuoB9eMpkQY56Z8CvTpuS GIDaWs+q8u/dIFjTN0ZJSzmbmkrKO9v8Rrvbnv6BrQ6ziNLagKciHx1Qu3N6jfttpgYX elfw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@bytedance.com header.s=google header.b=kuVRWVg+; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.33 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=bytedance.com Return-Path: Received: from lipwig.vger.email (lipwig.vger.email. [23.128.96.33]) by mx.google.com with ESMTPS id oo11-20020a17090b1c8b00b00273f1cd73b2si8447520pjb.75.2023.10.24.01.33.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 24 Oct 2023 01:33:38 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.33 as permitted sender) client-ip=23.128.96.33; Authentication-Results: mx.google.com; dkim=pass header.i=@bytedance.com header.s=google header.b=kuVRWVg+; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.33 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=bytedance.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by lipwig.vger.email (Postfix) with ESMTP id 96DBA80B180D; Tue, 24 Oct 2023 01:33:36 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at lipwig.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233904AbjJXId2 (ORCPT + 99 others); Tue, 24 Oct 2023 04:33:28 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55294 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232620AbjJXId0 (ORCPT ); Tue, 24 Oct 2023 04:33:26 -0400 Received: from mail-pf1-x42e.google.com (mail-pf1-x42e.google.com [IPv6:2607:f8b0:4864:20::42e]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 54E4F120 for ; Tue, 24 Oct 2023 01:33:24 -0700 (PDT) Received: by mail-pf1-x42e.google.com with SMTP id d2e1a72fcca58-6b36e1fcea0so3271569b3a.1 for ; Tue, 24 Oct 2023 01:33:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bytedance.com; s=google; t=1698136404; x=1698741204; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=r3L72Q2C0A6XyhsC7UMGOLSZK5Azm/i+GpPRU3MZq4Q=; b=kuVRWVg+GOfFDNXgWomsTeaxeDK5DweWacq3Eh7wQKXo50OjyMnBfSUMh2r9xGvEfT 5cOPGlpVkPwNjL5sT+eqGivC285OAWO8LyWrQejCOA69F4FNVQSJZesTTLXPm5Z7jVf0 83RE/i4wmr4jYUpiwAG5MjzsexAlzEWSxlHjM7teRNWIqujqCbSdIzKR61K71/dOJOXm Ezu6Uj0oBQqxu7nSaliDAlNU2sROr908almnzcXk7xG/Hbj5dCZiS/sDebWuYuaDGMQh IwWnYpTQWHDBYu9DMf9ChpeGRgyLtAAncNwBf4dpxn3UARsGA4r93f7Mbmj6w+OyVbZW Ubeg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1698136404; x=1698741204; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=r3L72Q2C0A6XyhsC7UMGOLSZK5Azm/i+GpPRU3MZq4Q=; b=BNYfmdconYl863i4K598x44j7q7naRViVC7lvn4vym6O9AtDxyeVEmBPTlSWdZQrEw k8/Mqd3wdrKwEY+t/xAmxMINr0r+UjoGHObEGXq9YcqsIb3/Sce2Fr7tDBo+huDKEyd3 c+UlWb3esqgurE/5LCB46xmQ1vvJsWZZCpbMR24NhofGdkuK+fA+d3LN0k56BpWV5VBu YT89JkErKN0OM02PsGbkLF5gRLSTIWcDXJWY3+60eXbgR9PsWCbz8G8yDT9Rbp4G10eH W0M4NnReGTSQ2f8+TrBdik77fieHxRC6TuRm6MFxeHegfLnIekRlQjH8IoH1BuZRA7jW SHVQ== X-Gm-Message-State: AOJu0YxbmlmhrAKpFwiqhXHppIQWbucDteg2utf7V+mEOJMv0Fptvei7 uGfakq1pkWWahsvZlCA6+4hRfw== X-Received: by 2002:a05:6a21:a108:b0:17a:e79c:c5ab with SMTP id aq8-20020a056a21a10800b0017ae79cc5abmr1692896pzc.48.1698136403796; Tue, 24 Oct 2023 01:33:23 -0700 (PDT) Received: from GL4FX4PXWL.bytedance.net ([203.208.167.147]) by smtp.gmail.com with ESMTPSA id y21-20020aa79af5000000b0068be348e35fsm7236977pfp.166.2023.10.24.01.33.17 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Tue, 24 Oct 2023 01:33:23 -0700 (PDT) From: Peng Zhang To: Liam.Howlett@oracle.com, corbet@lwn.net, akpm@linux-foundation.org, willy@infradead.org, brauner@kernel.org, surenb@google.com, michael.christie@oracle.com, mjguzik@gmail.com, mathieu.desnoyers@efficios.com, npiggin@gmail.com, peterz@infradead.org, oliver.sang@intel.com, mst@redhat.com Cc: zhangpeng.00@bytedance.com, maple-tree@lists.infradead.org, linux-mm@kvack.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org Subject: [PATCH v6 02/10] maple_tree: Introduce {mtree,mas}_lock_nested() Date: Tue, 24 Oct 2023 16:32:50 +0800 Message-Id: <20231024083258.65750-3-zhangpeng.00@bytedance.com> X-Mailer: git-send-email 2.39.3 (Apple Git-145) In-Reply-To: <20231024083258.65750-1-zhangpeng.00@bytedance.com> References: <20231024083258.65750-1-zhangpeng.00@bytedance.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-0.8 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lipwig.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (lipwig.vger.email [0.0.0.0]); Tue, 24 Oct 2023 01:33:36 -0700 (PDT) In some cases, nested locks may be needed, so {mtree,mas}_lock_nested is introduced. For example, when duplicating maple tree, we need to hold the locks of two trees, in which case nested locks are needed. At the same time, add the definition of spin_lock_nested() in tools for testing. Signed-off-by: Peng Zhang --- include/linux/maple_tree.h | 4 ++++ tools/include/linux/spinlock.h | 1 + 2 files changed, 5 insertions(+) diff --git a/include/linux/maple_tree.h b/include/linux/maple_tree.h index d01e850b570f..f91dbc7fe091 100644 --- a/include/linux/maple_tree.h +++ b/include/linux/maple_tree.h @@ -256,6 +256,8 @@ struct maple_tree { struct maple_tree name = MTREE_INIT(name, 0) #define mtree_lock(mt) spin_lock((&(mt)->ma_lock)) +#define mtree_lock_nested(mas, subclass) \ + spin_lock_nested((&(mt)->ma_lock), subclass) #define mtree_unlock(mt) spin_unlock((&(mt)->ma_lock)) /* @@ -406,6 +408,8 @@ struct ma_wr_state { }; #define mas_lock(mas) spin_lock(&((mas)->tree->ma_lock)) +#define mas_lock_nested(mas, subclass) \ + spin_lock_nested(&((mas)->tree->ma_lock), subclass) #define mas_unlock(mas) spin_unlock(&((mas)->tree->ma_lock)) diff --git a/tools/include/linux/spinlock.h b/tools/include/linux/spinlock.h index 622266b197d0..a6cdf25b6b9d 100644 --- a/tools/include/linux/spinlock.h +++ b/tools/include/linux/spinlock.h @@ -11,6 +11,7 @@ #define spin_lock_init(x) pthread_mutex_init(x, NULL) #define spin_lock(x) pthread_mutex_lock(x) +#define spin_lock_nested(x, subclass) pthread_mutex_lock(x) #define spin_unlock(x) pthread_mutex_unlock(x) #define spin_lock_bh(x) pthread_mutex_lock(x) #define spin_unlock_bh(x) pthread_mutex_unlock(x) -- 2.20.1