From mboxrd@z Thu Jan 1 00:00:00 1970 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 4788CC021B2 for ; Tue, 25 Feb 2025 15:40:12 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id D84D06B0089; Tue, 25 Feb 2025 10:40:11 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id D34CC6B0092; Tue, 25 Feb 2025 10:40:11 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id B86E0280001; Tue, 25 Feb 2025 10:40:11 -0500 (EST) 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 92EA16B0089 for ; Tue, 25 Feb 2025 10:40:11 -0500 (EST) Received: from smtpin04.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 509A9B6B60 for ; Tue, 25 Feb 2025 15:40:11 +0000 (UTC) X-FDA: 83158878222.04.D039A3E Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) by imf04.hostedemail.com (Postfix) with ESMTP id D602240012 for ; Tue, 25 Feb 2025 15:40:07 +0000 (UTC) Authentication-Results: imf04.hostedemail.com; dkim=pass header.d=oracle.com header.s=corp-2023-11-20 header.b=AK0NeKIo; dkim=pass header.d=oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=agVrSo16; dmarc=pass (policy=reject) header.from=oracle.com; arc=pass ("microsoft.com:s=arcselector10001:i=1"); spf=pass (imf04.hostedemail.com: domain of liam.howlett@oracle.com designates 205.220.177.32 as permitted sender) smtp.mailfrom=liam.howlett@oracle.com ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1740498008; a=rsa-sha256; cv=pass; b=hzrwh3ESNZZ+4xLgLmlImF8lUqdafP61IuZDpemfw13CQ4gFthg2FKmxkAP3x0ramUHPNh PpYSHs/DlWONtcZJ7taSdkYHJlLuXI2oWSLrBBk+g0X3fTT48te0U79uKuF/n/+8+WPYxX Qr0ap3yPTpakLUxjvPxfEnlE3wY14xY= ARC-Authentication-Results: i=2; imf04.hostedemail.com; dkim=pass header.d=oracle.com header.s=corp-2023-11-20 header.b=AK0NeKIo; dkim=pass header.d=oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=agVrSo16; dmarc=pass (policy=reject) header.from=oracle.com; arc=pass ("microsoft.com:s=arcselector10001:i=1"); spf=pass (imf04.hostedemail.com: domain of liam.howlett@oracle.com designates 205.220.177.32 as permitted sender) smtp.mailfrom=liam.howlett@oracle.com ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1740498008; 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-type:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=NCX2sZak64GwAEfSuRSa/GFS3Y31q8Pf5alM7U5nZp0=; b=evfk/UcGh+VyXc6YminCIBumkXpcMrY499ooO1RAA/TjxqFPF5xkeRgstea7FVKAGrhYqV 2sUJvqwGczKnNl2y6trvFgXi8Gac/a0UYYBsN3a5NPm3MofYXDpkX2f0SGaGy/mrIsXv+3 X5JSrBIlJL/8EcTdgpl48cN39uHfQ2o= Received: from pps.filterd (m0246630.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 51PFMZRr006464; Tue, 25 Feb 2025 15:40:05 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-type:date:from:in-reply-to:message-id:mime-version :references:subject:to; s=corp-2023-11-20; bh=NCX2sZak64GwAEfSuR Sa/GFS3Y31q8Pf5alM7U5nZp0=; b=AK0NeKIovhVrnO8L++t072GsVrAhPy1jtV b3AT+QvifvbPNp5kFQ/ZcK5LMWclzxHcKUbAkntBeFeyUVUCapC/s4/lKMBsSz7g gUiYtHamKCctxYJw9Zr+CmYlEC6KXLOENSZ0xNEIsH5eUBJiPizLuHMtqZPrYNJ3 jKvub6imt3Tmlm59hF0+2gT9ivJPjQpZyy7ZmQs33kBc46da3FfxcIiQU8CPbsAP +n0+fJzH+UrDDj47yl7J1QnhP1bGw02l8SZFbFJBOoMKOWAv4OFpQzsijLtQl+23 z+IHxBFLqIsJ+4/byJ8p03RlUPwjQ8t4nLQpouxgtNiQYgent0qw== Received: from phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta01.appoci.oracle.com [138.1.114.2]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 44y50bnh7b-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 25 Feb 2025 15:40:05 +0000 (GMT) Received: from pps.filterd (phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 51PEL51j012522; Tue, 25 Feb 2025 15:40:04 GMT Received: from nam12-dm6-obe.outbound.protection.outlook.com (mail-dm6nam12lp2168.outbound.protection.outlook.com [104.47.59.168]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 44y51amxsu-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 25 Feb 2025 15:40:04 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=YPcRLxv5ZwhWAOW1buc1/B3JBLEIlaeTDk1Ulkua5KXY0RM/BFSI8hr4RGamhNMyGXO4p9q44D/4LX7Ijs0j7hMdssRkFlD0X2nW/SaL1pLB7eBmCu7z+wCuecteO3sjUW/RYQ8a+iwYbx3zJspEL50OSLkGfry5maiCr0S0QUKG8aaVSKZuXNvoK+xwTOxyiAPfOuq6HLe0xVIs29xxuNdJrv3ybR96EIitx3xjjLMVRnixs9cBZEnzoff0uqh9aZYX7sSu+iER8LZZvV/NluCvvnAHMutYas5iqV3plrHZtf3uBybHJhU3Ldo7yW53YzA5ozv3Li8NiG61txRKwg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=NCX2sZak64GwAEfSuRSa/GFS3Y31q8Pf5alM7U5nZp0=; b=hsUyl1MLRNpSfyW9U24fx+c/5qu3TykDyqkq9Wpw1KtULHAy47Kap8Ed+8VbMdBGNF5aCx1g3ajsz7sIlBUzL+JgS9/Np090qPvU/K2RTzXSSP1Ay2TXPgAsQYwwUG7IRV+qFRwDV3WinxZpg6+XjLePlZDAB5ctocTx3AHOzrkcZ4lXhwabPNK3Dy9Sz/OQ0/GXUgkUdTM/oi5zw5WtjdGhD1HudsFqEzalfOnOUU2O+lWr/h+Zyf6EGIlZF6u6PmKrG/xgt2W3cIdVHy2AI5HXaJHl2SnILNZuLOPInJIYQU7FkiE1Q+izJhR7XGXhharWQmsTVVFhiLQRpEmmHw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=NCX2sZak64GwAEfSuRSa/GFS3Y31q8Pf5alM7U5nZp0=; b=agVrSo16lG4js/wkNiV5kVo0PPhEkqOjOIizL2KZhJ0D8gTkEReWDJZGy2EoY5Mb0/uM0aGsYmxxGGyPkVfZFrbIiQfVxL8v8hOhstJ+JkiObL39RrFfDv/8MeIZ4WcaWdLznFcZs+p1x2VXN3X4dIuoyorvYJkDFOWqJxHAJ/U= Received: from PH0PR10MB5777.namprd10.prod.outlook.com (2603:10b6:510:128::16) by BL3PR10MB6257.namprd10.prod.outlook.com (2603:10b6:208:38c::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8466.19; Tue, 25 Feb 2025 15:40:01 +0000 Received: from PH0PR10MB5777.namprd10.prod.outlook.com ([fe80::75a8:21cc:f343:f68c]) by PH0PR10MB5777.namprd10.prod.outlook.com ([fe80::75a8:21cc:f343:f68c%4]) with mapi id 15.20.8466.016; Tue, 25 Feb 2025 15:40:01 +0000 Date: Tue, 25 Feb 2025 10:39:58 -0500 From: "Liam R. Howlett" To: Sidhartha Kumar Cc: linux-kernel@vger.kernel.org, maple-tree@lists.infradead.org, linux-mm@kvack.org, akpm@linux-foundation.org, richard.weiyang@gmail.com Subject: Re: [PATCH v2 2/6] maple_tree: use height and depth consistently Message-ID: Mail-Followup-To: "Liam R. Howlett" , Sidhartha Kumar , linux-kernel@vger.kernel.org, maple-tree@lists.infradead.org, linux-mm@kvack.org, akpm@linux-foundation.org, richard.weiyang@gmail.com References: <20250221163610.578409-1-sidhartha.kumar@oracle.com> <20250221163610.578409-3-sidhartha.kumar@oracle.com> Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20250221163610.578409-3-sidhartha.kumar@oracle.com> User-Agent: NeoMutt/20240425 X-ClientProxiedBy: YT4PR01CA0312.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:b01:10e::24) To PH0PR10MB5777.namprd10.prod.outlook.com (2603:10b6:510:128::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PH0PR10MB5777:EE_|BL3PR10MB6257:EE_ X-MS-Office365-Filtering-Correlation-Id: ce81691a-e644-4063-3f80-08dd55b2aa6e X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|366016|1800799024|27256017; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?PccutYizcckZh5sS3Oa9qhDaMCjR7cayyHjR0l8rTXuPii4dmS6bh712pFNe?= =?us-ascii?Q?JVhDHN7PigSfuWv/1ZnKhOuQvLX64FYXs/5k0y2hpSve3Iu5bUOwi7bS0JqX?= =?us-ascii?Q?zUgd2VBAccAK+KXaoKYUg2BH70CzwCcJSEKEQkQcmNP836IEh5Dg5ytN2yxT?= =?us-ascii?Q?+XHfbidxggFDUQQsQXuPQl/JGuFkxfV+RSolyqZHzqHvFFkfwZ7fLACxVUUW?= =?us-ascii?Q?0d5yStT6yCfNnpkFa6WUWx94SUBNu5e3xV2Og9CQaBaQlWTT3G79pMMDEk2G?= =?us-ascii?Q?KDNdalZXRjWhwK4jybErHZ3WMtPnZ8FP4Z6mTYTpxlHbRRjFhU8GU/A58/Uj?= =?us-ascii?Q?V42JS/cGsaTRy/7GtjxyUfLVrRPr03pX/m13rscXujOwawzQVpbyFdlja3oH?= =?us-ascii?Q?6LBwkLrD3IE2q0/E59tSKE1XGDuf+oUpDzCPP3kLRJJi9xMyflGyCqrYCStQ?= =?us-ascii?Q?ygmq4Gbx1xTm6HZfVznVnB58m9cc3+XoOoivTvuO4zkovz79pjNk9j2ja3MS?= =?us-ascii?Q?cshkR/D665UbnFABD9tzwLsjlTsK81wofc79Hu0WGEnyjTo4igaB/s7bNZQ5?= =?us-ascii?Q?s/olSlMNsA0PORtDkqm6+jTG2KNcf/0ij1jO4lKq1qGPa7Ailh4QArPzD77b?= =?us-ascii?Q?0uOTmfmMcibwGJgKFFhJ66slR+afwIoK47aIM2L6Vn8zPZOCsxLS0H/4rnqx?= =?us-ascii?Q?f03Y3Trp7Tw6iTZFnRpsWO+quL48bGA5L7cJzPXoPp+x52QYUekKa9yCBseD?= =?us-ascii?Q?O3gKbrUviGMUP2GfxzvUA+rTjkLjfpLFTZUOaYmCp+aR4ojhyN94hwdkcQZr?= =?us-ascii?Q?7Kcs2Sjq3N+3bjGebKi5pv2qeWB7ipjxmBPMKgfFhqIS4yv0EOZlaIx1cUtZ?= =?us-ascii?Q?dQIFsrxNpB87z5UMOd+bHdV2RPK8ZL9UQ9t9Agr4vn1Oc/e07c3gqQSBrsp1?= =?us-ascii?Q?NPssyhkVC5qwpP3PBr70GxqgyRZ4DMcqPHBKMRhzAHvOJCNukFuNVyTfNryt?= =?us-ascii?Q?xOiBdzjT5h3hm91wzsAZ/H79JwR4d6wX5yR55nOPoH2dHtjCxQ5IwiG2USIW?= =?us-ascii?Q?MxZtyZwhg5NqUbnuG9kfVXEtuA+uzLUchCBcYU/QyAOXOeS+YFWjFh20Syzz?= =?us-ascii?Q?8Ql5RV7iXbZBU2MRwHQawpq1VEW8jiL3SYa8xvD/xB6DlNOfR+cxUAJKQMHf?= =?us-ascii?Q?I/oehfVJ41E6+q6+VwfqQ2MPf8kU+bR0K0Gl6UykBkxeP5UK5S6QYWcZ+ZJR?= =?us-ascii?Q?euM9MqR7J9TbJr4L8RrwjwfzSfiGieKPYzl7++onkXxUAfD8XcP/2whuLPdK?= =?us-ascii?Q?/hATduvK5x8pGhX0gkpCaMcQca4o1C5H0iGFwrFi/GzmJ0HHi9FY1J/KH4eL?= =?us-ascii?Q?/F8vJ0MrnmUjUszgnsD2ENcmRu2uVwR0JTSEmAvnWO9l4+IDJX7+zP00znUy?= =?us-ascii?Q?KpIOYvCd+uA=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH0PR10MB5777.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(366016)(1800799024)(27256017);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?7n/Drh+CIMXQKTdzuYuJZzPcuelWMJCn0l6Iyk2ub8kjyFvD9AvD7ZzTwQ3Y?= =?us-ascii?Q?lIEANI3hfvnfuOmYv741Nfy+0aDd/veZfoc6UgDdFj/DI/v8ENxy6yqnTcHW?= =?us-ascii?Q?VHp24UFSgWxiCpZeL44nV9MNHr+xZuYeOBfrm9J25SSHJvkURBK0mt0zVIcw?= =?us-ascii?Q?3JiuXgl65qMp+f8qScJy5qeo+XokQ/9FEQdawWo0txJSMSXfKJUHe7O8Cw17?= =?us-ascii?Q?QuiIoMa04fLfs4iWF7rpts0Pwmd2VJpDMn3cMKOuOE3o4IQJdpcLDpgPp/Ib?= =?us-ascii?Q?sOQcjOB/0dsKOr1soTiy27eJ8im95HnbA8FpT8K91tM5oiDH1R1ozlKrY3qK?= =?us-ascii?Q?Hd6oBN/pSSFKaH7Uxzo+oo+sPpam8OyN+hfPzJ15wcfgClJlT7EVSbAIxTxa?= =?us-ascii?Q?1qJg6/r8xxWkvlhKLsJIrAXOyXR76ZpBfH5VzyyLgVvzJU/fHC2fHnUE/1wq?= =?us-ascii?Q?0qXkPQuanGsic/8W9YnBgDcx0lQKxtMU/RbWm7Lm40anB4urNKgRqAX1q8CO?= =?us-ascii?Q?T+HibFgVzkrhl7Yx9Ch6rTtChAgkXyIuiUCrz4+slf8OXgx1wI8vZ+VhUc69?= =?us-ascii?Q?b7K2iJDn7m8l4LathBpN+SJdFOJIr4lK+fx9zCcjJd0S7cssD5TgaWn1pHsg?= =?us-ascii?Q?EVWdwDhfsD5pm5AsBtEUPp9RFx9nYxI8H5xbi0y+xUdODBGWlyM0uIrkkAsM?= =?us-ascii?Q?OEnTGIbUzoQOcN8GtknQbzi3DgGOoWN9SJJswIq9eKnzLIgdpqed7ZA02QPm?= =?us-ascii?Q?gL8aOAppWbfhKMKSWmqADs1bSewWENlXi7QEST8AmMGqPftg8E2Wv0QsZj9q?= =?us-ascii?Q?sccAIUFwd+tMA0H2UZGo/OStffoOm8i9ezKiXDU5DyJMZu6DnyKbgAP4b+CS?= =?us-ascii?Q?qrOu0ujLxbTPLJoBK5cNPCz9PzdXyq+SA9Ao6Uj3/MqwG9ZKfPhVpBMTtgPr?= =?us-ascii?Q?Op+Fxva9ETwCrwyzeupvBwnbyLBrCSbhfsJ5HxkVE1uqPQzl0VJ4UnW84PI9?= =?us-ascii?Q?dJKtUEcAcfIf22qzVSeSDYnJ+3jiOeLrZbAeKw4L+B5VelUALFkGfr+YPUtR?= =?us-ascii?Q?/XdjmpE8WbD1f6PIZ4JRvoYpIxtNs8kwalxYkyqfTZp8n4RAtMYaxwUN2D8N?= =?us-ascii?Q?CuRnCSqvKbJWUHen+7jjLh5jT5Xplg6AKF45DJ14IlUPlCqf13q7cIjiv4u5?= =?us-ascii?Q?3H2Gkt93K08WgONE46ln/oBtUA2slRvxpkDlum6IUo/0ih4k+aBGP15h109g?= =?us-ascii?Q?RpoZPGN1lpj8LF0VUO1adnmuGKgeuauxpsUIYPHnWc3uZ6JTTXDETf3fTbKX?= =?us-ascii?Q?p+pvI8mq8eda6nbcJkFMYHTqbNZ0ZBg/OMmcdOpNZrTgxTtizkBnsy8updyo?= =?us-ascii?Q?rfZglJScpMO9awfxQcaCPZEyOn5PdhcyJOUb4nhOsgjNbTwvYyEjNCiutT1m?= =?us-ascii?Q?NNZP3g9Y9Hre5sy2z2qi+8lK7kWHteBZ6r0TRnL2ribURgtivoUsJhMwqku2?= =?us-ascii?Q?RsrFX3sELE/EQLd0hupdtWX7DCG33LwBJWC3zdI1qXXFr7SjHF9eRUUSoOy6?= =?us-ascii?Q?lB/j0eq9M2jAQnwbT20rk6dCVHAwetbAxQ8JENVO8pbuMuIZuuL5ddOEd8R7?= =?us-ascii?Q?JA=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: MvjOZBL3ItSzHw1z5muj8aUiblujhz0uDhSd5K5YiWK6np1J1dggw9/4PSiAJpo0hpRbSnmwfOpT1CdRw1/Dat2fgHfAj3hKsr+z9/00xN+w/D7xaaFoz7xTaWUxgVHltKHes9YxKTxW+EgYLO450geHhrhm+qZcQCJ80lOxW2d3eyp3HFmF0V/4Gox4O9yvex68e6UmekexxdYuGJcm4Ae7Sz3fWZbyKiGKGSlre9SMmeNdu/u6ysTht8El5Q0vNrLZZhtvXN4pkuyfcmWvowwR/18SzQzkFNCPT4W3R0KNrI4HJlsanWtKTySueIYq+7gOXHWHScZGyu07upSU9rlc+r2nizF5UWPNWa9fkrxV51ikr+pP/LtlCNW4mao4kfqdzMLh2lcq7falUjJ1nENF41cbSPJdWDNrDrP3o160r2+lDbzG+Fwoz6Fdx0PR+rr3l97Y74Km1mnVRYOtIDSAfqqUf2adBRJ38hV6Xax46IVmTxmOE0XdPQV8ac/qUS55sR+ZjY/vBLj/v29VrSUMPQmzIK1QqyX8/CsJL3dxVlrXxxAJmCDiNSo2G5vZcx+tBZtTSL7qoV95d8CPo7wUGt2h4+D1LshVBrjyByE= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: ce81691a-e644-4063-3f80-08dd55b2aa6e X-MS-Exchange-CrossTenant-AuthSource: PH0PR10MB5777.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Feb 2025 15:40:01.0454 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: YXsoG7pS/VVFW4MZY26s+uLtQq5OqgtHuq+nZkzLZki6NYrhoBET8ggeXD1fvbPey8q+fmn3+HNFuv1B9DxVWQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL3PR10MB6257 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-25_04,2025-02-25_03,2024-11-22_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 phishscore=0 spamscore=0 mlxscore=0 adultscore=0 bulkscore=0 mlxlogscore=999 malwarescore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2502100000 definitions=main-2502250103 X-Proofpoint-ORIG-GUID: ILcZjST6iFXlh6VGeB7ceBvhpWnhY_-6 X-Proofpoint-GUID: ILcZjST6iFXlh6VGeB7ceBvhpWnhY_-6 X-Rspam-User: X-Rspamd-Queue-Id: D602240012 X-Rspamd-Server: rspam12 X-Stat-Signature: suuzp31am95snee4w5h1ntrbuunpuwhs X-HE-Tag: 1740498007-814070 X-HE-Meta: U2FsdGVkX18lmKzn24R9Y+umYRacPnipXXhHAiGoXytPZ6xG9O3xyLZc8aFNdBKST5HJqaAamMprMMj5eAZ+OcDdNNGqq+qsu8GP8FtGsV8wvqxKIX5CUbEmoVwVMm6w7ORXLXi+/DNfnxVyt5IO/D43+qJELjHohzN+17nV8V/DwybmyToceOeOS/Me7w32pQPYoCOqf+xRvKHcdhbEtACwc5baS1FDL5yyYjgGOItPQ9kbS98X2ndKBjqx1Ms5Lzd+iK0SCA+OTr/WbaI34PcvOiXM5MaXztKF4Jgh/5PzzNqq2XqnZSePwWXZLLq5xLhXNzbliI2cEw60frSyooeCRXOYWPDBeiS2v00lv+osGiHi8uoSeWKpiobKhIXyZsXzp5RGdUHgA/WRDPjHSyPOjNkiuHfb7ozFMOpXgbWeKiDjH9CYuZkCBOPYN8MW23jBF3I2s5KHEBP04t+qBtqtIdXJ55DChV2yLpjmBLKdKaf5pbS4UtZxtBbVQ1FJ1URApkDgZ2rbX2uwcy3BTa9qSXtJ0YrYz1x370i0vF+qUo09fof/fvAYb2G49K5Av7NP954IZxLG4hONnhYj6DdUM0o2lhCI5CV/eidFdDuN7PazId7x2ak3ft/La/cfhAHxVJqP8i74nkTjYLekqd/OEqLbKd5M7aO9XQyPVZMoIYy0gCenpEwBJNrtdf2aVK/ZV7ivgRIVCJ7X5/wQ/WWpzFCL1BY0B2WRVeOXL0+w+kRZumwW0NfMWMZYItJs5Vvd17A/Hcwaoz53OHhNwHwAEQqwR32iylN9mkhOjTsimhVJreJbtaaselH2goDFH7e7ZVeYzgpt6aL2wMPeKzLJsS+0YNhzARMHqZOo2BMJyFcbtxkHpGQsb+2kp/MkW6o56n5zRb+PNxNifvoNpr1ctlmIDBe14POBj3qZ6YoJJ2t6OKaRQTgigPk82QXtGBLCDDQzSnln+3li8mW 8+QDE2w4 Ug+G9wBxR2FI1gmEbkE0QRb15Cmv+bL6pnjjgZGxcS4O+K0VxP/NmJJkBTB4X8iYYK9Owy54Q7gU6q53ZOntw0CEkowjUHnkcRJaQKEaX63mHpWCavKeQEP655q/a7ltTVZ4hVRlXfiUfgoaqK4Z9toZMZg8PAiiDy9FlqpfnR44qZxYr5kijmcWYwIZIo9CuQ8wMcQm8rFCcBKiWNfFR5lkUMiZsNwm0ZARqN5k1mIu2jkXD+KDgiFsK7U3c2EOJpKqC6O6mR/Hd+j9Zzj2TfrdQzMuMqAy+ieOaELxJqc66lzohgrsvO2h3OeZD/QZiSTPCRFfgVVn26WhgYh54p0uVUmEuEWoKJIpXeIh7qNDW+/YNXrr++wwtajIQmC5Qm7T2GMTaRve7UfEmpbhpvGrBb67+kYjum0dyCAMllmsWo2sUGChK6O+UInXpWAu+/9q7eZiMimEO+YfiiEi7tkWvVuhPglepvGrzZmtR5GGZwHFvr1chNXGS1ykAKk+Ase5IMXNYN81eiCALI4dWvz6gyWlMJehwTVBO5FEHICAMbqijvj+vnEUqKS3YqAQWahsFKFZrcpegP7Kun60qp9tKjebgmIlLpTMAS7jSURqANDZWVHlt6CccdibPvjBuVyFoImCx7oy2lqXwEEZufEpy67VKhd/LypcobQONV0GUUfTyND1JNjwzkg== 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: * Sidhartha Kumar [250221 11:36]: > For the maple tree, the root node is defined to have a depth of 0 with a > height of 1. Each level down from the node, these values are incremented > by 1. Various code paths define a root with depth 1 which is inconsisent > with the definition. Modify the code to be consistent with this > definition. > > Signed-off-by: Sidhartha Kumar > --- > lib/maple_tree.c | 85 +++++++++++++++++++++++++----------------------- > 1 file changed, 45 insertions(+), 40 deletions(-) > > diff --git a/lib/maple_tree.c b/lib/maple_tree.c > index 0410e13a099e..d7dac3119748 100644 > --- a/lib/maple_tree.c > +++ b/lib/maple_tree.c > @@ -211,14 +211,14 @@ static void ma_free_rcu(struct maple_node *node) > call_rcu(&node->rcu, mt_free_rcu); > } > > -static void mas_set_height(struct ma_state *mas) > +static void mt_set_height(struct maple_tree *mt, unsigned char height) > { > - unsigned int new_flags = mas->tree->ma_flags; > + unsigned int new_flags = mt->ma_flags; > > new_flags &= ~MT_FLAGS_HEIGHT_MASK; > - MAS_BUG_ON(mas, mas->depth > MAPLE_HEIGHT_MAX); > - new_flags |= mas->depth << MT_FLAGS_HEIGHT_OFFSET; > - mas->tree->ma_flags = new_flags; > + MT_BUG_ON(mt, height > MAPLE_HEIGHT_MAX); > + new_flags |= height << MT_FLAGS_HEIGHT_OFFSET; > + mt->ma_flags = new_flags; > } > > static unsigned int mas_mt_height(struct ma_state *mas) > @@ -1375,7 +1375,7 @@ static inline struct maple_enode *mas_start(struct ma_state *mas) > root = mas_root(mas); > /* Tree with nodes */ > if (likely(xa_is_node(root))) { > - mas->depth = 1; > + mas->depth = 0; > mas->status = ma_active; > mas->node = mte_safe_root(root); > mas->offset = 0; > @@ -1716,9 +1716,10 @@ static inline void mas_adopt_children(struct ma_state *mas, > * node as dead. > * @mas: the maple state with the new node > * @old_enode: The old maple encoded node to replace. > + * @new_height: if we are inserting a root node, update the height of the tree > */ > static inline void mas_put_in_tree(struct ma_state *mas, > - struct maple_enode *old_enode) > + struct maple_enode *old_enode, char new_height) > __must_hold(mas->tree->ma_lock) > { > unsigned char offset; > @@ -1727,7 +1728,7 @@ static inline void mas_put_in_tree(struct ma_state *mas, > if (mte_is_root(mas->node)) { > mas_mn(mas)->parent = ma_parent_ptr(mas_tree_parent(mas)); > rcu_assign_pointer(mas->tree->ma_root, mte_mk_root(mas->node)); > - mas_set_height(mas); > + mt_set_height(mas->tree, new_height); > } else { > > offset = mte_parent_slot(mas->node); > @@ -1747,10 +1748,10 @@ static inline void mas_put_in_tree(struct ma_state *mas, > * @old_enode: The old maple encoded node. > */ > static inline void mas_replace_node(struct ma_state *mas, > - struct maple_enode *old_enode) > + struct maple_enode *old_enode, unsigned char new_height) > __must_hold(mas->tree->ma_lock) > { > - mas_put_in_tree(mas, old_enode); > + mas_put_in_tree(mas, old_enode, new_height); > mas_free(mas, old_enode); > } > > @@ -2543,7 +2544,7 @@ static inline void mas_topiary_node(struct ma_state *mas, > * > */ > static inline void mas_topiary_replace(struct ma_state *mas, > - struct maple_enode *old_enode) > + struct maple_enode *old_enode, unsigned char new_height) > { > struct ma_state tmp[3], tmp_next[3]; > MA_TOPIARY(subtrees, mas->tree); > @@ -2551,7 +2552,7 @@ static inline void mas_topiary_replace(struct ma_state *mas, > int i, n; > > /* Place data in tree & then mark node as old */ > - mas_put_in_tree(mas, old_enode); > + mas_put_in_tree(mas, old_enode, new_height); > > /* Update the parent pointers in the tree */ > tmp[0] = *mas; > @@ -2639,10 +2640,10 @@ static inline void mas_topiary_replace(struct ma_state *mas, > * Updates gap as necessary. > */ > static inline void mas_wmb_replace(struct ma_state *mas, > - struct maple_enode *old_enode) > + struct maple_enode *old_enode, unsigned char new_height) > { > /* Insert the new data in the tree */ > - mas_topiary_replace(mas, old_enode); > + mas_topiary_replace(mas, old_enode, new_height); > > if (mte_is_leaf(mas->node)) > return; > @@ -2828,6 +2829,7 @@ static void mas_spanning_rebalance(struct ma_state *mas, > { > unsigned char split, mid_split; > unsigned char slot = 0; > + unsigned char new_height = 0; /* used if node is a new root */ > struct maple_enode *left = NULL, *middle = NULL, *right = NULL; > struct maple_enode *old_enode; > > @@ -2877,7 +2879,7 @@ static void mas_spanning_rebalance(struct ma_state *mas, > */ > memset(mast->bn, 0, sizeof(struct maple_big_node)); > mast->bn->type = mte_node_type(left); > - l_mas.depth++; > + new_height++; > > /* Root already stored in l->node. */ > if (mas_is_root_limits(mast->l)) > @@ -2901,8 +2903,10 @@ static void mas_spanning_rebalance(struct ma_state *mas, > continue; > > /* May be a new root stored in mast->bn */ > - if (mas_is_root_limits(mast->orig_l)) > + if (mas_is_root_limits(mast->orig_l)) { > + new_height++; > break; > + } > > mast_spanning_rebalance(mast); > > @@ -2913,7 +2917,7 @@ static void mas_spanning_rebalance(struct ma_state *mas, > > l_mas.node = mt_mk_node(ma_mnode_ptr(mas_pop_node(mas)), > mte_node_type(mast->orig_l->node)); > - l_mas.depth++; > + > mab_mas_cp(mast->bn, 0, mt_slots[mast->bn->type] - 1, &l_mas, true); > mas_set_parent(mas, left, l_mas.node, slot); > if (middle) > @@ -2937,7 +2941,7 @@ static void mas_spanning_rebalance(struct ma_state *mas, > mas->min = l_mas.min; > mas->max = l_mas.max; > mas->offset = l_mas.offset; > - mas_wmb_replace(mas, old_enode); > + mas_wmb_replace(mas, old_enode, new_height); > mtree_range_walk(mas); > return; > } > @@ -3013,6 +3017,7 @@ static inline void mas_destroy_rebalance(struct ma_state *mas, unsigned char end > void __rcu **l_slots, **slots; > unsigned long *l_pivs, *pivs, gap; > bool in_rcu = mt_in_rcu(mas->tree); > + unsigned char new_height = mas_mt_height(mas); > > MA_STATE(l_mas, mas->tree, mas->index, mas->last); > > @@ -3107,7 +3112,7 @@ static inline void mas_destroy_rebalance(struct ma_state *mas, unsigned char end > mas_ascend(mas); > > if (in_rcu) { > - mas_replace_node(mas, old_eparent); > + mas_replace_node(mas, old_eparent, new_height); > mas_adopt_children(mas, mas->node); > } > > @@ -3118,10 +3123,9 @@ static inline void mas_destroy_rebalance(struct ma_state *mas, unsigned char end > * mas_split_final_node() - Split the final node in a subtree operation. > * @mast: the maple subtree state > * @mas: The maple state > - * @height: The height of the tree in case it's a new root. > */ > static inline void mas_split_final_node(struct maple_subtree_state *mast, > - struct ma_state *mas, int height) > + struct ma_state *mas) > { > struct maple_enode *ancestor; > > @@ -3130,7 +3134,6 @@ static inline void mas_split_final_node(struct maple_subtree_state *mast, > mast->bn->type = maple_arange_64; > else > mast->bn->type = maple_range_64; > - mas->depth = height; > } > /* > * Only a single node is used here, could be root. > @@ -3153,8 +3156,7 @@ static inline void mas_split_final_node(struct maple_subtree_state *mast, > * @skip: The number of entries to skip for new nodes insertion. > */ > static inline void mast_fill_bnode(struct maple_subtree_state *mast, > - struct ma_state *mas, > - unsigned char skip) > + struct ma_state *mas, unsigned char skip, int *height) Update the argument list in the comments? > { > bool cp = true; > unsigned char split; > @@ -3226,7 +3228,7 @@ static inline void mast_split_data(struct maple_subtree_state *mast, > * > * Return: True if pushed, false otherwise. > */ > -static inline bool mas_push_data(struct ma_state *mas, int height, > +static inline bool mas_push_data(struct ma_state *mas, int *height, > struct maple_subtree_state *mast, bool left) Update the argument list in the comments? > { > unsigned char slot_total = mast->bn->b_end; > @@ -3283,8 +3285,8 @@ static inline bool mas_push_data(struct ma_state *mas, int height, > mast->orig_l->offset += end + 1; > > mast_split_data(mast, mas, split); > - mast_fill_bnode(mast, mas, 2); > - mas_split_final_node(mast, mas, height + 1); > + mast_fill_bnode(mast, mas, 2, height); > + mas_split_final_node(mast, mas); > return true; > } > > @@ -3297,6 +3299,7 @@ static void mas_split(struct ma_state *mas, struct maple_big_node *b_node) > { > struct maple_subtree_state mast; > int height = 0; > + unsigned int orig_height = mas_mt_height(mas); > unsigned char mid_split, split = 0; > struct maple_enode *old; > > @@ -3323,7 +3326,7 @@ static void mas_split(struct ma_state *mas, struct maple_big_node *b_node) > MA_STATE(prev_r_mas, mas->tree, mas->index, mas->last); > > trace_ma_op(__func__, mas); > - mas->depth = mas_mt_height(mas); > + mas->depth = orig_height; Why is this still needed? It might be worth adding a comment or removing it? > > mast.l = &l_mas; > mast.r = &r_mas; > @@ -3333,7 +3336,7 @@ static void mas_split(struct ma_state *mas, struct maple_big_node *b_node) > > while (height++ <= mas->depth) { > if (mt_slots[b_node->type] > b_node->b_end) { > - mas_split_final_node(&mast, mas, height); > + mas_split_final_node(&mast, mas); > break; > } > > @@ -3348,11 +3351,15 @@ static void mas_split(struct ma_state *mas, struct maple_big_node *b_node) > * is a significant savings. > */ > /* Try to push left. */ > - if (mas_push_data(mas, height, &mast, true)) > + if (mas_push_data(mas, &height, &mast, true)) { > + height++; > break; > + } > /* Try to push right. */ > - if (mas_push_data(mas, height, &mast, false)) > + if (mas_push_data(mas, &height, &mast, false)) { > + height++; > break; > + } > > split = mab_calc_split(mas, b_node, &mid_split); > mast_split_data(&mast, mas, split); > @@ -3361,7 +3368,7 @@ static void mas_split(struct ma_state *mas, struct maple_big_node *b_node) > * r->max. > */ > mast.r->max = mas->max; > - mast_fill_bnode(&mast, mas, 1); > + mast_fill_bnode(&mast, mas, 1, &height); > prev_l_mas = *mast.l; > prev_r_mas = *mast.r; > } > @@ -3369,7 +3376,7 @@ static void mas_split(struct ma_state *mas, struct maple_big_node *b_node) > /* Set the original node as dead */ > old = mas->node; > mas->node = l_mas.node; > - mas_wmb_replace(mas, old); > + mas_wmb_replace(mas, old, height); > mtree_range_walk(mas); > return; > } > @@ -3428,8 +3435,7 @@ static inline void mas_root_expand(struct ma_state *mas, void *entry) > if (mas->last != ULONG_MAX) > pivots[++slot] = ULONG_MAX; > > - mas->depth = 1; > - mas_set_height(mas); > + mt_set_height(mas->tree, 1); > ma_set_meta(node, maple_leaf_64, 0, slot); > /* swap the new root into the tree */ > rcu_assign_pointer(mas->tree->ma_root, mte_mk_root(mas->node)); > @@ -3673,8 +3679,7 @@ static inline void mas_new_root(struct ma_state *mas, void *entry) > WARN_ON_ONCE(mas->index || mas->last != ULONG_MAX); > > if (!entry) { > - mas->depth = 0; > - mas_set_height(mas); > + mt_set_height(mas->tree, 0); > rcu_assign_pointer(mas->tree->ma_root, entry); > mas->status = ma_start; > goto done; > @@ -3688,8 +3693,7 @@ static inline void mas_new_root(struct ma_state *mas, void *entry) > mas->status = ma_active; > rcu_assign_pointer(slots[0], entry); > pivots[0] = mas->last; > - mas->depth = 1; > - mas_set_height(mas); > + mt_set_height(mas->tree, 1); > rcu_assign_pointer(mas->tree->ma_root, mte_mk_root(mas->node)); > > done: > @@ -3808,6 +3812,7 @@ static inline void mas_wr_node_store(struct ma_wr_state *wr_mas, > struct maple_node reuse, *newnode; > unsigned char copy_size, node_pivots = mt_pivots[wr_mas->type]; > bool in_rcu = mt_in_rcu(mas->tree); > + unsigned char height = mas_mt_height(mas); > > if (mas->last == wr_mas->end_piv) > offset_end++; /* don't copy this offset */ > @@ -3864,7 +3869,7 @@ static inline void mas_wr_node_store(struct ma_wr_state *wr_mas, > struct maple_enode *old_enode = mas->node; > > mas->node = mt_mk_node(newnode, wr_mas->type); > - mas_replace_node(mas, old_enode); > + mas_replace_node(mas, old_enode, height); > } else { > memcpy(wr_mas->node, newnode, sizeof(struct maple_node)); > } > -- > 2.43.0 >