This series adds configuration via configfs and remote completion to the rnull driver. The series also includes a set of changes to the rust block device driver API: a few cleanup patches, and a few features supporting the rnull changes. The series removes the raw buffer formatting logic from `kernel::block` and improves the logic available in `kernel::string` to support the same use as the removed logic. This series is a smaller subset of the patches available in the downstream rnull tree. I hope to minimize the delta between upstream and downstream over the next few kernel releases. Signed-off-by: Andreas Hindborg <a.hindborg@xxxxxxxxxx> --- Changes in v4: - Rebase on v6.17-rc1 - Merge patches that expose `str::{Formatter, RawFormatter}` publicly. - Remove `NullTerminatedFormatter::from_array`. - Change signature of `Formatter::new`. - Change invariant wording for `NullTerminatedFormatter`. - Add missing period in comment for `SECTOR_MASK`. - Rephrase docstring for PAGE_SECTORS_SHIFT. - Use `write_str` rather than `write_fmt` where applicable. - Improve boolean parsing in rnull configfs interface. - Be explicit when intentionally dropping data (GenDisk::drop). - Add minimum size invariant to `NullTerminatedFormatter`. - Import `EINVAL` from the prelude. - Link to v3: https://lore.kernel.org/r/20250711-rnull-up-v6-16-v3-0-3a262b4e2921@xxxxxxxxxx Changes in v3: - Rename `NullBorrowFormatter` as `NullTerminatedFormatter`. - Remove `pos` from `NullBorrowFormatter`. - Call into `Self::new` in `NullBorrowFormatter::from_array`. - Use `Option` return type in `NullBorrowFormatter::from_array` - Use `Option` return type in `NullBorrowFormatter::new`. - Remove `BorrowFormatter` and update `Formatter` with a generic lifetime. - Split visibility change of `str::Formatter` into separate patch. - Link to v2: https://lore.kernel.org/r/20250708-rnull-up-v6-16-v2-0-ab93c0ff429b@xxxxxxxxxx Changes in v2: - Rework formatter logic. Add two new formatters that write to slices, one of which adds a trailing null byte. - Reorder and split patches so that changes are more clear. - Fix a typo in soft-irq patch summary. - Link to v1: https://lore.kernel.org/r/20250616-rnull-up-v6-16-v1-0-a4168b8e76b2@xxxxxxxxxx --- Andreas Hindborg (15): rust: str: normalize imports in `str.rs` rust: str: allow `str::Formatter` to format into `&mut [u8]`. rust: str: expose `str::{Formatter, RawFormatter}` publicly. rust: str: introduce `NullTerminatedFormatter` rust: block: normalize imports for `gen_disk.rs` rust: block: use `NullTerminatedFormatter` rust: block: remove `RawWriter` rust: block: remove trait bound from `mq::Request` definition rust: block: add block related constants rnull: move driver to separate directory rnull: enable configuration via `configfs` rust: block: add `GenDisk` private data support rust: block: mq: fix spelling in a safety comment rust: block: add remote completion to `Request` rnull: add soft-irq completion support MAINTAINERS | 2 +- drivers/block/Kconfig | 10 +- drivers/block/Makefile | 4 +- drivers/block/rnull.rs | 80 ----------- drivers/block/rnull/Kconfig | 13 ++ drivers/block/rnull/Makefile | 3 + drivers/block/rnull/configfs.rs | 273 +++++++++++++++++++++++++++++++++++++ drivers/block/rnull/rnull.rs | 105 ++++++++++++++ rust/kernel/block.rs | 13 ++ rust/kernel/block/mq.rs | 14 +- rust/kernel/block/mq/gen_disk.rs | 58 ++++++-- rust/kernel/block/mq/operations.rs | 65 +++++++-- rust/kernel/block/mq/raw_writer.rs | 55 -------- rust/kernel/block/mq/request.rs | 21 ++- rust/kernel/str.rs | 83 +++++++++-- 15 files changed, 608 insertions(+), 191 deletions(-) --- base-commit: 8f5ae30d69d7543eee0d70083daf4de8fe15d585 change-id: 20250616-rnull-up-v6-16-b4571e28feee Best regards, -- Andreas Hindborg <a.hindborg@xxxxxxxxxx>