From: Gary Guo <gary@kernel.org>
To: "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>,
"Andreas Hindborg" <a.hindborg@kernel.org>,
"Alice Ryhl" <aliceryhl@google.com>,
"Trevor Gross" <tmgross@umich.edu>,
"Danilo Krummrich" <dakr@kernel.org>
Cc: Will Deacon <will@kernel.org>,
Peter Zijlstra <peterz@infradead.org>,
Mark Rutland <mark.rutland@arm.com>,
rust-for-linux@vger.kernel.org
Subject: [PATCH v4 0/5] implement `kernel::sync::Refcount` and convert users
Date: Sun, 22 Jun 2025 13:57:26 +0100 [thread overview]
Message-ID: <20250622125802.3224264-1-gary@kernel.org> (raw)
From: Gary Guo <gary@garyguo.net>
Currently there're two refcount usage in rust/, `Arc` and `block::mq`.
`Arc` uses `refcount_t` with FFI calls directly, and `block::mq` use
Rust atomics and custom refcounting.
This series consolidate them to have a single `Refcount` which wraps
`refcount_t` and have it used by both.
With the removal of Rust `AtomicU64` this would also make the code work
for 32-bit systems. See [1] as a previous attempt to fix this issue.
Cc: Will Deacon <will@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Boqun Feng <boqun.feng@gmail.com>
Cc: Mark Rutland <mark.rutland@arm.com>
Link: https://lore.kernel.org/rust-for-linux/20240905061214.3954271-1-davidgow@google.com/ [1]
Changes in v4:
- Move justification on why `&Refcount` is okay when used for reference
coutning into the `Refcount::dec_and_test` documentation comment.
- Split `Arc::into_unique_or_drop` signature change into another patch.
- Wording/comment changes
- Link to v3: https://lore.kernel.org/rust-for-linux/20250219201602.1898383-1-gary@garyguo.net/
Changes in v3:
- Drop `dec_not_one` and revert to `dec_and_test`/`set` as the former
lacks acquire semantics.
- Move a `use` statement from patch 1 to correct place (patch 3).
- Update maintainer entry to include refcount.rs and add myself as a
reviewer, as suggested by Boqun.
- Link to v2: https://lore.kernel.org/rust-for-linux/20241221183024.3929500-1-gary@garyguo.net
Changes in v2:
- `Refcount::read` method is dropped
- `Refcount::dec_not_one` method is added and `Arc::into_unique_or_drop`
is converted to use it.
- Link to v1: https://lore.kernel.org/rust-for-linux/20241004155247.2210469-1-gary@garyguo.net
Gary Guo (4):
rust: implement `kernel::sync::Refcount`
rust: convert `Arc` to use `Refcount`
rust: block: convert `block::mq` to use `Refcount`
MAINTAINERS: update atomic infrastructure entry to include Rust
Gary Guo (5):
rust: implement `kernel::sync::Refcount`
rust: make `Arc::into_unique_or_drop` associated function
rust: convert `Arc` to use `Refcount`
rust: block: convert `block::mq` to use `Refcount`
MAINTAINERS: update atomic infrastructure entry to include Rust
MAINTAINERS | 2 +
rust/helpers/refcount.c | 10 +++
rust/kernel/block/mq/operations.rs | 7 +-
rust/kernel/block/mq/request.rs | 63 +++++------------
rust/kernel/sync.rs | 2 +
rust/kernel/sync/arc.rs | 55 +++++----------
rust/kernel/sync/refcount.rs | 108 +++++++++++++++++++++++++++++
7 files changed, 161 insertions(+), 86 deletions(-)
create mode 100644 rust/kernel/sync/refcount.rs
base-commit: e04c78d86a9699d136910cfc0bdcf01087e3267e
--
2.49.0
next reply other threads:[~2025-06-22 12:58 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-06-22 12:57 Gary Guo [this message]
2025-06-22 12:57 ` [PATCH v4 1/5] rust: implement `kernel::sync::Refcount` Gary Guo
2025-06-22 21:05 ` Benno Lossin
2025-06-22 22:17 ` Gary Guo
2025-06-22 12:57 ` [PATCH v4 2/5] rust: make `Arc::into_unique_or_drop` associated function Gary Guo
2025-06-22 21:05 ` Benno Lossin
2025-06-22 12:57 ` [PATCH v4 3/5] rust: convert `Arc` to use `Refcount` Gary Guo
2025-06-22 21:08 ` Benno Lossin
2025-06-23 9:06 ` kernel test robot
2025-06-22 12:57 ` [PATCH v4 4/5] rust: block: convert `block::mq` " Gary Guo
2025-06-22 12:57 ` [PATCH v4 5/5] MAINTAINERS: update atomic infrastructure entry to include Rust Gary Guo
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=20250622125802.3224264-1-gary@kernel.org \
--to=gary@kernel.org \
--cc=a.hindborg@kernel.org \
--cc=alex.gaynor@gmail.com \
--cc=aliceryhl@google.com \
--cc=bjorn3_gh@protonmail.com \
--cc=boqun.feng@gmail.com \
--cc=dakr@kernel.org \
--cc=gary@garyguo.net \
--cc=lossin@kernel.org \
--cc=mark.rutland@arm.com \
--cc=ojeda@kernel.org \
--cc=peterz@infradead.org \
--cc=rust-for-linux@vger.kernel.org \
--cc=tmgross@umich.edu \
--cc=will@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.