twx-linux/rust/kernel/sync
Gary Guo a307bf1db5 rust: block: convert block::mq to use Refcount
Currently there's a custom reference counting in `block::mq`, which uses
`AtomicU64` Rust atomics, and this type doesn't exist on some 32-bit
architectures. We cannot just change it to use 32-bit atomics, because
doing so will make it vulnerable to refcount overflow. So switch it to
use the kernel refcount `kernel::sync::Refcount` instead.

There is an operation needed by `block::mq`, atomically decreasing
refcount from 2 to 0, which is not available through refcount.h, so
I exposed `Refcount::as_atomic` which allows accessing the refcount
directly.

[boqun: Adopt the LKMM atomic API]
Signed-off-by: Gary Guo <gary@garyguo.net>
Signed-off-by: Boqun Feng <boqun.feng@gmail.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Reviewed-by: Benno Lossin <lossin@kernel.org>
Reviewed-by: Elle Rhumsaa <elle@weathered-steel.dev>
Acked-by: Andreas Hindborg <a.hindborg@kernel.org>
Tested-by: David Gow <davidgow@google.com>
Link: https://lore.kernel.org/r/20250723233312.3304339-5-gary@kernel.org
2025-09-15 09:38:36 +02:00
..
arc rust: provide proper code documentation titles 2024-10-07 21:39:57 +02:00
atomic rust: sync: atomic: Add Atomic<{usize,isize}> 2025-09-15 09:38:34 +02:00
lock Rust changes for v6.15 2025-03-30 17:03:26 -07:00
arc.rs rust: convert Arc to use Refcount 2025-09-15 09:38:35 +02:00
aref.rs rust: kernel: move ARef and AlwaysRefCounted to sync::aref 2025-07-22 13:52:14 +02:00
atomic.rs rust: sync: atomic: Add the framework of arithmetic operations 2025-09-15 09:38:34 +02:00
barrier.rs rust: sync: Add memory barriers 2025-09-15 09:38:34 +02:00
completion.rs rust: completion: implement initial abstraction 2025-06-13 23:46:56 +02:00
condvar.rs rust: sync: Mark CondVar::notify_*() inline 2025-06-24 10:23:48 -07:00
lock.rs rust: sync: Add #[must_use] to Lock::try_lock() 2025-07-11 15:11:54 -07:00
locked_by.rs rust: sync: add missing newline in locked_by log example 2025-03-06 20:44:06 +01:00
poll.rs Scheduler updates for v6.17: 2025-07-29 17:42:52 -07:00
rcu.rs rust: sync: rcu: Mark Guard methods as inline 2025-05-16 09:00:54 -04:00
refcount.rs rust: block: convert block::mq to use Refcount 2025-09-15 09:38:36 +02:00