Linux-mm Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Andreas Hindborg <a.hindborg@kernel.org>
To: Tamir Duberstein <tamird@kernel.org>
Cc: "Miguel Ojeda" <ojeda@kernel.org>,
	"Alex Gaynor" <alex.gaynor@gmail.com>,
	"Gary Guo" <gary@garyguo.net>,
	"Björn Roy Baron" <bjorn3_gh@protonmail.com>,
	"Benno Lossin" <lossin@kernel.org>,
	"Alice Ryhl" <aliceryhl@google.com>,
	"Trevor Gross" <tmgross@umich.edu>,
	"Danilo Krummrich" <dakr@kernel.org>,
	"Andrew Morton" <akpm@linux-foundation.org>,
	"Christoph Lameter" <cl@gentwo.org>,
	"David Rientjes" <rientjes@google.com>,
	"Roman Gushchin" <roman.gushchin@linux.dev>,
	"Tamir Duberstein" <tamird@kernel.org>,
	"Boqun Feng" <boqun@kernel.org>,
	"Lorenzo Stoakes" <ljs@kernel.org>,
	"Liam R. Howlett" <liam@infradead.org>,
	"Vlastimil Babka" <vbabka@kernel.org>,
	"Harry Yoo" <harry@kernel.org>, "Hao Li" <hao.li@linux.dev>,
	"Daniel Gomez" <da.gomez@kernel.org>,
	rust-for-linux@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-mm@kvack.org
Subject: Re: [PATCH v4 07/11] rust: xarray: add entry API
Date: Tue, 25 Aug 2026 14:49:13 +0200	[thread overview]
Message-ID: <87mrua74c6.fsf@kernel.org> (raw)
In-Reply-To: <178067251358.96312.14084909265600226392.b4-review@b4>

Tamir Duberstein <tamird@kernel.org> writes:

> On Thu, 04 Jun 2026 21:58:13 +0200, Andreas Hindborg <a.hindborg@kernel.org> wrote:
>> Add an Entry API for XArray that provides ergonomic access to array
>> slots that may be vacant or occupied. The API follows the pattern of
>> Rust's standard library HashMap entry API, allowing efficient
>> conditional insertion and modification of entries.
>
> There's a lot more API here than this lets on.
> `find_next_entry{,_circular}`, `Entry::is_occupied`, `into_guard`,
> `insert{,_entry}` (do we need both?), `index`, `OccupiedEntry::swap`,
> `Deref{,Mut}`.

I can amend the commit message to enumerate the added methods.

> It's not clear that all this API is needed, and this message does not
> attempt to justify it. It is also inconsistent with the split in patches
> 3 and 4.

What do you mean when you say that it is not clear that the API is
needed? Are you referring to callers of this code? This is initially for
the rust null block driver, as expressed in the cover letter.

I'm not sure why you think this is inconsistent with patch 3 and 4?


>
>>
>>
>> diff --git a/rust/helpers/xarray.c b/rust/helpers/xarray.c
>> index 08979b304341..19fce6862c78 100644
>> --- a/rust/helpers/xarray.c
>> +++ b/rust/helpers/xarray.c
>> @@ -26,3 +26,20 @@ __rust_helper void rust_helper_xa_unlock(struct xarray *xa)
>>  {
>>  	return xa_unlock(xa);
>>  }
>> +
>> +void *rust_helper_xas_result(struct xa_state *xas, void *curr)
>> +{
>> +	if (xa_err(xas->xa_node))
>> +		curr = xas->xa_node;
>> +	return curr;
>> +}
>> +
>> +void *rust_helper_xa_zero_to_null(void *entry)
>> +{
>> +	return xa_is_zero(entry) ? NULL : entry;
>> +}
>
> These functions already exist in C, but are `static inline` in xarray.c.
> Can we move them to the header instead of duplicating them here please?
> That is what I did in 79ada2ae ("xarray: extract helper from
> __xa_{insert,cmpxchg}").

This is a great idea. I will follow up with a cleanup once this stuff is
in. Getting changes in the xarray C code has a rather high latency. I
would rather not be blocked by that at the moment.


Best regards,
Andreas Hindborg




  reply	other threads:[~2026-08-25 12:49 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-06-04 19:58 [PATCH v4 00/11] rust: xarray: add entry API with preloading Andreas Hindborg
2026-06-04 19:58 ` [PATCH v4 01/11] rust: xarray: minor formatting fixes Andreas Hindborg
2026-08-26 21:42   ` Daniel Almeida
2026-06-04 19:58 ` [PATCH v4 02/11] rust: xarray: add debug format for `StoreError` Andreas Hindborg
2026-06-05 15:15   ` Tamir Duberstein
2026-06-09  8:06     ` Andreas Hindborg
2026-08-26 21:43   ` Daniel Almeida
2026-06-04 19:58 ` [PATCH v4 03/11] rust: xarray: add `XArrayState` Andreas Hindborg
2026-06-05 15:15   ` Tamir Duberstein
2026-06-09  8:38     ` Andreas Hindborg
2026-08-27  0:55   ` Daniel Almeida
2026-06-04 19:58 ` [PATCH v4 04/11] rust: xarray: use `xas_load` instead of `xa_load` in `Guard::load` Andreas Hindborg
2026-08-27  0:59   ` Daniel Almeida
2026-06-04 19:58 ` [PATCH v4 05/11] rust: xarray: simplify `Guard::load` Andreas Hindborg
2026-06-05 15:15   ` Tamir Duberstein
2026-06-09  8:39     ` Andreas Hindborg
2026-08-27  1:04   ` Daniel Almeida
2026-06-04 19:58 ` [PATCH v4 06/11] rust: xarray: add `find_next` and `find_next_mut` Andreas Hindborg
2026-06-05 15:15   ` Tamir Duberstein
2026-08-25 12:43     ` Andreas Hindborg
2026-08-27  1:14   ` Daniel Almeida
2026-06-04 19:58 ` [PATCH v4 07/11] rust: xarray: add entry API Andreas Hindborg
2026-06-05 15:15   ` Tamir Duberstein
2026-08-25 12:49     ` Andreas Hindborg [this message]
2026-06-04 19:58 ` [PATCH v4 08/11] rust: mm: add abstractions for allocating from a `sheaf` Andreas Hindborg
2026-06-04 19:58 ` [PATCH v4 09/11] rust: mm: sheaf: allow use of C initialized static caches Andreas Hindborg
2026-06-04 19:58 ` [PATCH v4 10/11] xarray, radix-tree: enable sheaf support for kmem_cache Andreas Hindborg
2026-06-04 19:58 ` [PATCH v4 11/11] rust: xarray: add preload API Andreas Hindborg

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=87mrua74c6.fsf@kernel.org \
    --to=a.hindborg@kernel.org \
    --cc=akpm@linux-foundation.org \
    --cc=alex.gaynor@gmail.com \
    --cc=aliceryhl@google.com \
    --cc=bjorn3_gh@protonmail.com \
    --cc=boqun@kernel.org \
    --cc=cl@gentwo.org \
    --cc=da.gomez@kernel.org \
    --cc=dakr@kernel.org \
    --cc=gary@garyguo.net \
    --cc=hao.li@linux.dev \
    --cc=harry@kernel.org \
    --cc=liam@infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=ljs@kernel.org \
    --cc=lossin@kernel.org \
    --cc=ojeda@kernel.org \
    --cc=rientjes@google.com \
    --cc=roman.gushchin@linux.dev \
    --cc=rust-for-linux@vger.kernel.org \
    --cc=tamird@kernel.org \
    --cc=tmgross@umich.edu \
    --cc=vbabka@kernel.org \
    /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