From: Andreas Hindborg <a.hindborg@kernel.org>
To: Yuan Tan <ytan089@ucr.edu>
Cc: "Liam R. Howlett" <liam@infradead.org>,
"Alice Ryhl" <aliceryhl@google.com>,
"Anna-Maria Behnsen" <anna-maria@linutronix.de>,
"Benno Lossin" <lossin@kernel.org>,
"Björn Roy Baron" <bjorn3_gh@protonmail.com>,
"Boqun Feng" <boqun@kernel.org>,
"Danilo Krummrich" <dakr@kernel.org>,
"FUJITA Tomonori" <fujita.tomonori@gmail.com>,
"Frederic Weisbecker" <frederic@kernel.org>,
"Gary Guo" <gary@garyguo.net>, "Jens Axboe" <axboe@kernel.dk>,
"John Stultz" <jstultz@google.com>,
"Lorenzo Stoakes" <ljs@kernel.org>,
"Lyude Paul" <lyude@redhat.com>,
"Miguel Ojeda" <ojeda@kernel.org>,
"Stephen Boyd" <sboyd@kernel.org>,
"Thomas Gleixner" <tglx@kernel.org>,
"Trevor Gross" <tmgross@umich.edu>,
linux-block@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-mm@kvack.org, rust-for-linux@vger.kernel.org,
"Priya Bala Govindasamy" <pgovind2@uci.edu>,
"Dylan Zueck" <dzueck@uci.edu>, "Yuan Tan" <ytan089@ucr.edu>
Subject: Re: [PATCH v2 01/83] block: rust: fix `Send` bound for `GenDisk`
Date: Wed, 10 Jun 2026 11:00:37 +0200 [thread overview]
Message-ID: <877bo6hiru.fsf@kernel.org> (raw)
In-Reply-To: <CABrc2FU9HuRp4tVEU_R1RdMMRkkS=tM4Uv70WG3UBTeho_C42Q@mail.gmail.com>
Yuan Tan <ytan089@ucr.edu> writes:
> On Tue, Jun 9, 2026 at 12:13 PM Andreas Hindborg <a.hindborg@kernel.org> wrote:
>>
>> The `Send` implementation for `GenDisk<T>` was conditioned on `T: Send`.
>> This constrains the wrong type. `T` is the `Operations` implementation,
>> which is typically a zero-sized marker type that carries no data, so `T:
>> Send` says nothing about whether the data a `GenDisk` actually owns can be
>> moved to another thread.
>>
>> A `GenDisk<T>` owns the queue data `T::QueueData` (stored as the
>> `gendisk`'s `queuedata` and dropped when the `GenDisk` is dropped) and an
>> `Arc<TagSet<T>>`. These are the values transferred when a `GenDisk` is sent
>> across a thread boundary, so the `Send` bound must constrain exactly them.
>> Bound `T::QueueData: Send` and `Arc<TagSet<T>>: Send` instead.
>>
>> Fixes: 3253aba3408a ("rust: block: introduce `kernel::block::mq` module")
>> Suggested-by: Yuan Tan <ytan089@ucr.edu>
>> Signed-off-by: Andreas Hindborg <a.hindborg@kernel.org>
>> ---
>>
>> Please take patch from Yuan instead of this one, if they send a fixed
>> version [1].
>>
>> [1] https://lore.kernel.org/r/8839ddc5ff54bf454d508cde91d27d00fc3e2dd8.1780633578.git.ytan089@ucr.edu
>
> My last email mistakenly enabled html. So I am here to resend it. Hope
> it doesn't disturb anyone.
>
> Sorry, I've been busy with other things and haven't had the chance to
> send the fixed version.
>
> Thank you very much for reviewing the patch and for preparing the v2 version.
>
> Could you please add the following when applying this patch?
> Reported-by: Priya Bala Govindasamy <pgovind2@uci.edu>
> Reported-by: Dylan Zueck <dzueck@uci.edu>
>
> I didn't discover this issue myself. I just helped write the patch and
> I don't want them to lose their credit for it.
>
> Please let me know if you would prefer that I send a v3 instead.
I would absolutely encourage you to send a v3 so we can pick that one.
Your emails are not arriving in my inbox though. I only see this one on
the list. Please check your setup for outgoing email.
Best regards,
Andreas Hindborg
next prev parent reply other threads:[~2026-06-10 9:00 UTC|newest]
Thread overview: 87+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-06-09 19:07 [PATCH v2 00/83] block: rnull: complete the rust null block driver Andreas Hindborg
2026-06-09 19:07 ` [PATCH v2 01/83] block: rust: fix `Send` bound for `GenDisk` Andreas Hindborg
2026-06-09 21:45 ` Yuan Tan
2026-06-10 9:00 ` Andreas Hindborg [this message]
2026-06-09 19:07 ` [PATCH v2 02/83] rust: block: rename `SECTOR_MASK` to `PAGE_SECTOR_MASK` Andreas Hindborg
2026-06-09 19:07 ` [PATCH v2 03/83] block: rnull: adopt new formatting guidelines Andreas Hindborg
2026-06-09 19:07 ` [PATCH v2 04/83] block: rnull: add module parameters Andreas Hindborg
2026-06-09 19:07 ` [PATCH v2 05/83] block: rnull: add macros to define configfs attributes Andreas Hindborg
2026-06-09 19:07 ` [PATCH v2 06/83] block: rust: fix generation of bindings to `BLK_STS_.*` Andreas Hindborg
2026-06-09 19:07 ` [PATCH v2 07/83] block: rust: change `queue_rq` request type to `Owned` Andreas Hindborg
2026-06-09 19:07 ` [PATCH v2 08/83] block: rust: add `Request` private data support Andreas Hindborg
2026-06-09 19:07 ` [PATCH v2 09/83] block: rust: document the lifetime of `Request` Andreas Hindborg
2026-06-09 19:07 ` [PATCH v2 10/83] block: rust: allow `hrtimer::Timer` in `RequestData` Andreas Hindborg
2026-06-09 19:07 ` [PATCH v2 11/83] block: rnull: add timer completion mode Andreas Hindborg
2026-06-09 19:07 ` [PATCH v2 12/83] block: rust: introduce `kernel::block::bio` module Andreas Hindborg
2026-06-09 19:07 ` [PATCH v2 13/83] block: rust: add `command` getter to `Request` Andreas Hindborg
2026-06-09 19:07 ` [PATCH v2 14/83] block: rust: mq: use GFP_KERNEL from prelude Andreas Hindborg
2026-06-09 19:07 ` [PATCH v2 15/83] block: rust: add `TagSet` flags Andreas Hindborg
2026-06-09 19:07 ` [PATCH v2 16/83] block: rnull: add memory backing Andreas Hindborg
2026-06-09 19:07 ` [PATCH v2 17/83] block: rnull: add submit queue count config option Andreas Hindborg
2026-06-09 19:07 ` [PATCH v2 18/83] block: rnull: add `use_per_node_hctx` " Andreas Hindborg
2026-06-09 19:07 ` [PATCH v2 19/83] block: rust: allow specifying home node when constructing `TagSet` Andreas Hindborg
2026-06-09 19:07 ` [PATCH v2 20/83] block: rnull: allow specifying the home numa node Andreas Hindborg
2026-06-09 19:08 ` [PATCH v2 21/83] block: rust: add Request::sectors() method Andreas Hindborg
2026-06-09 19:08 ` [PATCH v2 22/83] block: rust: mq: add max_hw_discard_sectors support to GenDiskBuilder Andreas Hindborg
2026-06-09 19:08 ` [PATCH v2 23/83] block: rnull: add discard support Andreas Hindborg
2026-06-10 13:55 ` Malte Wechter
2026-06-09 19:08 ` [PATCH v2 24/83] block: rust: add `NoDefaultScheduler` flag for `TagSet` Andreas Hindborg
2026-06-09 19:08 ` [PATCH v2 25/83] block: rnull: add no_sched module parameter and configfs attribute Andreas Hindborg
2026-06-09 19:08 ` [PATCH v2 26/83] block: rust: change sector type from usize to u64 Andreas Hindborg
2026-06-09 19:08 ` [PATCH v2 27/83] block: rust: add `BadBlocks` for bad block tracking Andreas Hindborg
2026-06-09 19:08 ` [PATCH v2 28/83] block: rust: mq: add Request::end() method for custom status codes Andreas Hindborg
2026-06-09 19:08 ` [PATCH v2 29/83] block: rnull: add badblocks support Andreas Hindborg
2026-06-09 19:08 ` [PATCH v2 30/83] block: rnull: add badblocks_once support Andreas Hindborg
2026-06-09 19:08 ` [PATCH v2 31/83] block: rust: add `Segment::truncate` Andreas Hindborg
2026-06-09 19:08 ` [PATCH v2 32/83] block: rnull: add partial I/O support for bad blocks Andreas Hindborg
2026-06-09 19:08 ` [PATCH v2 33/83] block: rust: add `TagSet` private data support Andreas Hindborg
2026-06-09 19:08 ` [PATCH v2 34/83] block: rust: add `hctx` " Andreas Hindborg
2026-06-09 19:08 ` [PATCH v2 35/83] block: rnull: add volatile cache emulation Andreas Hindborg
2026-06-09 19:08 ` [PATCH v2 36/83] block: rust: implement `Sync` for `GenDisk` Andreas Hindborg
2026-06-09 19:08 ` [PATCH v2 37/83] block: rust: add a back reference feature to `GenDisk` Andreas Hindborg
2026-06-09 19:08 ` [PATCH v2 38/83] block: rust: introduce an idle type state for `Request` Andreas Hindborg
2026-06-09 19:08 ` [PATCH v2 39/83] block: rust: add a request queue abstraction Andreas Hindborg
2026-06-09 19:08 ` [PATCH v2 40/83] block: rust: add a method to get the request queue for a request Andreas Hindborg
2026-06-09 19:08 ` [PATCH v2 41/83] block: rust: introduce `kernel::block::error` Andreas Hindborg
2026-06-09 19:08 ` [PATCH v2 42/83] block: rust: require `queue_rq` to return a `BlkResult` Andreas Hindborg
2026-06-09 19:08 ` [PATCH v2 43/83] block: rust: add `GenDisk::queue_data` Andreas Hindborg
2026-06-09 19:08 ` [PATCH v2 44/83] block: rnull: add bandwidth limiting Andreas Hindborg
2026-06-09 19:08 ` [PATCH v2 45/83] block: rnull: add blocking queue mode Andreas Hindborg
2026-06-09 19:08 ` [PATCH v2 46/83] block: rnull: add shared tags Andreas Hindborg
2026-06-09 19:08 ` [PATCH v2 47/83] block: rnull: add queue depth config option Andreas Hindborg
2026-06-09 19:08 ` [PATCH v2 48/83] block: rust: add an abstraction for `bindings::req_op` Andreas Hindborg
2026-06-09 19:08 ` [PATCH v2 49/83] block: rust: add a method to set the target sector of a request Andreas Hindborg
2026-06-09 19:08 ` [PATCH v2 50/83] block: rust: move gendisk vtable construction to separate function Andreas Hindborg
2026-06-09 19:08 ` [PATCH v2 51/83] block: rust: add zoned block device support Andreas Hindborg
2026-06-09 19:08 ` [PATCH v2 52/83] block: rust: add `TagSet::flags` Andreas Hindborg
2026-06-09 19:08 ` [PATCH v2 53/83] block: rnull: add zoned storage support Andreas Hindborg
2026-06-09 19:08 ` [PATCH v2 54/83] block: rust: add `map_queues` support Andreas Hindborg
2026-06-09 19:08 ` [PATCH v2 55/83] block: rust: add an abstraction for `struct blk_mq_queue_map` Andreas Hindborg
2026-06-09 19:08 ` [PATCH v2 56/83] block: rust: add polled completion support Andreas Hindborg
2026-06-09 19:08 ` [PATCH v2 57/83] block: rust: add accessors to `TagSet` Andreas Hindborg
2026-06-09 19:08 ` [PATCH v2 58/83] block: rnull: add polled completion support Andreas Hindborg
2026-06-09 19:08 ` [PATCH v2 59/83] block: rnull: add REQ_OP_FLUSH support Andreas Hindborg
2026-06-09 19:08 ` [PATCH v2 60/83] block: rust: add request flags abstraction Andreas Hindborg
2026-06-09 19:08 ` [PATCH v2 61/83] block: rust: add abstraction for block queue feature flags Andreas Hindborg
2026-06-09 19:08 ` [PATCH v2 62/83] block: rust: allow setting write cache and FUA flags for `GenDisk` Andreas Hindborg
2026-06-09 19:08 ` [PATCH v2 63/83] block: rust: add `Segment::copy_to_page_limit` Andreas Hindborg
2026-06-09 19:08 ` [PATCH v2 64/83] block: rnull: add fua support Andreas Hindborg
2026-06-09 19:08 ` [PATCH v2 65/83] block: rust: add `GenDisk::tag_set` Andreas Hindborg
2026-06-09 19:08 ` [PATCH v2 66/83] block: rust: add `TagSet::update_hw_queue_count` Andreas Hindborg
2026-06-09 19:08 ` [PATCH v2 67/83] block: rnull: add an option to change the number of hardware queues Andreas Hindborg
2026-06-09 19:08 ` [PATCH v2 68/83] block: rust: add an abstraction for `struct rq_list` Andreas Hindborg
2026-06-09 19:08 ` [PATCH v2 69/83] block: rust: add `queue_rqs` vtable hook Andreas Hindborg
2026-06-09 19:08 ` [PATCH v2 70/83] block: rnull: support queue_rqs Andreas Hindborg
2026-06-09 19:08 ` [PATCH v2 71/83] block: rust: remove the `is_poll` parameter from `queue_rq` Andreas Hindborg
2026-06-09 19:08 ` [PATCH v2 72/83] block: rust: add a debug assert for refcounts Andreas Hindborg
2026-06-09 19:08 ` [PATCH v2 73/83] block: rust: add `TagSet::tag_to_rq` Andreas Hindborg
2026-06-09 19:08 ` [PATCH v2 74/83] block: rust: add `Request::queue_index` Andreas Hindborg
2026-06-09 19:08 ` [PATCH v2 75/83] block: rust: add `Request::requeue` Andreas Hindborg
2026-06-09 19:08 ` [PATCH v2 76/83] block: rust: add `request_timeout` hook Andreas Hindborg
2026-06-09 19:08 ` [PATCH v2 77/83] block: rnull: add fault injection support Andreas Hindborg
2026-06-09 19:08 ` [PATCH v2 78/83] block: rust: add max_sectors option to `GenDiskBuilder` Andreas Hindborg
2026-06-09 19:08 ` [PATCH v2 79/83] block: rnull: allow configuration of the maximum IO size Andreas Hindborg
2026-06-09 19:08 ` [PATCH v2 80/83] block: rust: add `virt_boundary_mask` option to `GenDiskBuilder` Andreas Hindborg
2026-06-09 19:09 ` [PATCH v2 81/83] block: rnull: add `virt_boundary` option Andreas Hindborg
2026-06-09 19:09 ` [PATCH v2 82/83] block: rnull: add `shared_tag_bitmap` config option Andreas Hindborg
2026-06-09 19:09 ` [PATCH v2 83/83] block: rnull: add zone offline and readonly configfs files 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=877bo6hiru.fsf@kernel.org \
--to=a.hindborg@kernel.org \
--cc=aliceryhl@google.com \
--cc=anna-maria@linutronix.de \
--cc=axboe@kernel.dk \
--cc=bjorn3_gh@protonmail.com \
--cc=boqun@kernel.org \
--cc=dakr@kernel.org \
--cc=dzueck@uci.edu \
--cc=frederic@kernel.org \
--cc=fujita.tomonori@gmail.com \
--cc=gary@garyguo.net \
--cc=jstultz@google.com \
--cc=liam@infradead.org \
--cc=linux-block@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=ljs@kernel.org \
--cc=lossin@kernel.org \
--cc=lyude@redhat.com \
--cc=ojeda@kernel.org \
--cc=pgovind2@uci.edu \
--cc=rust-for-linux@vger.kernel.org \
--cc=sboyd@kernel.org \
--cc=tglx@kernel.org \
--cc=tmgross@umich.edu \
--cc=ytan089@ucr.edu \
/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