From patchwork Tue Oct 24 08:32:50 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peng Zhang X-Patchwork-Id: 13434036 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 79E45C07545 for ; Tue, 24 Oct 2023 08:33:27 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 1A0F36B019B; Tue, 24 Oct 2023 04:33:27 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 12A506B019C; Tue, 24 Oct 2023 04:33:27 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id F0CE76B019D; Tue, 24 Oct 2023 04:33:26 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id DC0D36B019B for ; Tue, 24 Oct 2023 04:33:26 -0400 (EDT) Received: from smtpin29.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id B5741C0DA7 for ; Tue, 24 Oct 2023 08:33:26 +0000 (UTC) X-FDA: 81379690812.29.8ADAFA4 Received: from mail-pg1-f177.google.com (mail-pg1-f177.google.com [209.85.215.177]) by imf21.hostedemail.com (Postfix) with ESMTP id E0C2B1C0009 for ; Tue, 24 Oct 2023 08:33:24 +0000 (UTC) Authentication-Results: imf21.hostedemail.com; dkim=pass header.d=bytedance.com header.s=google header.b=CsDg1x+b; dmarc=pass (policy=quarantine) header.from=bytedance.com; spf=pass (imf21.hostedemail.com: domain of zhangpeng.00@bytedance.com designates 209.85.215.177 as permitted sender) smtp.mailfrom=zhangpeng.00@bytedance.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1698136404; a=rsa-sha256; cv=none; b=DSkd83RoaFgaf+2dq72h4a5b5x4jK85n4il8iyRJ8n2C24L9SHj5xtsmxRDlJ3b6e0umO7 ncP9HicR+pUEcdZsJ0fyZKjGaGzQnV+1reVfK4+jOuOD30EPW1I+Y2BCyGHNk5xWPE3pr2 orbi6qT3T27DTzAdbIgFVjVqcyOlvHE= ARC-Authentication-Results: i=1; imf21.hostedemail.com; dkim=pass header.d=bytedance.com header.s=google header.b=CsDg1x+b; dmarc=pass (policy=quarantine) header.from=bytedance.com; spf=pass (imf21.hostedemail.com: domain of zhangpeng.00@bytedance.com designates 209.85.215.177 as permitted sender) smtp.mailfrom=zhangpeng.00@bytedance.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1698136404; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=r3L72Q2C0A6XyhsC7UMGOLSZK5Azm/i+GpPRU3MZq4Q=; b=0zbWsMLZgPiFvam9C2htkH4jfsW3fYF7wd4ETkNcUpaEO+MZNhiVobilQ3/Wjd0OVJCM+B tq62QBS8hveD5hEaTV6FXtK2TmFnuB5ox8MxDfZz1VwGmkl/wxA8d8BWNf+ZtEBTWO1mmZ +LYGvQwKY5HBxogs6hN87xZCBtTReA4= Received: by mail-pg1-f177.google.com with SMTP id 41be03b00d2f7-5b8ece0f440so207194a12.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=kvack.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=CsDg1x+bIXCmKVgU+3nAeaXjrjfl+e2LsT/qCvnGqAJ1B3vKIUtUne8cYHfyZr4qJf B8Ik9Aj+6iUZQSseZl9hZLm/tA1S9Alduiqr0XHanNfMYeeAWzpw8eSUCz5nP0VYFJZG L2gR189qOJVXMOarR76WZJ6NSbepz4NcL0YApltKc8Bnfo/MSKw9fGU5zP54z7kMceaJ aBCIcokGyCdISxPQkmR0/E1uSorwG7gH2OkeDTGU/L1Z7X1tCr5CWe9mcq/RHfg3z/MU hdYmdpf/rWmcak2d4akrDAPoZvU+3IiOtkr8G+oiK/mndyJSY99170T/PJuolCXREoZw CjjQ== 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=slq80IWF023LppLW08obY7Y/UeHUz1Dilmobq0/zQc2rWKpUTXl7+KggLkfS8PVsGa P+gZmcz+Jg6JNf4d/n6R+hLAeOO/5QYiHXolSQLIncxN4CiZDaFy0t7swB8LMMV0glFS IK2+oHpFVzjfkKnr7lXf6KJagwWHqwLl8riAwAQ8xL3JBsZE2+uZzDPR9oy7baq/u2Ff 5IQfIGLttngjlh4aQWDVYuZlsTh4WIWF8xOXDunswyYzZ0BkqZKc4LmTQiifV6mfj4Py 6Ez6f9k88Vw+z8WMU0Xm4JGN04zfMq4/8uMxIUwzpZAelW+jWhc7BPrkwlBQQXLMK7fV RdEw== X-Gm-Message-State: AOJu0YxWpoAjIXGaK3Z5whqFxBroGrftPCsW5Oiq/MWUxvmfLR4Fy+3K +BDQPcsJJUNec8IfMyODfXLzKg== X-Google-Smtp-Source: AGHT+IFRF2d7NaEqXWWjz92Xh2LjjQSzD8bGo9Dbzm/HViEErv6yA9g/lWFc+D2a7eTh24RKV68/bg== 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 X-Rspam-User: X-Rspamd-Server: rspam06 X-Rspamd-Queue-Id: E0C2B1C0009 X-Stat-Signature: pacxckkpdamiadcfzy48r8k9dxa5j71t X-HE-Tag: 1698136404-268375 X-HE-Meta: U2FsdGVkX19LiEDx5EvCGVgyxnmppaBLK91EV2TpUTqYIrAGYj/VNuaPRuGQeIwli5Lqd9SKH6B+C4qJSLHE/eJtNI+xjhhFyLpOLYO14nNWsfpighNhbIHTL7gieJwVgLblkL4QirJ4Az4wLY/q+UjPZX7NRbMu2xJngPwyNNztfSm+rH/89+5oDocytzQd6FvjQs1I4L+r7bRmjIZL4x+3tR6JUhh3rU7B7PJ5FFc+6z0pYZeJHkV2OF0yAxrrMpQZJtUZP1bJLvUZg5glG6fTcZ8T+dJpybgR/gPLECm2BKGBNizu5Ch4mP/qY3P5CkjMoznUq/7A3SwHbI6ORssymA24KsnpszIQ5iYCgdpgvi/d8ZrZktarKETe1c1PIKR22gjBex7mvUS4K3LBTH/DGB1bzD9WMuaPvVMWLLxUIZYDr5IAA0kI2oTmjLkiu8kG7TYnAq3jckudJEhcO5zzvtS175ZSUOTKa69Ysk1pHgSouV/JuMNl68ISwSD76mg7TjRZUZIDB9CUMGxHu+3xrBPnixcXxBcvemXt+voZ6RiGVQDw3kurPRD9wEXm5MxHVwhnsfnqucr2p1+o/s78f+gyLxB1T4XxOZPcykiBNWKZzPr1D65LM4YhLokUEjglsyUCLOTr+5IDi5dYKUysYCC3FtP/nHmmFP5Ojx+w54eDlBwEk2v7ehuF6AlStzvclrm15syFR73C2qtsZBzBmUgIuBIy5fG6SDa0dExUzTqqtl01qQWWdWZCivgJblttSzS8sXUEKjfnkpkYSH/deVlrxB0a83EIMn3sqAA9M/xQ76uCz+FqK2idn13HKEiv6EiuiL77syXXMhKE+1dOr0WMFiSkea8FHcF/WjmXAfmM9Sj0kse2ZSSeeEztn4zo8jbR7qN84EXgaW+xFBl2PzgXQTBGnjMymHGvhPffl9ztrVv5YExcxzZXftcx4C/u8lYGh0eJVL+8z5I HWR3nPWg Im8OO/zVn2cqL/t+CXc+Ukj9uHdTwFw+QQHPsflPCdW23//Atwmaz1KHmpdhrC/YWjdr/JXN5QlSBJ6B1VbwKsEhxK57BtBYKZbfS8OE0KLht1h/xqQyo2AYqjx7VLO3mSRtuxnOTVw0RIAA4jLhClPt2M95DkdlycYZLcf9wdXA83A5VRuysz7xdFnUuazYAQaSnQ1ZcriGC/rZC9bXDwttYa/BQuIMhsE2Nm9oWDPsI/t5OVdAfh+LCsqolLaCaTG/7wL8FAmfIebApzjg0SjEup9OFkqrdopEjMO5JlrSzxTbP9C7nWhNhmi3CqlUPB/OKB+jGJqPc9V3F0FWizka+2aQmf92kAB/sxeuPNA3lKPt4a1tgF5FQvplmm2/zJFLRIoRYAiDZOeanXyDdBuERcpE7fFTImr+HVzncOecVmD12Mibma1qqOR2PhngrvsPLrPE6B5t3yA1wcqY/LBp8uA== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000012, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: 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)