From patchwork Mon Oct 9 09:03:12 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peng Zhang X-Patchwork-Id: 13413123 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 3A055E95A91 for ; Mon, 9 Oct 2023 09:03:59 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id CEABF8D0026; Mon, 9 Oct 2023 05:03:58 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id C9AAD8D0001; Mon, 9 Oct 2023 05:03:58 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id B62878D0026; Mon, 9 Oct 2023 05:03:58 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id A3FAF8D0001 for ; Mon, 9 Oct 2023 05:03:58 -0400 (EDT) Received: from smtpin06.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 8402F16019B for ; Mon, 9 Oct 2023 09:03:58 +0000 (UTC) X-FDA: 81325335756.06.A2994A7 Received: from mail-pf1-f177.google.com (mail-pf1-f177.google.com [209.85.210.177]) by imf07.hostedemail.com (Postfix) with ESMTP id B0ED640008 for ; Mon, 9 Oct 2023 09:03:56 +0000 (UTC) Authentication-Results: imf07.hostedemail.com; dkim=pass header.d=bytedance.com header.s=google header.b=MP13Rg63; dmarc=pass (policy=quarantine) header.from=bytedance.com; spf=pass (imf07.hostedemail.com: domain of zhangpeng.00@bytedance.com designates 209.85.210.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=1696842236; 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=dsz3xjLwKM4S2X2XJskd5g4lXkzE6pgJFjNp2oJrr/yoqgTxniOaeNVchl9Vj5gz3hysXC dS2SJbk6kLWq6PcN3UM4sDo11dIJkSp/xN/53JJTTP08xpURN+Pu3Zvw0iPWxwLq24zFsL 5ojD3q05qzlpQHG6WPdSV5rqNjRfnnM= ARC-Authentication-Results: i=1; imf07.hostedemail.com; dkim=pass header.d=bytedance.com header.s=google header.b=MP13Rg63; dmarc=pass (policy=quarantine) header.from=bytedance.com; spf=pass (imf07.hostedemail.com: domain of zhangpeng.00@bytedance.com designates 209.85.210.177 as permitted sender) smtp.mailfrom=zhangpeng.00@bytedance.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1696842236; a=rsa-sha256; cv=none; b=bVJyfRdrHAK8MrSMCBoaPt1SVWbwJA7PCZ38SY+A4r/5ibq+TFRUL6UCAWmtvVNp8AtY7I 3MokDzuGKRRoBGyuKNUJ0ElnUwVe8gC9+W9H9JLJtz5CTXmF1D0seJlTeFikt3xwxXsu/Y Hazrg+2CPLmcbXrxuRdG3pN/wlacw5U= Received: by mail-pf1-f177.google.com with SMTP id d2e1a72fcca58-693375d2028so3845972b3a.2 for ; Mon, 09 Oct 2023 02:03:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bytedance.com; s=google; t=1696842235; x=1697447035; 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=MP13Rg63y69ZViNt+AAUbSEz0FHYNUJ+anu2qXzv1RwlMy6Dx537TDzy35+x81YHA+ 8WbSgTGFPTeD1a4xIyAfy7XWnc3zKy8nVYgWo1bI4oyRrR0mKFehOIsgWR4DpFr6FULc x4Q+TGF/XM1MV6v6k017XGhaf72WA9ubMH3TeS9rASnbQj2PJ5dg5A8knvfUsP0r5GvN IZu7IDjduX3h5+SjWPvcbchBarQ2tdl7N3T0GePG9uq397gMZSJN2o3mGT8nw/VMYG8R rF6vMgJx7cIVoBzi6lJUXNM741vBTdbnKzDrb+nk4Ysf5hhuOkzOLJ2jrQdA2lv6i88B vIPQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1696842235; x=1697447035; 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=MxVNAI1gXkzu6z+nXkyv4mRsdS6P1lh+DbMke+ePgWOQQy/FXJOHwMzPxcBquWXO5b Lywj+IfF1CT1eicxXBFeQ6Wb/xUcLZynrXIyEEIwoSC9V3KWxf3JMKYu/ufQj8/yfEz7 dofMRtqS7H9vSNQO3f/l2Ry9flwkSfqoDurnH37h061bqSkG1QbhAqcYI8hX1O/F3Qny w/Y39i+7Peggz9DiUbW3e45QaEtqOgfNV9SJtPbsECjNsvxRs/ccey25zHhe2zn3uiUy f+pwqTkUaE2x+Upmqww/2ESISqohhhhtYinWm3Da6c6dzW8y9GjiE7nZSuYCjRNqvqPV JXpA== X-Gm-Message-State: AOJu0YyNMsXXfEgu/y1l4myZP3BJj/W9VMXQU52DwWKcVUUdXVu1KvT+ aGXHRABLy3rjjxCkkSBbLRaYXw== X-Google-Smtp-Source: AGHT+IFTziVEGjqko/GY6Y/gf0kzFA12JYrUPiEPy+KRrwJBQ6QE4OFwPoL+CRZrpwt2i9F5PSccSA== X-Received: by 2002:a05:6a00:1255:b0:68a:5449:7436 with SMTP id u21-20020a056a00125500b0068a54497436mr16185349pfi.32.1696842235402; Mon, 09 Oct 2023 02:03:55 -0700 (PDT) Received: from GL4FX4PXWL.bytedance.net ([139.177.225.243]) by smtp.gmail.com with ESMTPSA id fk3-20020a056a003a8300b00690ca4356f1sm5884847pfb.198.2023.10.09.02.03.48 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Mon, 09 Oct 2023 02:03:54 -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 v4 02/10] maple_tree: Introduce {mtree,mas}_lock_nested() Date: Mon, 9 Oct 2023 17:03:12 +0800 Message-Id: <20231009090320.64565-3-zhangpeng.00@bytedance.com> X-Mailer: git-send-email 2.37.0 (Apple Git-136) In-Reply-To: <20231009090320.64565-1-zhangpeng.00@bytedance.com> References: <20231009090320.64565-1-zhangpeng.00@bytedance.com> MIME-Version: 1.0 X-Rspamd-Server: rspam09 X-Rspamd-Queue-Id: B0ED640008 X-Stat-Signature: qzbptqays87ysoetogzsjou6ykxsp5zt X-Rspam-User: X-HE-Tag: 1696842236-753680 X-HE-Meta: U2FsdGVkX1/H5HPezEj8/yK8kkU4gSm3ExrArt7k1svv/LNE4zjCr19cGIR/AmMugrrztMSO2G5pnFpt+80yQK+u/UPK+uSVRqr/qpnbXaVM6hbS4HkOIm45O9/qIglcT3oSXo5fi9z9B9BURCrdtkLu663tGA+8SuEZndIZ91RKzUodtS5MLVdCfsS7pTh/F/Y79BlA/RU7dIgxm4gRdLW36lOXUk3NA2ZapzQ1jZwpp3CWlgTHnquFf3VPTXk07uDsjYqPmNoCMAQ2kTMk7lGhgCT7bz0+Q7Z7pbZS6pPY87gz/CPe5ZpGNfMpTSBKKpt6gBq9FKMFbib6h/w99sfbUcQM38H2DOVKJl4SfIfj8cexg73LEowuE2pi3/+XyhXTIDGT1V1Dk+FFGszj02hwiVg0r3G8ldU4G1vqvuRdjJfTJY9m+ji2ktQuAgAc6QYfvajkkEOltfjzRiuVnzsSzcxyAh5izeuEmIUrQElNJNKXcrZlrOjoKbt478AdOIvro6srVobKjbYkw785LiSIPPLfKt/8N9kLGGo6sAcfL19G6qd9KSPmYoOhBmsMZD869wlv34k7glFpSiCvAxOjI7Y/feHuSLNvuXby+RDyj/kpFuom8t0nNbrAtEdu5dK1/16rSfMfuY7cBRaTjLQ22oa1MiXDqzFt4EMNbg5ERBUB2wNXnJZSI+wA8R0QUQIjuXtBeQEWDC56DhAtTQKfmNMiS7Qx+QUtOgC0dwFujup9UdHS3ZuAT+3Ko6HUoZKOdiqVfSAnWK8uaphtjaDPjaZcVQNRJs3J9YEa/MhJT/U/invdOgt2KqFP3PGyRuPobY61t+Beg1Xe6S93dgzBnA6ZAJ0OzXA39OqIAjdv1QRI4EKuhu1Rl0DQJjsOft5vItHuc4B4OXW8zsVIaw4qKngLPUBvc3h1Vlsbl6CND8g2E/ufCkbotudD88UjKMqmg1a+qvMTZlxdBYB 9SMObeLO C2nTlXdN3HhDXXBwAKv2ifDqdgPTI26at192C5hdLp4yD0As8P1ZD60gh4P+Mlf68I8TXhyDz3PcfSEO98+Pc1Pl9kc0Pt/TpIWGDGGs/9mMAT2IPLBtD4nxUiUMhv6p8C+4LTe1CgrqHpc9jwWU5tdBQdEMyM7xAo+5PXp11KEIK0oNqZ4qu3cNsDMbiC1ycxUVJlsPcoRwDh/CwOf04x1X0yus7eEhq6eeduMstn924NU2eKa4XBCSJB1WgmC/bqUc3Ov1DyiAW/678BnOEW7RySiBXKSXebhncs/Cc7sXpVhFgHzQXsnYe83rzccncd6ZTdVs4bl9wTz8TPhy8PsbmyWESoKlPn4X0uraUbQl4tXX737888YQx9fcFx9RphgeZ/GbKLV1z4ELBrM0HNQfarj+fPLlyMb8x/n2DOKGdEGTK2rUlyVHimW1L3VbMmMrujbwFeMLLKkQRwGyLAEdOyQ== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000116, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: 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)