Rust for Linux List
 help / color / mirror / Atom feed
From: "Malte Wechter" <maltewechter@gmail.com>
To: "Andreas Hindborg" <a.hindborg@kernel.org>,
	"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>
Cc: <linux-block@vger.kernel.org>, <linux-kernel@vger.kernel.org>,
	<linux-mm@kvack.org>, <rust-for-linux@vger.kernel.org>
Subject: Re: [PATCH v2 23/83] block: rnull: add discard support
Date: Wed, 10 Jun 2026 15:55:32 +0200	[thread overview]
Message-ID: <DJ5F5T5UIXRF.IVVHFP62M2Z8@gmail.com> (raw)
In-Reply-To: <20260609-rnull-v6-19-rc5-send-v2-23-82c7404542e2@kernel.org>

On Tue Jun 9, 2026 at 9:08 PM CEST, Andreas Hindborg wrote:
> Add support for discard operations to the rnull block driver:
> - Add discard module parameter and configfs attribute.
> - Set max_hw_discard_sectors when discard is enabled.
> - Add sector occupancy tracking.
> - Add discard handling that frees sectors and removes empty pages.
> - Discard operations require memory backing to function.
>
> The discard feature uses a bitmap to track which sectors in each page are
> occupied, allowing cleanup of pages when they are empty.
>
> Signed-off-by: Andreas Hindborg <a.hindborg@kernel.org>
> ---
>  drivers/block/rnull/configfs.rs |  15 +++++
>  drivers/block/rnull/rnull.rs    | 120 +++++++++++++++++++++++++++++++++++-----
>  2 files changed, 121 insertions(+), 14 deletions(-)
>
> diff --git a/drivers/block/rnull/configfs.rs b/drivers/block/rnull/configfs.rs
> index 2f3fa81ea121..e47399cd45a4 100644
> --- a/drivers/block/rnull/configfs.rs
> +++ b/drivers/block/rnull/configfs.rs
...
>          }
>      })
>  );
> +
> +configfs_attribute!(DeviceConfig, 10,
> +    show: |this, page| show_field(this.data.lock().discard, page),
> +    store: |this, page| store_with_power_check(this, page, |data, page| {
> +        if !data.memory_backed {
> +            return Err(EINVAL);
> +        }
> +        data.discard = kstrtobool_bytes(page)?;
> +        Ok(())
> +    })
> +);
Should it be ok to set 'discard' to 0 if 'emory_backed' is not set?
In the C null_blk driver, 'discard' defaults to 0 if 'memory_backed' is not set,
it is also ignored (and defaulted to 0) if 'zoned' is enabled.

Best regards,
Malte

  reply	other threads:[~2026-06-10 13:55 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
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 [this message]
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=DJ5F5T5UIXRF.IVVHFP62M2Z8@gmail.com \
    --to=maltewechter@gmail.com \
    --cc=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=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=rust-for-linux@vger.kernel.org \
    --cc=sboyd@kernel.org \
    --cc=tglx@kernel.org \
    --cc=tmgross@umich.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