From patchwork Thu Jun 15 08:42:58 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peng Zhang X-Patchwork-Id: 13280888 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 15B68EB64DC for ; Thu, 15 Jun 2023 08:43:16 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 858346B0074; Thu, 15 Jun 2023 04:43:15 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 791C58E0001; Thu, 15 Jun 2023 04:43:15 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 56DD16B007B; Thu, 15 Jun 2023 04:43:15 -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 443736B0074 for ; Thu, 15 Jun 2023 04:43:15 -0400 (EDT) Received: from smtpin05.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 18ED14092C for ; Thu, 15 Jun 2023 08:43:15 +0000 (UTC) X-FDA: 80904342750.05.F171146 Received: from mail-pf1-f174.google.com (mail-pf1-f174.google.com [209.85.210.174]) by imf30.hostedemail.com (Postfix) with ESMTP id 40D478000E for ; Thu, 15 Jun 2023 08:43:13 +0000 (UTC) Authentication-Results: imf30.hostedemail.com; dkim=pass header.d=bytedance.com header.s=google header.b=KJqooEgR; dmarc=pass (policy=quarantine) header.from=bytedance.com; spf=pass (imf30.hostedemail.com: domain of zhangpeng.00@bytedance.com designates 209.85.210.174 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=1686818593; 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=h6we1XLVpJvFDKToAtCSdGG7AESFIveH8POVJHK7ygw=; b=NylcG13P+Mwumn6n6hP4j3BUhG7yGgYQEQNVXdfFlhZNw2zdoNiEprytKxE2EBMGM4+5tr KiA86lZP08W+xm2x6LPqz6TD2/BI+8YzaSoO31rEennBHvT3YieC2zyu3HSCo4e43ctGeO N8CyuEKOhZ2L7kUdkXKNPL6qWHjA9Vk= ARC-Authentication-Results: i=1; imf30.hostedemail.com; dkim=pass header.d=bytedance.com header.s=google header.b=KJqooEgR; dmarc=pass (policy=quarantine) header.from=bytedance.com; spf=pass (imf30.hostedemail.com: domain of zhangpeng.00@bytedance.com designates 209.85.210.174 as permitted sender) smtp.mailfrom=zhangpeng.00@bytedance.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1686818593; a=rsa-sha256; cv=none; b=OPjojnWgv8TKTbOEp6n5zQUERvdAoVkNLYkrsnmosnf4qd10OeCFYoktCQZpG+8uL//VsZ LId1ZdaAx8uFqw4dlIdn7gDdr/2deg/jxraYP+5zyQqwW2dl5l977KVvfTeFCn0VfB37YN C7iqRD31MJgYfJEOjHrRcJtaaSfFfLs= Received: by mail-pf1-f174.google.com with SMTP id d2e1a72fcca58-652328c18d5so5769053b3a.1 for ; Thu, 15 Jun 2023 01:43:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bytedance.com; s=google; t=1686818592; x=1689410592; 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=h6we1XLVpJvFDKToAtCSdGG7AESFIveH8POVJHK7ygw=; b=KJqooEgRb2iG8G1YEwQaqnb6yEyBC3iktDlEuCSBmlCh99KVdbC4uXKwyOEWcJ/vOP DIqo86HSGslqIkVliO7JkAyqCgamZvnuTKyKqN4AbrShWmLI8k5Ca37sxCWu0JtQEQ9K ol0WmAJ3q9Y2U4SIj4Vx039gw/b6Hns2IJDVLd99kDe5nheMueLD1C9GADpQ7Xqq0y6S 992BUsR57Tu/AIwGg5EIyEIr7FlnvDWdZ2OGQBBbIBiKEp1+lnu066CqqEsTMIn7mRCo +ag3+4ZmKY4vks40xwKEB5VEbwCyTezKBcyE443UrMi+13WctUK8zwBk/BSkby+dhEDv 8kMQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686818592; x=1689410592; 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=h6we1XLVpJvFDKToAtCSdGG7AESFIveH8POVJHK7ygw=; b=K5rjh8kKY4aNl/1NWrE3p5JZJBowI/xPM8mDOwh56I1PuekmwQPkZ7t/7Cqqj3TBHL kK/b6JbznJYsmt1fFuXemC3g7/KzdioJEKnexCqgDIvVFabOxi3dbl1IUk2UCfjVRL6O 4QYCbwafec9ATcnad4rU+Ly6i7jr63cELtuo5Xxp/juBE5GN/if6JYAFOF+NLkjRjTML dJMHkyNdK4iBq+mmB0tvRjjpaF1HEKtI1qpU+fLc4BBT+oMism5L2OczE+G9Pvje9GAq 9BCMCsKEeNk6WCoS6t5SVL4JaVYaKaY6uZBkwcZAVMQ+bCA41okP6hu66AB181HSvUZw Dmsw== X-Gm-Message-State: AC+VfDxDFmAlooyOBNgy5rlfUlxAjH/MZcUo42riLFw58GRHcG+8yWjn AO1fCNKUN6zHVwGkVXqwxnmIBQ== X-Google-Smtp-Source: ACHHUZ7OxUHpAAt4DVa7Yj5aKyir5I7RaKxitjppVwOvFNh7V119bUWSksBzFLFq7Hpwse3+/gV1zQ== X-Received: by 2002:a05:6a20:8419:b0:10b:bad9:1d31 with SMTP id c25-20020a056a20841900b0010bbad91d31mr3987449pzd.26.1686818592167; Thu, 15 Jun 2023 01:43:12 -0700 (PDT) Received: from GL4FX4PXWL.bytedance.net ([139.177.225.249]) by smtp.gmail.com with ESMTPSA id i21-20020aa78b55000000b0064fe06fe712sm11139783pfd.129.2023.06.15.01.43.09 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Thu, 15 Jun 2023 01:43:11 -0700 (PDT) From: Peng Zhang To: Liam.Howlett@oracle.com Cc: akpm@linux-foundation.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, maple-tree@lists.infradead.org, Peng Zhang Subject: [PATCH v3 1/4] maple_tree: add test for mas_wr_modify() fast path Date: Thu, 15 Jun 2023 16:42:58 +0800 Message-Id: <20230615084301.97701-2-zhangpeng.00@bytedance.com> X-Mailer: git-send-email 2.37.0 (Apple Git-136) In-Reply-To: <20230615084301.97701-1-zhangpeng.00@bytedance.com> References: <20230615084301.97701-1-zhangpeng.00@bytedance.com> MIME-Version: 1.0 X-Rspamd-Queue-Id: 40D478000E X-Rspam-User: X-Rspamd-Server: rspam04 X-Stat-Signature: 7hce1jdfnqkttmx4p6gx16j3x7stnnq1 X-HE-Tag: 1686818593-218710 X-HE-Meta: U2FsdGVkX1+mXwSvvBf03EHSVVNSLWLqAKoXxPF2LaWcXZa/vOWX389Y80fBY6C6fvL6hc9gbhztsEjmlFyX9obrKDqP4GU+9T/LHl5Dz8bx2rwkPNK6aR0XXCuKPMgYdXJtKu9h4a07a+kFbDTG3HKF9ejEY3dPN6vpOln2opqImFShKphLy1yMKkKuTXe5V4unPOlO3w20oUt7sj3HYo0YmytPQQAlkf/rLzxJshuJmU9MkfIYDG26UXrbW5J9/1yxVVNUAlWiZW33KyRAYp8kXeRZdK3thvxkmLFe+9nSS40pDylNoYqYjPx2+vP7M+WcyJ8WdYcrZhAGayrl1ofMfPHjEQVQNWNHWIzFsdnJE2ScoAFqTqxF3ZdOfxH+uleBqPay874SAwSiSKeWPs+FWg0EBQ7MQ1Urx3jg8Xufkl/W5M+4cJkqloSaGjbrIwJJtmPWMBy6MSE5XmIXyvDgYrahba4o6ljMLIULxOp4r+F9wif00iz+uimGRfT/U0aYUYRPljmyAN9vCnwB6Q+NB2o2jyzFWgWkH361SVKLcKPeur4R6nXI4hG1aZ9teW3cquFovPj9/47ykQ2UcJ6j+/8cbfMoh7KUptNCP4rCJ4JobHtx55Lc0aC/ciGrJ6BLXhnca6kjIl0HZTMyKZ69rdQKq4toF3Yjh6zDHumVsyPGxzxWeXxwGqp/QLNgXDZ5FdX3czWU8jgnNye2wP4G6VIUSE3YG+ObBDFeVMFZUUEZgQ0ysgVVSOgaDJluarXdWxztFof3LwR6Ac745IDtqrV+aYsXekvTkvHcNOWNJ3yqciCR/N7cL70SZU0MGxLokOJGr6/n9Ru1cxwYcSEBd5IsIj9PYrOz1LnAQ2Dm/UReScOfDKnGbb3pL5bTniPEFQUsi6LU9fJw1fDKMrNqZtdibm9ek8NLnTDNG7u808XeI0pPsv3LAmlPFc9uc3pCewJs7/ity8e/fdC HrJp3pEc 807kP0hq1hYtJnKWursUHImoCjPVi9YVV/xeVZZ90ZzR73pG0vY/yrt37y2+vBb4xn10cLMdyjsjsS7d1goD9o47xirXSRscJhHpHbd1A+r9iEJ6fTEEWaS7Y9QTiYS37UH2cnSWbddxU6DmN/NIZ95pD03a8eHaE4Bl2NBfy28Jcrra5v3rnO+ZQbGaRiQC/HE4H2dmVU3+LGpnWCz1ErLSO4cuY16BSNDYvjKQfKsx3MOUNhb703Jm2ryC6nQBFO7z2BbX6S0r59t1Gj7wsoN8jiimjyh4BV9oScPGXbJDg1gvvmbsgiCHh347hiOTFBtNvxrSDXRxiVp1JzN03dXv2FYH964tuunxO49UFebd25b9D5IlJqdVeFskzPFjCzs08ARIcwvnEhF6I666vLsOgCpU2KWKHMWKA/i2zHMM3JDUenWOpJxZmJaiqTsTIyw9Sg27L282jmIE= 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: Add tests for all cases of mas_wr_append() and mas_wr_slot_store(). Signed-off-by: Peng Zhang --- lib/test_maple_tree.c | 65 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) diff --git a/lib/test_maple_tree.c b/lib/test_maple_tree.c index 15d7b7bce7d6..9403472af3d7 100644 --- a/lib/test_maple_tree.c +++ b/lib/test_maple_tree.c @@ -1159,6 +1159,71 @@ static noinline void __init check_ranges(struct maple_tree *mt) MT_BUG_ON(mt, !mt_height(mt)); mtree_destroy(mt); + /* Check in-place modifications */ + mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); + /* Append to the start of last range */ + mt_set_non_kernel(50); + for (i = 0; i <= 500; i++) { + val = i * 5 + 1; + val2 = val + 4; + check_store_range(mt, val, val2, xa_mk_value(val), 0); + } + + /* Append to the last range without touching any boundaries */ + for (i = 0; i < 10; i++) { + val = val2 + 5; + val2 = val + 4; + check_store_range(mt, val, val2, xa_mk_value(val), 0); + } + + /* Append to the end of last range */ + val = val2; + for (i = 0; i < 10; i++) { + val += 5; + MT_BUG_ON(mt, mtree_test_store_range(mt, val, ULONG_MAX, + xa_mk_value(val)) != 0); + } + + /* Overwriting the range and over a part of the next range */ + for (i = 10; i < 30; i += 2) { + val = i * 5 + 1; + val2 = val + 5; + check_store_range(mt, val, val2, xa_mk_value(val), 0); + } + + /* Overwriting a part of the range and over the next range */ + for (i = 50; i < 70; i += 2) { + val2 = i * 5; + val = val2 - 5; + check_store_range(mt, val, val2, xa_mk_value(val), 0); + } + + /* + * Expand the range, only partially overwriting the previous and + * next ranges + */ + for (i = 100; i < 130; i += 3) { + val = i * 5 - 5; + val2 = i * 5 + 1; + check_store_range(mt, val, val2, xa_mk_value(val), 0); + } + + /* + * Expand the range, only partially overwriting the previous and + * next ranges, in RCU mode + */ + mt_set_in_rcu(mt); + for (i = 150; i < 180; i += 3) { + val = i * 5 - 5; + val2 = i * 5 + 1; + check_store_range(mt, val, val2, xa_mk_value(val), 0); + } + + MT_BUG_ON(mt, !mt_height(mt)); + mt_validate(mt); + mt_set_non_kernel(0); + mtree_destroy(mt); + /* Test rebalance gaps */ mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); mt_set_non_kernel(50);