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 3/3] maple_tree: assert retrieving new value on a tree with only root node
Date: Tue, 11 Feb 2025 10:25:27 -0500	[thread overview]
Message-ID: <xsmz6vkroxm7xhleg4rtz6pl27kvy5aympc5rxmfxz7ktt246y@ealwaor3k3rw> (raw)
In-Reply-To: <20250211080227.obocjediyeef7ef4@master>

* Wei Yang <richard.weiyang@gmail.com> [250211 03:02]:
> On Mon, Feb 10, 2025 at 09:18:53AM -0500, Liam R. Howlett wrote:
> >* Wei Yang <richard.weiyang@gmail.com> [250207 20:26]:
> >> Original code may get a stall value when overwriting the whole range on a
> >                          ^^^^^- stale value.  I thought you were saying
> >			  it was stalling which did not make sense.
> >
> 
> I want to say we don't get the new value as we expect.
> 
> How about:
> 
> Original code may not get the new value after overwriting the whole range on a
> maple tree with only root node.

That's more clear than what you had before.  Usually you try to
concentrate on what you did, not what was there.

Ensure the new value is returned when overwriting a tree containing just
a leaf node.

> 
> >> maple tree with only root node. The reason is we didn't set the only
> >> root node dead during destroy.
> >> 
> >> Add a test case to verify this is not recreated.
> >> 
> >> Signed-off-by: Wei Yang <richard.weiyang@gmail.com>
> >> CC: Liam R. Howlett <Liam.Howlett@Oracle.com>
> >> ---
> >>  tools/testing/radix-tree/maple.c | 24 ++++++++++++++++++++++++
> >>  1 file changed, 24 insertions(+)
> >> 
> >> diff --git a/tools/testing/radix-tree/maple.c b/tools/testing/radix-tree/maple.c
> >> index bc30050227fd..1e293e4d856d 100644
> >> --- a/tools/testing/radix-tree/maple.c
> >> +++ b/tools/testing/radix-tree/maple.c
> >> @@ -35256,6 +35256,30 @@ static noinline void __init check_rcu_simulated(struct maple_tree *mt)
> >>  	MT_BUG_ON(mt, mas_prev(&mas_reader, 0) != xa_mk_value(val));
> >>  	rcu_read_unlock();
> >>  
> >> +	/* Clear out tree & create one with only root node */
> >> +	mas_lock(&mas_writer);
> >> +	mas_set_range(&mas_writer, 0, ULONG_MAX);
> >> +	mas_store_gfp(&mas_writer, NULL, GFP_KERNEL);
> >> +	mas_set_range(&mas_writer, 0, 0);
> >> +	for (i = 0; i <= 5; i++) {
> >> +		mas_writer.index = i * 10;
> >> +		mas_writer.last = i * 10 + 5;
> >> +		mas_store_gfp(&mas_writer, xa_mk_value(i), GFP_KERNEL);
> >> +	}
> >> +	mas_unlock(&mas_writer);
> >> +	target = 10;
> >> +	mas_set_range(&mas_reader, target, target);
> >> +	rcu_read_lock();
> >> +	MT_BUG_ON(mt, mas_walk(&mas_reader) != xa_mk_value(target/10));
> >> +
> >> +	/* Overwrite the whole range */
> >> +	mas_lock(&mas_writer);
> >> +	mas_set_range(&mas_writer, 0, ULONG_MAX);
> >> +	mas_store_gfp(&mas_writer, xa_mk_value(val), GFP_KERNEL);
> >> +	mas_unlock(&mas_writer);
> >> +	MT_BUG_ON(mt, mas_walk(&mas_reader) != xa_mk_value(val));
> >> +	rcu_read_unlock();
> >> +
> >>  	rcu_unregister_thread();
> >>  }
> >>  
> >> -- 
> >> 2.34.1
> >> 
> 
> -- 
> Wei Yang
> Help you, Help me


  reply	other threads:[~2025-02-11 15:26 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-02-08  1:18 [PATCH 0/3] may miss to set node dead on destroy Wei Yang
2025-02-08  1:18 ` [PATCH 1/3] maple_tree: " Wei Yang
2025-02-10 14:19   ` Liam R. Howlett
2025-02-11  7:48     ` Wei Yang
2025-02-11 15:23       ` Liam R. Howlett
2025-02-12  0:26         ` Wei Yang
2025-02-08  1:18 ` [PATCH 2/3] maple_tree: restart walk on correct status Wei Yang
2025-02-10 14:20   ` Liam R. Howlett
2025-02-08  1:18 ` [PATCH 3/3] maple_tree: assert retrieving new value on a tree with only root node Wei Yang
2025-02-10 14:18   ` Liam R. Howlett
2025-02-11  8:02     ` Wei Yang
2025-02-11 15:25       ` Liam R. Howlett [this message]
2025-02-12  0:41         ` Wei Yang
2025-02-10 14:31 ` [PATCH 0/3] may miss to set node dead on destroy Liam R. Howlett
2025-02-11  8:11   ` Wei Yang
2025-02-11 15:28     ` Liam R. Howlett
2025-02-12  0:49       ` Wei Yang
2025-02-12  0:55       ` Wei Yang
2025-03-04 12:07         ` Wei Yang
2025-03-04 14:45           ` Liam R. Howlett
2025-03-05  0:32             ` 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=xsmz6vkroxm7xhleg4rtz6pl27kvy5aympc5rxmfxz7ktt246y@ealwaor3k3rw \
    --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