rust-for-linux.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v3 0/4] implement `kernel::sync::Refcount` and convert users
@ 2025-02-19 20:15 Gary Guo
  2025-02-19 20:15 ` [PATCH v3 1/4] rust: implement `kernel::sync::Refcount` Gary Guo
                   ` (3 more replies)
  0 siblings, 4 replies; 20+ messages in thread
From: Gary Guo @ 2025-02-19 20:15 UTC (permalink / raw)
  To: Miguel Ojeda, Alex Gaynor, Boqun Feng, Gary Guo,
	Björn Roy Baron, Benno Lossin, Andreas Hindborg, Alice Ryhl,
	Trevor Gross, Danilo Krummrich
  Cc: Will Deacon, Peter Zijlstra, Mark Rutland, rust-for-linux

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 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

 MAINTAINERS                        |   2 +
 rust/helpers/refcount.c            |  10 +++
 rust/kernel/block/mq/operations.rs |   7 +-
 rust/kernel/block/mq/request.rs    |  70 +++++++-------------
 rust/kernel/sync.rs                |   2 +
 rust/kernel/sync/arc.rs            |  65 ++++++++-----------
 rust/kernel/sync/refcount.rs       | 100 +++++++++++++++++++++++++++++
 7 files changed, 166 insertions(+), 90 deletions(-)
 create mode 100644 rust/kernel/sync/refcount.rs


base-commit: beeb78d46249cab8b2b8359a2ce8fa5376b5ad2d
-- 
2.47.2


^ permalink raw reply	[flat|nested] 20+ messages in thread

end of thread, other threads:[~2025-02-21 18:33 UTC | newest]

Thread overview: 20+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-02-19 20:15 [PATCH v3 0/4] implement `kernel::sync::Refcount` and convert users Gary Guo
2025-02-19 20:15 ` [PATCH v3 1/4] rust: implement `kernel::sync::Refcount` Gary Guo
2025-02-19 22:12   ` Tamir Duberstein
2025-02-21 16:02     ` Gary Guo
2025-02-21 17:23       ` Tamir Duberstein
2025-02-20 12:46   ` Fiona Behrens
2025-02-19 20:15 ` [PATCH v3 2/4] rust: convert `Arc` to use `Refcount` Gary Guo
2025-02-19 22:12   ` Tamir Duberstein
2025-02-21 16:14     ` Gary Guo
2025-02-21 17:27       ` Tamir Duberstein
2025-02-21 18:28         ` Gary Guo
2025-02-21 18:33           ` Tamir Duberstein
2025-02-21 12:05   ` Alice Ryhl
2025-02-19 20:15 ` [PATCH v3 3/4] rust: block: convert `block::mq` " Gary Guo
2025-02-19 22:26   ` Tamir Duberstein
2025-02-19 22:53     ` Tamir Duberstein
2025-02-20 19:18       ` Andreas Hindborg
2025-02-20 12:27   ` David Gow
2025-02-19 20:15 ` [PATCH v3 4/4] MAINTAINERS: update atomic infrastructure entry to include Rust Gary Guo
2025-02-19 21:13   ` Boqun Feng

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).