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 4BD4DC77B7D for ; Mon, 15 May 2023 13:18:57 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id D0E2D900005; Mon, 15 May 2023 09:18:56 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id C962E900004; Mon, 15 May 2023 09:18:56 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id B0FB3900005; Mon, 15 May 2023 09:18:56 -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 97F48900004 for ; Mon, 15 May 2023 09:18:56 -0400 (EDT) Received: from smtpin07.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 5870C1A12BC for ; Mon, 15 May 2023 13:18:56 +0000 (UTC) X-FDA: 80792544672.07.1125A54 Received: from mail-pf1-f179.google.com (mail-pf1-f179.google.com [209.85.210.179]) by imf23.hostedemail.com (Postfix) with ESMTP id 3F59A140019 for ; Mon, 15 May 2023 13:18:54 +0000 (UTC) Authentication-Results: imf23.hostedemail.com; dkim=pass header.d=bytedance.com header.s=google header.b=OY1tnyrN; spf=pass (imf23.hostedemail.com: domain of zhangpeng.00@bytedance.com designates 209.85.210.179 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=1684156734; 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=ArSLVUhdR9DQTTW/HQ0w3hLWCHQGeUGpXjVNbpJHsbw=; b=2qkOg3XRmRWz2fzBwX5klm5UuMHd/OVq8Skj2K4VlM2foVcKt3d/xUUZ2ErNIXgEvQpo27 q3yPirkPwLb5lWonZO3aH6FCqcsr+yIa5zlr9PTHUs/VUc/KXlxcfEhd1grjy5Bcq5GCZA wANmqFj3UH3mYmIKctR6g5J6+Qwexp8= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1684156734; a=rsa-sha256; cv=none; b=2uu8i1L4P3W2JD9jMLtdz/3CoY0FI6FzXqbn/m0D+sEYzmPR1ekmR2fo7qD2TfyIjevZgq sMv3Zl3j4xiVPjhyg+Ld+ZoLcEfoeC3p7RfR8ERBjPRfjcvGC3H3DQ8oOLodkbZEIFzUNO wrhMuALhAPJZEqK6WBw/g3gcFYQGlRw= ARC-Authentication-Results: i=1; imf23.hostedemail.com; dkim=pass header.d=bytedance.com header.s=google header.b=OY1tnyrN; spf=pass (imf23.hostedemail.com: domain of zhangpeng.00@bytedance.com designates 209.85.210.179 as permitted sender) smtp.mailfrom=zhangpeng.00@bytedance.com; dmarc=pass (policy=quarantine) header.from=bytedance.com Received: by mail-pf1-f179.google.com with SMTP id d2e1a72fcca58-643b7b8f8ceso7258938b3a.1 for ; Mon, 15 May 2023 06:18:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bytedance.com; s=google; t=1684156733; x=1686748733; 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=ArSLVUhdR9DQTTW/HQ0w3hLWCHQGeUGpXjVNbpJHsbw=; b=OY1tnyrNCLJ8dOnmp29AF4fQG0LVxASZn702ct1srPN3WTfsxFNCBRYdQLYwc6kuWt o70JfEDVIFUdVdNeIH/jJPOcRv9jEbVvhWXHoX+VGSuoQzE4KAv2rLMaD5HqYeqThYB2 leU3yXWK2fpP4YQP7Nl4A6y2ls2C4xj20yTIY9f5SnUx6QaV0HKLQbNCKwV3+/ZHg3bn hwgtpNiJfKbcLKuvi/rJSfuqMI3aUr0+XWuap/hwlD0We5HkP++9q+9T/JB7ZhTWl5TL 0NSOdoksiwNTnC1LHb060N3xyPjGvo8Xmw6pLH5YEXuU+R3+mn9q+We4wQvInISp/lEs cKzw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1684156733; x=1686748733; 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=ArSLVUhdR9DQTTW/HQ0w3hLWCHQGeUGpXjVNbpJHsbw=; b=QTVrvKNyl6DAOKdhWjbqT1h6h7X2zoz/YCwFj78XKhLF6rQX7XkOttjLOZkuFhbLyv B+9vvG94XoTwQnRNZmfWLKiXZ8UxCNeXj01VM2yHjT3BUFHneQLslAlZtJJD0EXb0nRZ Nu2fjKo/dlZlDp6MTkHj1fJMD+asumdHHwRZW5NCIxK42/auJxqSBbppUGv1xlkZ0GWK vo7Kd0agbcWAftrvizSDZRsJ82bCau1OoCn2e2Zxmiq6y/RflpukqfW0bxue/kcT2iXf cRTGucDS79fyolDb9KNNprQlVF8gAwbYynyICwxelM5Uskk9p9cHpUtNsSnOKU3GFSgG Ei6A== X-Gm-Message-State: AC+VfDyZJHikauJW16li5JFns96UOVB1zSip9dAW0OX9+nNAdBfZVe5p 86PY/r+ZgKWjaHr9etcPbu8XYA== X-Google-Smtp-Source: ACHHUZ6YT7KoeQeNgm4bcB4ACN2DGOZvEt8Ia9xhmqJ46OkY/eCRFO8DvWR5h4sWDKWbrM68M9ETbg== X-Received: by 2002:a05:6a20:1448:b0:105:55a7:d5ff with SMTP id a8-20020a056a20144800b0010555a7d5ffmr8063212pzi.28.1684156733094; Mon, 15 May 2023 06:18:53 -0700 (PDT) Received: from GL4FX4PXWL.bytedance.net ([139.177.225.239]) by smtp.gmail.com with ESMTPSA id gl20-20020a17090b121400b0024749e7321bsm14190014pjb.6.2023.05.15.06.18.50 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Mon, 15 May 2023 06:18:52 -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 10/10] maple_tree: Simplify and clean up mas_wr_node_store() Date: Mon, 15 May 2023 21:17:57 +0800 Message-Id: <20230515131757.60035-11-zhangpeng.00@bytedance.com> X-Mailer: git-send-email 2.37.0 (Apple Git-136) In-Reply-To: <20230515131757.60035-1-zhangpeng.00@bytedance.com> References: <20230515131757.60035-1-zhangpeng.00@bytedance.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Stat-Signature: y4yjsgcrcmo63us8pjcs6adfb19uajkx X-Rspamd-Server: rspam03 X-Rspam-User: X-Rspamd-Queue-Id: 3F59A140019 X-HE-Tag: 1684156733-236783 X-HE-Meta: U2FsdGVkX18EdxcOctLhj0WEPSAydKvSwu6C2ti9Gp5DtqFbOoSlmPi+WUVbUpoGNJMeRa/LW0xwbODMQ4zmpKe69meFP9SXi9MDkS4xE88N4h39N4yS6e3uCWOvYwX5H/xWfMQWpUFuE7sp1+RwXWS6T+k3GCo9a+sD2V20ZqpebmvlbTxO74TfujxgoFzAtnX7cWVljUkwVsypytcAOChdA4u19KTm77KxsshMWeCoa1vMCHibb+1D4aQHzb1mO375OA7rDAYXrBp8bWjSZbKY7yBPWF9Mq+9smyKlk/Ttq8wVZ4SrYi4EF0c/ghaYvqMF9ashIPyA9wiQIIDscPtmg711ogs3o/TA2y6Zhy/4Gy7xcf6VWT2YBadi/OftmK7veI5O6TovsazEhkrNALyUfU7t1JbLh6r52g1bmri9LqQR4wfi5p47e3Kn7JssxHM8S2X4mVY/rQBI3izwht1xpLesPQTT3lHIoU1lpNkJ5AZE1+UzG3ZFUVAxAim48qfnP5lasMbZw1oPu2mUEViERknSRbHn5K2U5K9EpcH/QtinSLHM7EJ0TxWSlCHme7wQ3E0B4qnTyHu1pbVCDpNmtvBHJdTCTp6xLYrnyKAo5xHsgHt1T9cZKSPq0PHDcg+sPN9/zt+J4e4AkcxTEd4SoBX4PEOvxbkfSopU/QdGM/izmHFg7bq5m1Tp04dBnOuilYBPHJRcTd/0WgxuAsH6ZU5/azhjmzOf8NehcUA75Td0lYYTu90chA/r6KWU9Yek3RydqW0JSk9LnapKAKL/O346onTHPU8rO9AYArvrJ5PCzkczJt1hXBLzPoGqhXIjyAH/SC0IbjsVkqofs05OMGUOuITTQfHRCuHrbxOx+bgQs1x71jTHkqt72cxYk1YMzruXL5Q/NyDi7074z0xqIDnnAQSvLfTV/fAuwxNoi9cjzZDx5r6A8+eR85XTvvV7NIrPlKdpE7VYpSa DyZ7MIf0 1LUgVSZ9mleaimC+/1GAcqNz5hQzCuGcDjr9SeEhpEygjQa3/p6SGoH/tWYolLKj6gFkTSDN3KBVK3iSZRuFkUDCaolC4RJO67KZzR7PALdUZdTzIFy2V8laCFBUoz39rSYYBzWTwuLzzx3Vq6QOM2zN273FNhSbwqsap5znnzdru/aVxKXqzRTZmcKSzji3sAZpvvPiQGFw0TOUaDQa5uji5q5IjKc7aJ5tPsQSfPaNlWpUDl8wpGYRl2+rm3ZkCjDIILZ3BQFBR4bfm78eljqgPz0iMBCF+zpwwaUsrHTfIyb2sck3TLPYEAmbjq7unrbEex3G7J2ANTPv6HuiUG6tg6B43e5Lph7pTohCyCYaS92AmhNjR3HudlMmUJXyqf7ttBKgR07AfSz+CJWXLsqDyJvKblRqNhpaiP9/5YkIhZnip2V9qHAyVmZsxHYQrXDuN987gjlk2VUE= 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: Simplify and clean up mas_wr_node_store(), remove unnecessary code. Signed-off-by: Peng Zhang --- lib/maple_tree.c | 75 +++++++++++++----------------------------------- 1 file changed, 20 insertions(+), 55 deletions(-) diff --git a/lib/maple_tree.c b/lib/maple_tree.c index d558e7bcb6da8..ff4aa01cf88b6 100644 --- a/lib/maple_tree.c +++ b/lib/maple_tree.c @@ -4066,46 +4066,21 @@ static inline int mas_wr_spanning_store(struct ma_wr_state *wr_mas) * * Return: True if stored, false otherwise */ -static inline bool mas_wr_node_store(struct ma_wr_state *wr_mas) +static inline bool mas_wr_node_store(struct ma_wr_state *wr_mas, + unsigned char new_end) { struct ma_state *mas = wr_mas->mas; void __rcu **dst_slots; unsigned long *dst_pivots; unsigned char dst_offset; - unsigned char new_end = wr_mas->node_end; - unsigned char offset; - unsigned char node_slots = mt_slots[wr_mas->type]; struct maple_node reuse, *newnode; - unsigned char copy_size, max_piv = mt_pivots[wr_mas->type]; + unsigned char copy_size, node_pivots = mt_pivots[wr_mas->type]; bool in_rcu = mt_in_rcu(mas->tree); - offset = mas->offset; - if (mas->last == wr_mas->r_max) { - /* runs right to the end of the node */ - if (mas->last == mas->max) - new_end = offset; - /* don't copy this offset */ + if (mas->last == wr_mas->end_piv) wr_mas->offset_end++; - } else if (mas->last < wr_mas->r_max) { - /* new range ends in this range */ - if (unlikely(wr_mas->r_max == ULONG_MAX)) - mas_bulk_rebalance(mas, wr_mas->node_end, wr_mas->type); - - new_end++; - } else { - if (wr_mas->end_piv == mas->last) - wr_mas->offset_end++; - - new_end -= wr_mas->offset_end - offset - 1; - } - - /* new range starts within a range */ - if (wr_mas->r_min < mas->index) - new_end++; - - /* Not enough room */ - if (new_end >= node_slots) - return false; + else if (unlikely(wr_mas->r_max == ULONG_MAX)) + mas_bulk_rebalance(mas, wr_mas->node_end, wr_mas->type); /* Not enough data. */ if (!mte_is_root(mas->node) && (new_end <= mt_min_slots[wr_mas->type]) && @@ -4128,47 +4103,36 @@ static inline bool mas_wr_node_store(struct ma_wr_state *wr_mas) dst_pivots = ma_pivots(newnode, wr_mas->type); dst_slots = ma_slots(newnode, wr_mas->type); /* Copy from start to insert point */ - memcpy(dst_pivots, wr_mas->pivots, sizeof(unsigned long) * (offset + 1)); - memcpy(dst_slots, wr_mas->slots, sizeof(void *) * (offset + 1)); - dst_offset = offset; + memcpy(dst_pivots, wr_mas->pivots, sizeof(unsigned long) * mas->offset); + memcpy(dst_slots, wr_mas->slots, sizeof(void *) * mas->offset); /* Handle insert of new range starting after old range */ if (wr_mas->r_min < mas->index) { - mas->offset++; - rcu_assign_pointer(dst_slots[dst_offset], wr_mas->content); - dst_pivots[dst_offset++] = mas->index - 1; + rcu_assign_pointer(dst_slots[mas->offset], wr_mas->content); + dst_pivots[mas->offset++] = mas->index - 1; } /* Store the new entry and range end. */ - if (dst_offset < max_piv) - dst_pivots[dst_offset] = mas->last; - mas->offset = dst_offset; - rcu_assign_pointer(dst_slots[dst_offset], wr_mas->entry); + if (mas->offset < node_pivots) + dst_pivots[mas->offset] = mas->last; + rcu_assign_pointer(dst_slots[mas->offset], wr_mas->entry); /* * this range wrote to the end of the node or it overwrote the rest of * the data */ - if (wr_mas->offset_end > wr_mas->node_end || mas->last >= mas->max) { - new_end = dst_offset; + if (wr_mas->offset_end > wr_mas->node_end) goto done; - } - dst_offset++; + dst_offset = mas->offset + 1; /* Copy to the end of node if necessary. */ copy_size = wr_mas->node_end - wr_mas->offset_end + 1; memcpy(dst_slots + dst_offset, wr_mas->slots + wr_mas->offset_end, sizeof(void *) * copy_size); - if (dst_offset < max_piv) { - if (copy_size > max_piv - dst_offset) - copy_size = max_piv - dst_offset; + memcpy(dst_pivots + dst_offset, wr_mas->pivots + wr_mas->offset_end, + sizeof(unsigned long) * (copy_size - 1)); - memcpy(dst_pivots + dst_offset, - wr_mas->pivots + wr_mas->offset_end, - sizeof(unsigned long) * copy_size); - } - - if ((wr_mas->node_end == node_slots - 1) && (new_end < node_slots - 1)) + if (new_end < node_pivots) dst_pivots[new_end] = mas->max; done: @@ -4429,7 +4393,8 @@ static inline void mas_wr_modify(struct ma_wr_state *wr_mas) if (new_end == wr_mas->node_end && mas_wr_slot_store(wr_mas)) return; - else if (mas_wr_node_store(wr_mas)) + + if (mas_wr_node_store(wr_mas, new_end)) return; if (mas_is_err(mas)) -- 2.20.1