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 895C9E95A8E for ; Mon, 9 Oct 2023 09:04:39 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 2159C8D002F; Mon, 9 Oct 2023 05:04:39 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 1C6AA8D0001; Mon, 9 Oct 2023 05:04:39 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 067538D002F; Mon, 9 Oct 2023 05:04:38 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id E68A98D0001 for ; Mon, 9 Oct 2023 05:04:38 -0400 (EDT) Received: from smtpin26.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id BF565C01A3 for ; Mon, 9 Oct 2023 09:04:38 +0000 (UTC) X-FDA: 81325337436.26.1BD4E5B Received: from mail-pf1-f172.google.com (mail-pf1-f172.google.com [209.85.210.172]) by imf21.hostedemail.com (Postfix) with ESMTP id D3AE71C0013 for ; Mon, 9 Oct 2023 09:04:36 +0000 (UTC) Authentication-Results: imf21.hostedemail.com; dkim=pass header.d=bytedance.com header.s=google header.b=G6lAe9O2; spf=pass (imf21.hostedemail.com: domain of zhangpeng.00@bytedance.com designates 209.85.210.172 as permitted sender) smtp.mailfrom=zhangpeng.00@bytedance.com; dmarc=pass (policy=quarantine) header.from=bytedance.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1696842276; 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=8v1OZEFv5O146V21vBTm5TeKaYSuxLzybT1UdN8aEPI=; b=h7XTfR6F3oPk+L7MrdLwwY5LsRKGGgC1Bpy9fRVwuxyuSEuaeFZbMrTd3uIMopL3pJ6cGD LOjyfhR4uyKeAP0JB1qKcwvWFikEY1r5jzWSY60nxUDi77M3LCE/CUJgPvIFBW9k/QNOjI 8ygEhv35rR6Pr8tT4W3TbtqcYepRIU4= ARC-Authentication-Results: i=1; imf21.hostedemail.com; dkim=pass header.d=bytedance.com header.s=google header.b=G6lAe9O2; spf=pass (imf21.hostedemail.com: domain of zhangpeng.00@bytedance.com designates 209.85.210.172 as permitted sender) smtp.mailfrom=zhangpeng.00@bytedance.com; dmarc=pass (policy=quarantine) header.from=bytedance.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1696842276; a=rsa-sha256; cv=none; b=J0fNk42BBEAf1nmoSKSDUso+UfGI+bCHxpfgxpnjAxTW5ICgA0D0niYM9/OX0dvVLXSLfc 8U4lxQJzjGG/GsxDhEHUWEthjXySOpe+ABv6uog7Uu8pdZrOyhsmlsHwuWzxhYD5iArz0A XqOZNRDCcYzqfTz9HtIZWGpt9aSi5eQ= Received: by mail-pf1-f172.google.com with SMTP id d2e1a72fcca58-69fc829d7b1so1386493b3a.1 for ; Mon, 09 Oct 2023 02:04:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bytedance.com; s=google; t=1696842276; x=1697447076; 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=8v1OZEFv5O146V21vBTm5TeKaYSuxLzybT1UdN8aEPI=; b=G6lAe9O23kfqVPmauSHtB/57vUmsUhNYaUcpCbc4gllw56usRnlHl9UR0jH2xy0+KM B/8om7XU6UkaWsIZ7sjEMO1ENTlM68K26M0ySz/6c8xU8jFBpIZ8MBapxfsrf3QTTvSg bJ4mlQMaWF7WleMLbH4gFORm0gc3ds1kYg8MgXgnh92BzDB78PxSN4QsCSOEEhWzdz0M KvomziVePacFSm0sReSuWNbvzxtSwSdAhoZl83KKhMtSdwwGURmyiu3u+e/IEbKScwcv Ia0zkZS6N6MA0nuo+McMLaT2pnLdQME+cGVImyrisvy4DEFpVC8f4HcIPbETaW/MwCG3 oVJQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1696842276; x=1697447076; 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=8v1OZEFv5O146V21vBTm5TeKaYSuxLzybT1UdN8aEPI=; b=PgLdqUCUriNvrOcFYHLJQGNspIcEaCpOupbEyMn5U28NOYrz25Lw8FyDgS8eLiqSmO Pn0Xk1etarPfMYyjIGYRYePK9R/FK5bah+pMh9ZhjEej6TkHx2NioUK3lYQi1GsXcU6X iwfF78AzfaJ9wSeEcsHu483sYU79vt0br8jpPzFlnhgSIII8xvbnru5tXT5NCGcbZLiN Pdcx4bU6LUWEhq3rh8KNL5j2hZHUDVJkJ7u06IY6IhGQd/rui3qKlJMJBKYHl5YOtX6P YgDXTc6m2LAuCkdomH71bylIaXUPCIwahDFGf/1AUo4o8KDQKURDPi0Y9whPNwfpUyO0 YH9w== X-Gm-Message-State: AOJu0YzNSaNvZCpBoi/E7D7ih730c6oxU9bJFk+uPPU4bs7eaZcANYTT Hg3VEFqXzSz6RqDLc+6fmaczmQ== X-Google-Smtp-Source: AGHT+IGW3goxheixUnKrkWUN2cRvqCUUmgS+X/SOAABQUeOP6LJPmPjlNnrYOpaxH5nwIYLNUCgF5Q== X-Received: by 2002:a05:6a00:158c:b0:690:b7a1:ac51 with SMTP id u12-20020a056a00158c00b00690b7a1ac51mr19018763pfk.31.1696842275718; Mon, 09 Oct 2023 02:04:35 -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.04.29 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Mon, 09 Oct 2023 02:04:35 -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 08/10] maple_tree: Update check_forking() and bench_forking() Date: Mon, 9 Oct 2023 17:03:18 +0800 Message-Id: <20231009090320.64565-9-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 Content-Transfer-Encoding: 8bit X-Rspamd-Queue-Id: D3AE71C0013 X-Rspam-User: X-Stat-Signature: 4h74dtochbg95fpizk1yopqanfzhdf67 X-Rspamd-Server: rspam01 X-HE-Tag: 1696842276-343872 X-HE-Meta: U2FsdGVkX1+LEFIskEBjDk9Szxx4c8lZf6+KY3Mp/lavm+QQ7st3seY3VMuwUvFA6fet1eeOvhDbflonONtqty1Nexu0A/3jbJNTV+uMapnFxFG2zU+TEGFt5xhD4RC7TXPyOTvUmRajOnw7XpyiVtXqO5wqwHm9TKf8V6Blt09Ns1cF1CB2wGKHfAFsl6Flt2oCjLUZ6oQ+fGb6I0kzwGyLDeEMmORtGz8h4/Bun0S91P1iF8G1nt8QG65pUCrylNwI4aGQrfsiGpUy1mK/8AM5gdSplz2SuS9qIDQdLFVqEr13WfkCLH9wvvrNjt8v/qeY3j3yZQ/k7R9/xDvV90WB287+ZZpsKDGn73ADJyIWiG5r8bS2NTvg3ydC9DnKXMhNcn8jOAh03EFBiMU3UtKCabth1hBdjc5ujhtE5/ICGWHPHJ3KZz+Ef1+sujvMJFcJKPoYMXLhiDaB4hSVxXE1L5HCwA2mw4k8opWiVxlmnLvPMas6AAArqUFu8e6udM3Cy0YDmgO0ZrtEwNkSDvwjg6d0TpbDsLAnBlXX0I1PWFxJSE9NOoUIoyA6r0LkImeXfCCMMFkvTX+0LEsP58XtqAw4CM9ukKCSsukPDv3gPrLcJyS6XStroYAl13hAK5Km33Y1JTmPaxbZWrWtdVm7hOpiW9lUd3WUFNm4DsLmHtiHnBwCAmO50azcjQPzlIfpxoN+Q77N2VzTGdFP/+BKXSH15IaaDBU2ROc8fDpGKrznjEbio1q+fuvVW/1jIEoItSuzIkob6Y0txBB9oW+zikhPSagRlzkrs/s0CbspL2ZEhhe3d4TiqQ9I/oFH1lT9lQWCR4/0p74XXpm5Cp0SZJtV7wvJQ6CdhK09P+cDdvem8OcZDgcsTJWESF48hP0R6A+6e932ua2omF34n7TDM8wHsvy7j+IAK4L/o3xceBlBd7d4F4UwYtKzHGNoIpcAY8Mos3gCnBCpi0H yNXU4xg4 wzo6k00ViHDZ0iUlTKQvK027LopSTIr7YHh/QQIcjp0jbf6uqbwGidxduZ/zPGMOFwRqD6Uk3qllza1sY5YEKYDTeFL7tlnbUpXvLFCv+GV3WbUcZ6WBC+yi4ASHJNyePnyI7PS5yds1gy/sSj0MTymcwfP/XezxMGb55RHh2N54KELDaV14BLv5kiMEz5+UEPin7bn6MWtpucd+shQai0y1k9uVry7AWjmTCTg95SWI3xqIyVrMPYl/BArFEX60fvhtjpVKR0t7RYyAtT8IwlnTDgIvheaHshqLFnLkMRE+xVl/Hz8ZkFtDQ0kYrCIS8C8xLWqJVcpW7TBW+UXHiMo+6Nib5rGBZ368GNjg//Ufu5NtPbN/6xhaz3TrbT7NCdZFVrj20eqJVQwB2JbwGdhNASjY6PCSYSnFNFRX4OufKHRz2xYY1aXNDCuo7az3GtwOaZFlVODpnyq6ngLcg5EYnKA== 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: Updated check_forking() and bench_forking() to use __mt_dup() to duplicate maple tree. Signed-off-by: Peng Zhang --- lib/test_maple_tree.c | 61 +++++++++++++++++++++---------------------- 1 file changed, 30 insertions(+), 31 deletions(-) diff --git a/lib/test_maple_tree.c b/lib/test_maple_tree.c index 27d424fad797..bcd07c220a13 100644 --- a/lib/test_maple_tree.c +++ b/lib/test_maple_tree.c @@ -1837,36 +1837,37 @@ static noinline void __init check_forking(struct maple_tree *mt) { struct maple_tree newmt; - int i, nr_entries = 134; + int i, nr_entries = 134, ret; void *val; MA_STATE(mas, mt, 0, 0); - MA_STATE(newmas, mt, 0, 0); + MA_STATE(newmas, &newmt, 0, 0); + + mt_init_flags(&newmt, MT_FLAGS_ALLOC_RANGE); for (i = 0; i <= nr_entries; i++) mtree_store_range(mt, i*10, i*10 + 5, xa_mk_value(i), GFP_KERNEL); + mt_set_non_kernel(99999); - mt_init_flags(&newmt, MT_FLAGS_ALLOC_RANGE); - newmas.tree = &newmt; - mas_reset(&newmas); - mas_reset(&mas); mas_lock(&newmas); - mas.index = 0; - mas.last = 0; - if (mas_expected_entries(&newmas, nr_entries)) { + mas_lock_nested(&mas, SINGLE_DEPTH_NESTING); + + ret = __mt_dup(mt, &newmt, GFP_NOWAIT | __GFP_NOWARN); + if (ret) { pr_err("OOM!"); BUG_ON(1); } - rcu_read_lock(); - mas_for_each(&mas, val, ULONG_MAX) { - newmas.index = mas.index; - newmas.last = mas.last; + + mas_set(&newmas, 0); + mas_for_each(&newmas, val, ULONG_MAX) { mas_store(&newmas, val); } - rcu_read_unlock(); - mas_destroy(&newmas); + + mas_unlock(&mas); mas_unlock(&newmas); + + mas_destroy(&newmas); mt_validate(&newmt); mt_set_non_kernel(0); mtree_destroy(&newmt); @@ -1974,12 +1975,11 @@ static noinline void __init check_mas_store_gfp(struct maple_tree *mt) #if defined(BENCH_FORK) static noinline void __init bench_forking(struct maple_tree *mt) { - struct maple_tree newmt; - int i, nr_entries = 134, nr_fork = 80000; + int i, nr_entries = 134, nr_fork = 80000, ret; void *val; MA_STATE(mas, mt, 0, 0); - MA_STATE(newmas, mt, 0, 0); + MA_STATE(newmas, &newmt, 0, 0); for (i = 0; i <= nr_entries; i++) mtree_store_range(mt, i*10, i*10 + 5, @@ -1988,25 +1988,24 @@ static noinline void __init bench_forking(struct maple_tree *mt) for (i = 0; i < nr_fork; i++) { mt_set_non_kernel(99999); mt_init_flags(&newmt, MT_FLAGS_ALLOC_RANGE); - newmas.tree = &newmt; - mas_reset(&newmas); - mas_reset(&mas); - mas.index = 0; - mas.last = 0; - rcu_read_lock(); + mas_lock(&newmas); - if (mas_expected_entries(&newmas, nr_entries)) { - printk("OOM!"); + mas_lock_nested(&mas, SINGLE_DEPTH_NESTING); + ret = __mt_dup(mt, &newmt, GFP_NOWAIT | __GFP_NOWARN); + if (ret) { + pr_err("OOM!"); BUG_ON(1); } - mas_for_each(&mas, val, ULONG_MAX) { - newmas.index = mas.index; - newmas.last = mas.last; + + mas_set(&newmas, 0); + mas_for_each(&newmas, val, ULONG_MAX) { mas_store(&newmas, val); } - mas_destroy(&newmas); + + mas_unlock(&mas); mas_unlock(&newmas); - rcu_read_unlock(); + + mas_destroy(&newmas); mt_validate(&newmt); mt_set_non_kernel(0); mtree_destroy(&newmt); -- 2.20.1