linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: "Liam R. Howlett" <Liam.Howlett@oracle.com>
To: Wei Yang <richard.weiyang@gmail.com>
Cc: akpm@linux-foundation.org, maple-tree@lists.infradead.org,
	linux-mm@kvack.org
Subject: Re: [PATCH 2/2] maple_tree: memset maple_big_node as a whole
Date: Sat, 7 Sep 2024 09:29:01 -0400	[thread overview]
Message-ID: <oxzcwpp5oliumggyc4thic2lpd34f7yrvjylpgj3cuc3eubyev@vxha3tffbvc2> (raw)
In-Reply-To: <20240907084927.1547-2-richard.weiyang@gmail.com>

* Wei Yang <richard.weiyang@gmail.com> [240907 04:50]:
> In maple_big_node, we define slot and padding/gap in a union. And based
> on current definition of MAPLE_BIG_NODE_SLOTS/GAPS, padding is always
> less then slot and part of the gap is overlapped by slot.
       ^^^^- than

> 
> For example on 64bit system:
> 
>   MAPLE_BIG_NODE_SLOT is 34
>   MAPLE_BIG_NODE_GAP  is 21
> 
> With this knowledge, current code actually clear the whole
> maple_big_node and even clear some space twice.
> 
> Instead of clear maple_big_node each field separately, let's clear it in
> one memset.
> 
> Signed-off-by: Wei Yang <richard.weiyang@gmail.com>
> CC: Liam R. Howlett <Liam.Howlett@Oracle.com>
> 
> ---
> Liam:
> 
> This looks obvious, so I just run the ./maple test to see it doesn't
> break anything.
> 

The big node also includes the type, which isn't cleared.  However it is
unconditionally set below, so your change log is not correct in the
statement that it is fully cleared, but the code will work and it is
worth fixing what you have found.

If you are sending more than one patch, it is better to make a
cover letter to explain your series.

It is probably worth re-spinning the series to fix the comment, but
these changes look good.  I'll have a closer look later.

> Do you think I need to add a benchmark and run a perf for this kind of
> change?

No, you are doing less work so this should be better as long as it is
correct.  Zeroing can be expensive on some archs so this is good.

> ---
>  lib/maple_tree.c | 5 +----
>  1 file changed, 1 insertion(+), 4 deletions(-)
> 
> diff --git a/lib/maple_tree.c b/lib/maple_tree.c
> index d8f10773e451..911c5e04e634 100644
> --- a/lib/maple_tree.c
> +++ b/lib/maple_tree.c
> @@ -3134,10 +3134,7 @@ static inline void mast_fill_bnode(struct maple_subtree_state *mast,
>  	bool cp = true;
>  	unsigned char split;
>  
> -	memset(mast->bn->gap, 0, sizeof(unsigned long) * ARRAY_SIZE(mast->bn->gap));
> -	memset(mast->bn->slot, 0, sizeof(unsigned long) * ARRAY_SIZE(mast->bn->slot));
> -	memset(mast->bn->pivot, 0, sizeof(unsigned long) * ARRAY_SIZE(mast->bn->pivot));
> -	mast->bn->b_end = 0;
> +	memset(mast->bn, 0, sizeof(struct maple_big_node));
>  
>  	if (mte_is_root(mas->node)) {
>  		cp = false;
> -- 
> 2.34.1
> 


  reply	other threads:[~2024-09-07 13:29 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-09-07  8:49 [PATCH 1/2] maple_tree: remove maple_big_node.parent Wei Yang
2024-09-07  8:49 ` [PATCH 2/2] maple_tree: memset maple_big_node as a whole Wei Yang
2024-09-07 13:29   ` Liam R. Howlett [this message]
2024-09-08  9:34     ` Wei Yang

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=oxzcwpp5oliumggyc4thic2lpd34f7yrvjylpgj3cuc3eubyev@vxha3tffbvc2 \
    --to=liam.howlett@oracle.com \
    --cc=akpm@linux-foundation.org \
    --cc=linux-mm@kvack.org \
    --cc=maple-tree@lists.infradead.org \
    --cc=richard.weiyang@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox