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 C2B03EB64DA for ; Wed, 28 Jun 2023 07:37:18 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 605A88D0001; Wed, 28 Jun 2023 03:37:18 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 5B64B8E0001; Wed, 28 Jun 2023 03:37:18 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 47DC28D0005; Wed, 28 Jun 2023 03:37:18 -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 399DD8D0001 for ; Wed, 28 Jun 2023 03:37:18 -0400 (EDT) Received: from smtpin12.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 16248A0B8D for ; Wed, 28 Jun 2023 07:37:18 +0000 (UTC) X-FDA: 80951350956.12.76A04B0 Received: from mail-pl1-f171.google.com (mail-pl1-f171.google.com [209.85.214.171]) by imf13.hostedemail.com (Postfix) with ESMTP id 1AD302000D for ; Wed, 28 Jun 2023 07:37:15 +0000 (UTC) Authentication-Results: imf13.hostedemail.com; dkim=pass header.d=bytedance.com header.s=google header.b=Dmrk91Aa; spf=pass (imf13.hostedemail.com: domain of zhangpeng.00@bytedance.com designates 209.85.214.171 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=1687937836; 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=vVHRGKJQOMwzWN83g2m+Cd2Oov5QH2ldO2Pug8KfAvg=; b=8cBUlmCB6suuC/btzxQWeR6/hm14O5j3z4Kxeh6JsmpBTiXZ7qOwTwhth1WCSiStDkzTf0 LB0Yhpil4KFBJsX9lxxpUJXPncgsfDy6dUR5VvbZkgyq5ovT7vZDN8nqOATN76ixoRJPS7 NoAcVOBx1oarVroa+PKGeSv3mFFfBtM= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1687937836; a=rsa-sha256; cv=none; b=MLNm672tTpa07L34dqIZGuYlW2+jyXn2KShx63PTA+1eGIZK1LnyUSNy1n3zZVqhCShilM HBoD70PGBOU9sm6CAABDQ0GLh6GptUM2JA4chHYDYp4EHy8L1+9HtnqcOpRZXz6b2LNWwg BdLKxCX9zfl60Noii3I1ZzvWfQgAEdg= ARC-Authentication-Results: i=1; imf13.hostedemail.com; dkim=pass header.d=bytedance.com header.s=google header.b=Dmrk91Aa; spf=pass (imf13.hostedemail.com: domain of zhangpeng.00@bytedance.com designates 209.85.214.171 as permitted sender) smtp.mailfrom=zhangpeng.00@bytedance.com; dmarc=pass (policy=quarantine) header.from=bytedance.com Received: by mail-pl1-f171.google.com with SMTP id d9443c01a7336-1b8054180acso26056505ad.1 for ; Wed, 28 Jun 2023 00:37:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bytedance.com; s=google; t=1687937835; x=1690529835; 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=vVHRGKJQOMwzWN83g2m+Cd2Oov5QH2ldO2Pug8KfAvg=; b=Dmrk91Aa1YF/yDS5Zlfw7pNSuC3/J7x+OAkyDic9ckq37Up3oKGE54WrxWI29by5TR dXdZvc8aJa+nT9qACt+rhBObZmvzcUSVrjS6SKGo/IqzguB3l7Q4cXk0ltow4gwi3Q3m N+Rg8svlRw68OXDJ8whvlP+FTGb6957YUH3Qp3YWgH1qABAqzyNBBqIRhTbA51Msh6Tq 1xNXRBETzmW+nUVDBtQw1S14yxnevAvAu8l6sWbQ7xJ/zgwxVu0uxQbM1cySQJoLOL+a tBzQHZ7TEa6dV/vyK75dwDidolCpJKX0SeRuKSGUHb44JuOAsRKlUmVy6YXomYnCDljj ETgg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1687937835; x=1690529835; 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=vVHRGKJQOMwzWN83g2m+Cd2Oov5QH2ldO2Pug8KfAvg=; b=Vu9W2TEEWDI/pmN3zUSXy0EtKw53TgiCcyahmUax34/ZYj8tgYxB3bH+AjXzZduUQ0 mP5ZL9gJDIS82xcOCNRtYgo4VNDrr5ZZrCHPydbTLkd3+o3IPgtPDpP0n31n2x+sHZ8P qnD6ywEQ/XUOfcSMmLISlbZSQ4eCs3XeOu5Ot8uw59ST6CVoxIAtHNdY0t2IlDBf765J tXUNLzMjZ/MkMMVVCqZFN+Yx6NUYQW556qnAUX5HOSniDlurQa7PPrkPOdJNt+Q6HcEK Rvy6d+0EUz4zUA/Mi5t2Hi00l+V7/LD0nNl2Q9jJ9zOKtcZNM/eXM3gtZ5llNAkwXT/3 IWBw== X-Gm-Message-State: AC+VfDxv9VYx84NRCpTgPjaIkzPay4SJ7Lp0HmgGZFWRc18mwYJJLQIa 23zjMMME1imZCYSHKLq6xbOyKG//ZW497LNqaytCBw== X-Google-Smtp-Source: ACHHUZ5+PvtsHNs9Wy1quunYgyqWj1bXlsRhzyJYtceWJ7YMan2oFDzco6hyvxSK51LzuybFcQy+cg== X-Received: by 2002:a17:902:d2ca:b0:1b6:8c7e:4e7a with SMTP id n10-20020a170902d2ca00b001b68c7e4e7amr15240644plc.67.1687937834808; Wed, 28 Jun 2023 00:37:14 -0700 (PDT) Received: from GL4FX4PXWL.bytedance.net ([203.208.167.146]) by smtp.gmail.com with ESMTPSA id jj6-20020a170903048600b001b8021fbcd2sm4836988plb.280.2023.06.28.00.37.12 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Wed, 28 Jun 2023 00:37:14 -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 v4 2/4] maple_tree: add test for expanding range in RCU mode Date: Wed, 28 Jun 2023 15:36:55 +0800 Message-Id: <20230628073657.75314-3-zhangpeng.00@bytedance.com> X-Mailer: git-send-email 2.37.0 (Apple Git-136) In-Reply-To: <20230628073657.75314-1-zhangpeng.00@bytedance.com> References: <20230628073657.75314-1-zhangpeng.00@bytedance.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspamd-Queue-Id: 1AD302000D X-Rspam-User: X-Stat-Signature: n81xzanabi99i7d79yrxumcfp9urnui3 X-Rspamd-Server: rspam03 X-HE-Tag: 1687937835-5462 X-HE-Meta: U2FsdGVkX19esGLulvDYoMzChpLRSqkFrYgDLRAAaDU+ALd5p93WbuK7K5054QrwUxXcZkUqWslRpMQYBRItJDOoUdXqg2sor6MCBPa45hdjBnBIY+XV7QXK8sTYh+4u748MUVWY9rAxNTj1B5i47ApA1EdObpjO3Z/JHcczpu2fqVzf8MggcO+l0snrIAF6JBXG9TJNTKTgnypGFc6dp59AIvA5g4LgOL28bxrNmBNJVQz9g+lxC0p+snd4+LBnb4Ts7Y/SRjh/KXZ+xQh8J2QCTZwdq6gps6mzFDD2s2RHMiENEe2l3oXvm6yjgyv/+CC3Jf6bHA9PeUezPTqTsqosp8OIDm9ljpay3iW72dk/5CLT61PCHmNX9mcpGNfuId/8MWam7vXCROpg+uwJC/NukzZPYQnX1bUp/SxGo8ssfL5a6kSggUr/Ldsv02RXIqKnmi/eJLcGoFIE/X0CLQe8D/yNt7vWcsGrokoNV3/sLwRujhOiZ2x5Zm3NkPMo0I0NE/tcZ4pJXI0Hh1wR1Oaku6aylWsBnLs4B+8HgtbLXL4ehz0HEa81DQYwn/s6XoJghFeQhoO8FdEoi1NGbgSSFfzo8W8huH2/ig28MY2eGYZbNGHl6SHR3SVRo53awa6mkKSlTDvrBSm6n2R8R9K6g/sc7Pxu1yIJpSWYqQ20D13mT62MEoSltYB8rmKHQMNkUI1N04ly9qW95KBYKe0jUuz+/jpvgnDTOQEZFqueF4ZaJML7BmOuwCdQ8Z/yVJrrGmTQ5L6LlmcxC2fegBIDaPaVnrpaC+mAoDVCLEX91ENawCLTxMFUg6YMx1iBQPMJTktG8ZZXTBWl58AZ55iK2WcagOMWtOWHK4KoTWwKqWH+xjVa9DPkC1AG706kW/FwrFlvNfxLJuU/Z4jpyg0kJt7IczDJjh3zJb+SL3xEF4Z4l4FuYH+OVeizBltcIN313cVoTZcW/00gpkx CrwDzPyd nwy5ySr4YWM/oJWw1Fcan0zLMe4UWk0/OK2WnpXbig1MmJeB7FPw9H/JJQZWIXgyiqBQ0D2/kGstdn7IelbB9bfH9S3QxKXdtZp08yewYKeGYITIE6yFm2EvMUsY6QCPol556kI7zUco7EjKjltNUDAjQOZfmyXCAgKLqhEa8BIlQcwOaCwaR4L8ZFIUUFlRpuT5OhVjjzWq4TXls1cKtmpsRZXmYsIDjrnEBUtEQzLRbIJDMaNikIXB39WPURAU2/oYlDPMjesp5ymNTrTm0V9t3AK/IzFAkqBr+O0cROFHppmt7kGcQ0u8TePMkPhE5K3fzWoyuN5sy0Ppy9c8tsLneKqfNrcR6AzbuycxDf8R2cIhB4HvsbCPt318H+h94yHD0WesThG6MJDsXjfIuSBwsdUC0SKtYZV5BrR/nx/CBejI+r7R2BHZXCmPAKef9aBnAN0A/ibm6gehTXz3pU2kipoAwr+cFZm06 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 test for expanding range in RCU mode. If we use the fast path of the slot store to expand range in RCU mode, this test will fail. Signed-off-by: Peng Zhang Reviewed-by: Liam R. Howlett --- tools/testing/radix-tree/maple.c | 75 ++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) diff --git a/tools/testing/radix-tree/maple.c b/tools/testing/radix-tree/maple.c index 03539d86cdf0..312c0d9fcbae 100644 --- a/tools/testing/radix-tree/maple.c +++ b/tools/testing/radix-tree/maple.c @@ -45,6 +45,13 @@ struct rcu_test_struct2 { unsigned long last[RCU_RANGE_COUNT]; }; +struct rcu_test_struct3 { + struct maple_tree *mt; + unsigned long index; + unsigned long last; + bool stop; +}; + struct rcu_reader_struct { unsigned int id; int mod; @@ -34954,6 +34961,70 @@ void run_check_rcu(struct maple_tree *mt, struct rcu_test_struct *vals) MT_BUG_ON(mt, !vals->seen_entry2); } +static void *rcu_slot_store_reader(void *ptr) +{ + struct rcu_test_struct3 *test = ptr; + MA_STATE(mas, test->mt, test->index, test->index); + + rcu_register_thread(); + + rcu_read_lock(); + while (!test->stop) { + mas_walk(&mas); + /* The length of growth to both sides must be equal. */ + RCU_MT_BUG_ON(test, (test->index - mas.index) != + (mas.last - test->last)); + } + rcu_read_unlock(); + + rcu_unregister_thread(); + return NULL; +} + +static noinline void run_check_rcu_slot_store(struct maple_tree *mt) +{ + pthread_t readers[20]; + int range_cnt = 200, i, limit = 10000; + unsigned long len = ULONG_MAX / range_cnt, start, end; + struct rcu_test_struct3 test = {.stop = false, .mt = mt}; + + start = range_cnt / 2 * len; + end = start + len - 1; + test.index = start; + test.last = end; + + for (i = 0; i < range_cnt; i++) { + mtree_store_range(mt, i * len, i * len + len - 1, + xa_mk_value(i * 100), GFP_KERNEL); + } + + mt_set_in_rcu(mt); + MT_BUG_ON(mt, !mt_in_rcu(mt)); + + for (i = 0; i < ARRAY_SIZE(readers); i++) { + if (pthread_create(&readers[i], NULL, rcu_slot_store_reader, + &test)) { + perror("creating reader thread"); + exit(1); + } + } + + usleep(5); + + while (limit--) { + /* Step by step, expand the most middle range to both sides. */ + mtree_store_range(mt, --start, ++end, xa_mk_value(100), + GFP_KERNEL); + } + + test.stop = true; + + while (i--) + pthread_join(readers[i], NULL); + + mt_validate(mt); +} + static noinline void run_check_rcu_slowread(struct maple_tree *mt, struct rcu_test_struct *vals) { @@ -35206,6 +35277,10 @@ static noinline void __init check_rcu_threaded(struct maple_tree *mt) run_check_rcu(mt, &vals); mtree_destroy(mt); + /* Check expanding range in RCU mode */ + mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); + run_check_rcu_slot_store(mt); + mtree_destroy(mt); /* Forward writer for rcu stress */ mt_init_flags(mt, MT_FLAGS_ALLOC_RANGE); -- 2.20.1