From: Andreas Hindborg <a.hindborg@kernel.org>
To: "Tamir Duberstein" <tamird@gmail.com>,
"Miguel Ojeda" <ojeda@kernel.org>,
"Alex Gaynor" <alex.gaynor@gmail.com>,
"Boqun Feng" <boqun.feng@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>,
"Lorenzo Stoakes" <lorenzo.stoakes@oracle.com>,
"Liam R. Howlett" <Liam.Howlett@oracle.com>,
"Vlastimil Babka" <vbabka@suse.cz>,
"Andrew Morton" <akpm@linux-foundation.org>,
"Christoph Lameter" <cl@gentwo.org>,
"David Rientjes" <rientjes@google.com>,
"Roman Gushchin" <roman.gushchin@linux.dev>,
"Harry Yoo" <harry.yoo@oracle.com>
Cc: Daniel Gomez <da.gomez@kernel.org>,
rust-for-linux@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-mm@kvack.org, Andreas Hindborg <a.hindborg@kernel.org>,
"Matthew Wilcox (Oracle)" <willy@infradead.org>
Subject: [PATCH v2 00/11] rust: xarray: add entry API with preloading
Date: Fri, 06 Feb 2026 22:10:46 +0100 [thread overview]
Message-ID: <20260206-xarray-entry-send-v2-0-91c41673fd30@kernel.org> (raw)
This patch series is a mashup of cleanups, bugfixes and feature additions for
the Rust XArray abstractions.
- Patch 1 starts by fixing minor formatting issues and bringing use
statements up to date with the new coding guidelines.
- Patch 2-3 add some minor convenience functionality.
- Patch 4 adds an abstraction for the C `xa_state` structure. This is a
prerequisite for all the subsequent patches.
- Patch 5 removes an unnecessary rcu lock in `xarray::Guard::load`.
- Patch 6 is a simplifying refactor of `xarray::Guard::load`.
- Patch 7 adds two new methods for finding items with keys that are larger
than a given integer.
- Patch 8 adds an entry API.
- Patch 9-10 adds support for object caches based on sheafs.
- Patch 11 adds preloading to the new entry API.
The feature additions in this series are dependencies for the rust null
block driver, most of which is still downstream.
Best regards,
Andreas
Signed-off-by: Andreas Hindborg <a.hindborg@kernel.org>
---
Changes in v2:
- Rebase on v6.19-rc8.
- Update the cover letter.
- Implement preloading with sheafs.
- Investigate generating RUST_CONST_HELPER_XAS_RESTART as pointer -> Not possible.
- Correct wording of commit message for patch "rust: xarray: use `xas_load` instead of `xa_load` in `Guard::load`".
- Correct wording of commit message for patch "rust: xarray: add `find_next` and `find_next_mut`".
- Remove last patch (lockdep static key fix) from series, to be sent separately.
- Expand note on why store to occupied slot cannot fail.
- Change signature of `OccupiedEntry::swap` to match core::mem::swap.
- Move // NOTEs about storing NULL closer to relevant checks.
- Move `insert_internal` to `XArrayState`.
- Share logic between `find_next` and `find_next_entry`.
- Rename `XArray::get_entry` to `XArray::entry`.
- Make `load_next` a method on `XArrayState`.
- Move load logic to `XArrayState`.
- Use `PhantomData` to capture lifetime of `Guard` for `XArrayState`.
- Link to v1: https://lore.kernel.org/r/20251203-xarray-entry-send-v1-0-9e5ffd5e3cf0@kernel.org
---
Andreas Hindborg (11):
rust: xarray: minor formatting fixes
rust: xarray: add debug format for `StoreError`
rust: xarray: add `contains_index` method
rust: xarray: add `XArrayState`
rust: xarray: use `xas_load` instead of `xa_load` in `Guard::load`
rust: xarray: simplify `Guard::load`
rust: xarray: add `find_next` and `find_next_mut`
rust: xarray: add entry API
rust: mm: add abstractions for allocating from a `sheaf`
rust: mm: sheaf: allow use of C initialized static caches
rust: xarray: add preload API
MAINTAINERS | 1 +
include/linux/radix-tree.h | 3 +
lib/radix-tree.c | 5 +-
mm/slub.c | 4 +
rust/bindings/bindings_helper.h | 4 +
rust/helpers/xarray.c | 17 +
rust/kernel/mm.rs | 2 +
rust/kernel/mm/sheaf.rs | 689 ++++++++++++++++++++++++++++++++++++++++
rust/kernel/xarray.rs | 477 ++++++++++++++++++++++++++--
rust/kernel/xarray/entry.rs | 378 ++++++++++++++++++++++
rust/kernel/xarray/preload.rs | 3 +
11 files changed, 1549 insertions(+), 34 deletions(-)
---
base-commit: 18f7fcd5e69a04df57b563360b88be72471d6b62
change-id: 20251203-xarray-entry-send-00230f0744e6
Best regards,
--
Andreas Hindborg <a.hindborg@kernel.org>
next reply other threads:[~2026-02-06 21:12 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-02-06 21:10 Andreas Hindborg [this message]
2026-02-06 21:10 ` [PATCH v2 01/11] rust: xarray: minor formatting fixes Andreas Hindborg
2026-02-06 21:10 ` [PATCH v2 02/11] rust: xarray: add debug format for `StoreError` Andreas Hindborg
2026-02-06 21:10 ` [PATCH v2 03/11] rust: xarray: add `contains_index` method Andreas Hindborg
2026-02-06 21:10 ` [PATCH v2 04/11] rust: xarray: add `XArrayState` Andreas Hindborg
2026-02-06 21:10 ` [PATCH v2 05/11] rust: xarray: use `xas_load` instead of `xa_load` in `Guard::load` Andreas Hindborg
2026-02-06 21:10 ` [PATCH v2 06/11] rust: xarray: simplify `Guard::load` Andreas Hindborg
2026-02-06 21:10 ` [PATCH v2 07/11] rust: xarray: add `find_next` and `find_next_mut` Andreas Hindborg
2026-02-06 21:10 ` [PATCH v2 08/11] rust: xarray: add entry API Andreas Hindborg
2026-02-06 21:10 ` [PATCH v2 09/11] rust: mm: add abstractions for allocating from a `sheaf` Andreas Hindborg
2026-02-06 21:10 ` [PATCH v2 10/11] rust: mm: sheaf: allow use of C initialized static caches Andreas Hindborg
2026-02-06 21:10 ` [PATCH v2 11/11] rust: xarray: add preload API Andreas Hindborg
2026-02-06 21:43 ` Andreas Hindborg
2026-02-07 5:04 ` kernel test robot
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=20260206-xarray-entry-send-v2-0-91c41673fd30@kernel.org \
--to=a.hindborg@kernel.org \
--cc=Liam.Howlett@oracle.com \
--cc=akpm@linux-foundation.org \
--cc=alex.gaynor@gmail.com \
--cc=aliceryhl@google.com \
--cc=bjorn3_gh@protonmail.com \
--cc=boqun.feng@gmail.com \
--cc=cl@gentwo.org \
--cc=da.gomez@kernel.org \
--cc=dakr@kernel.org \
--cc=gary@garyguo.net \
--cc=harry.yoo@oracle.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=lorenzo.stoakes@oracle.com \
--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@gmail.com \
--cc=tmgross@umich.edu \
--cc=vbabka@suse.cz \
--cc=willy@infradead.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