From patchwork Fri Feb 21 16:36:08 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sidhartha Kumar X-Patchwork-Id: 13985955 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 32A04C021B7 for ; Fri, 21 Feb 2025 16:36:22 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 443F328001A; Fri, 21 Feb 2025 11:36:21 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 3D6EE280016; Fri, 21 Feb 2025 11:36:21 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 1D1D528001A; Fri, 21 Feb 2025 11:36:21 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id F0CAA280016 for ; Fri, 21 Feb 2025 11:36:20 -0500 (EST) Received: from smtpin03.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 6052614105B for ; Fri, 21 Feb 2025 16:36:20 +0000 (UTC) X-FDA: 83144504520.03.38D1157 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by imf19.hostedemail.com (Postfix) with ESMTP id 48B101A0019 for ; Fri, 21 Feb 2025 16:36:18 +0000 (UTC) Authentication-Results: imf19.hostedemail.com; dkim=pass header.d=oracle.com header.s=corp-2023-11-20 header.b=a8KFEYqE; spf=pass (imf19.hostedemail.com: domain of sidhartha.kumar@oracle.com designates 205.220.165.32 as permitted sender) smtp.mailfrom=sidhartha.kumar@oracle.com; dmarc=pass (policy=reject) header.from=oracle.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1740155778; 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=lxM6DO0F+QyIrP48GZ8DBI2u4dV0evq288ua9Mia9+E=; b=mlhBf2uBlOwYZu/NqB5af2URNYgOg+zoBdqFp/ju7LUwAMHlK2gt1iOrYZHpE32DzatEZ2 VJw/Nlyrsfp0HwHOReKKPdtQFEqL8KskPlx4jUkm5d5omRJP57FoJRUS5lqBQ15sGrRThV B/rmvZ4GYoJdR1F3L1Eysvu5Oms7x0s= ARC-Authentication-Results: i=1; imf19.hostedemail.com; dkim=pass header.d=oracle.com header.s=corp-2023-11-20 header.b=a8KFEYqE; spf=pass (imf19.hostedemail.com: domain of sidhartha.kumar@oracle.com designates 205.220.165.32 as permitted sender) smtp.mailfrom=sidhartha.kumar@oracle.com; dmarc=pass (policy=reject) header.from=oracle.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1740155778; a=rsa-sha256; cv=none; b=ferJbT9yXuo9A3Xi7cXaE4e0UmqjLe0EGQxpzj/0JmvabF0pBosFLwVAr+dWm5y+34ZJg7 edbM9aO8zPWlrrUEtS8QqQyFn8IuHhlHSnNc4Ms8vOV55ocQ3P6xNNaeez77X0SX7Ji/ng oOO+6csPDKAYGjgtKgI/rvtj30k8Pl8= Received: from pps.filterd (m0246617.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 51L8fdxP018610; Fri, 21 Feb 2025 16:36:16 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=corp-2023-11-20; bh=lxM6D O0F+QyIrP48GZ8DBI2u4dV0evq288ua9Mia9+E=; b=a8KFEYqEeW8eplIs2Msn5 pkzpGFdBiXIwFTCQDVhx4QZEKsV2JSLYT4lOhay5/My24NI6pySR1A4Ektsapg3b gZ1fgraCtqM6n+FfM/PTuA+7mewmFkMd77rVoHdovagks/yEjHOIK3/royPziLt+ 1PQ3BYgVp6oZFIe5Qmj/vlIAZ4toi/wTiG7beITS9XNlXA/6toFTJnyN/fGlDybX ZXSP3cQoq+Y4UDozAQOz7YXeTEf43vPGiP1DcmdFIkLEaccDL6BTwnyFWpA8JOz0 MgPg6gsD6+YPaENrlGWtYj66bFHZVsmJwO3A1eEGL0FbpQbXO4fgJ6IDIIPGdlLR g== Received: from iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta03.appoci.oracle.com [130.35.103.27]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 44w00npq59-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 21 Feb 2025 16:36:16 +0000 (GMT) Received: from pps.filterd (iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 51LFZ5xe010490; Fri, 21 Feb 2025 16:36:15 GMT Received: from pps.reinject (localhost [127.0.0.1]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 44w07gxm87-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 21 Feb 2025 16:36:14 +0000 Received: from iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by pps.reinject (8.17.1.5/8.17.1.5) with ESMTP id 51LGUIXJ005786; Fri, 21 Feb 2025 16:36:14 GMT Received: from sidhakum-ubuntu.osdevelopmeniad.oraclevcn.com (sidhakum-ubuntu.allregionaliads.osdevelopmeniad.oraclevcn.com [100.100.250.108]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTP id 44w07gxm69-5; Fri, 21 Feb 2025 16:36:14 +0000 From: Sidhartha Kumar To: linux-kernel@vger.kernel.org, maple-tree@lists.infradead.org Cc: linux-mm@kvack.org, akpm@linux-foundation.org, liam.howlett@oracle.com, richard.weiyang@gmail.com, Sidhartha Kumar Subject: [PATCH v2 4/6] maple_tree: break on convergence in mas_spanning_rebalance() Date: Fri, 21 Feb 2025 16:36:08 +0000 Message-ID: <20250221163610.578409-5-sidhartha.kumar@oracle.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250221163610.578409-1-sidhartha.kumar@oracle.com> References: <20250221163610.578409-1-sidhartha.kumar@oracle.com> MIME-Version: 1.0 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1057,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-02-21_05,2025-02-20_02,2024-11-22_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxscore=0 adultscore=0 bulkscore=0 mlxlogscore=999 malwarescore=0 suspectscore=0 spamscore=0 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2502100000 definitions=main-2502210118 X-Proofpoint-GUID: fIvW1rKDgQFpsnCwJqLXXVV9ltBKwsOr X-Proofpoint-ORIG-GUID: fIvW1rKDgQFpsnCwJqLXXVV9ltBKwsOr X-Rspam-User: X-Rspamd-Server: rspam09 X-Rspamd-Queue-Id: 48B101A0019 X-Stat-Signature: pepq74tyt6xin7agoq4ogweit9c7go7t X-HE-Tag: 1740155778-431186 X-HE-Meta: U2FsdGVkX1+RrS0ukbLiEJ8+h7EAMi9NW4mXn0wPigwnXfkw0KXhQqKQWCnofb3fHTgqxcNscnNgze+hVSY3nCVhEZq9nL3U1V9/TlysBCPQdhBFutR+VK/jA5qEJVAfR+OidXVLbXxtq/OU72gftqkqWCtEbx0bHWjvF+uQf9y3HzA20qCariD5FaxJ+NtE0Ig6+kBDKcuo95z4kLMzT2/5GXziNsEpLhT02GMZQlie4HCi407QbjO7ishQbyzTx4/JfS1E0FUbFkh64Lvnr2CAeOM4wqipdYtk95zGfbTlFAzKRNsOG36cU/V6gimXP4xqmZrTrRNf3vUil9yr/ceP1uLz4yBMHBQdPk7sbUxA5y5NzjC3Fou3R1i3y5iA1KvT0VABr+ZxZ9CW0S9dlbfRj9qhyoyISHz1dM1auxwXKLthFAC609LDLNfYnhw7O4IRII2ps/G9pyF/QYD+p1nThbig5M+YPHvaqwkRBDs2T37583i0m+En7hvos27LZkmLAeTGJ+tvZwiwBYt7SiIYAOAPvnwahGZCvqEUupF/kC51IAm8006t+3bgtly2UKTmuVNg/m053N/o1NjuWHmYxLhLiCzYIfJgjLbEbfRTM769oR9BxqFV3wbwa8zg4HqBQLsMShr8mEyeBnhpXczJKN+AAz6ROlVGR2Dkia1NGghkFBi62/b3ETyNUyLJvDdp3fXnQYxb1FP9c6pmJ5BtH3ceZchUSFGW8SQka8zhdjrxwwde9Ejm2qiCNA/UYUNRTjfN5Sj9hN/SvzAmxFqcVoeJxTf5/gpNWBFNWGQg5LnVQYJ2C8FBbhY4bnY5HHcqqbZef4S8zh7QLm0bTzxijgvI1A5lmK5nV+sOusm9fcgIkTw72eP2axTNeXK9FaGFhZ2ib/qpYjA1u/sLSJKxKzr03iTrxLqiZPHlj6KiUhnPScc6ll41dDvBKRHFq9OVtUGbRlvM7+GGEQR TLRqn++X c8mdbGjAkVRJZobWA9kLoqEgnE3wu+HmgjCmaNJKxmldAuTmqbPsFNGjMdyKC3LUDwq6MZUYEEsfNVwun45glOH4aCSg75ZI1U9A7WaKGEf/Ffz0Zq903rF+KqBJSqedpgCSYonnZURurHuz4z0hn7nnTzDo0OEcloTaOLfipJ5IRwO2DLelFDD0UYcYDf6spMHbHPAt5wwu0g2hWTDMcEDB7kADjBl+iNdTMjhR1VoDnNF6PvPKkbAeoe74oblX+6/0Zbxl+yFXhEDexBLn8Rlmae8mS4UN+cyt79NtLvnmwCgWuoVr7bys39cWcvInG7/0Gu92Mx2Xnfp9z1u36TRBpsEBqy7kgB+uRX5C5LpRmDLtspr5aNBJ3yz+LdvcwNxwZ X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: This allows support for using the vacant height to calculate the worst case number of nodes needed for wr_rebalance operation. mas_spanning_rebalance() was seen to perform unnecessary node allocations. We can reduce allocations by breaking early during the rebalancing loop once we realize that we have ascended to a common ancestor. Suggested-by: Liam Howlett Reviewed-by: Wei Yang Signed-off-by: Sidhartha Kumar --- lib/maple_tree.c | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/lib/maple_tree.c b/lib/maple_tree.c index ef71af0529f4..4de257003251 100644 --- a/lib/maple_tree.c +++ b/lib/maple_tree.c @@ -2896,11 +2896,24 @@ static void mas_spanning_rebalance(struct ma_state *mas, mast_combine_cp_right(mast); mast->orig_l->last = mast->orig_l->max; - if (mast_sufficient(mast)) - continue; + if (mast_sufficient(mast)) { + if (mast_overflow(mast)) + continue; + + if (mast->orig_l->node == mast->orig_r->node) { + /* + * The data in b_node should be stored in one + * node and in the tree + */ + slot = mast->l->offset; + /* May be a new root stored in mast->bn */ + if (mas_is_root_limits(mast->orig_l)) + new_height++; + break; + } - if (mast_overflow(mast)) continue; + } /* May be a new root stored in mast->bn */ if (mas_is_root_limits(mast->orig_l)) {