Yu Kuai
c951ccf0bf
md: add a new recovery_flag MD_RECOVERY_LAZY_RECOVER
...
This flag is used by llbitmap in later patches to skip raid456 initial
recover and delay building initial xor data to first write.
https://lore.kernel.org/linux-raid/20250829080426.1441678-10-yukuai1@huaweicloud.com
Signed-off-by: Yu Kuai <yukuai3@huawei.com >
2025-09-06 17:20:32 +08:00
Yu Kuai
a4dd9ba39b
md/md-bitmap: add a new method blocks_synced() in bitmap_operations
...
Currently, raid456 must perform a whole array initial recovery to build
initail xor data, then IO to the array won't have to read all the blocks
in underlying disks.
This behavior will affect IO performance a lot, and nowadays there are
huge disks and the initial recovery can take a long time. Hence llbitmap
will support lazy initial recovery in following patches. This method is
used to check if data blocks is synced or not, if not then IO will still
have to read all blocks for raid456.
Link: https://lore.kernel.org/linux-raid/20250829080426.1441678-9-yukuai1@huaweicloud.com
Signed-off-by: Yu Kuai <yukuai3@huawei.com >
2025-09-06 17:20:01 +08:00
Yu Kuai
f196d72888
md/md-bitmap: add a new method skip_sync_blocks() in bitmap_operations
...
This method is used to check if blocks can be skipped before calling
into pers->sync_request(), llbitmap will use this method to skip
resync for unwritten/clean data blocks, and recovery/check/repair for
unwritten data blocks;
Link: https://lore.kernel.org/linux-raid/20250829080426.1441678-8-yukuai1@huaweicloud.com
Signed-off-by: Yu Kuai <yukuai3@huawei.com >
Reviewed-by: Christoph Hellwig <hch@lst.de >
Reviewed-by: Xiao Ni <xni@redhat.com >
Reviewed-by: Hannes Reinecke <hare@suse.de >
Reviewed-by: Li Nan <linan122@huawei.com >
2025-09-06 17:19:45 +08:00
Yu Kuai
fb8cc3b0d9
md/md-bitmap: delay registration of bitmap_ops until creating bitmap
...
Currently bitmap_ops is registered while allocating mddev, this is fine
when there is only one bitmap_ops.
Delay setting bitmap_ops until creating bitmap, so that user can choose
which bitmap to use before running the array.
Link: https://lore.kernel.org/linux-raid/20250721171557.34587-7-yukuai@kernel.org
Signed-off-by: Yu Kuai <yukuai3@huawei.com >
Reviewed-by: Hannes Reinecke <hare@suse.de >
Reviewed-by: Li Nan <linan122@huawei.com >
Reviewed-by: Xiao Ni <xni@redhat.com >
2025-09-06 17:19:19 +08:00
Yu Kuai
180b82c1c7
md/md-bitmap: add a new sysfs api bitmap_type
...
The api will be used by mdadm to set bitmap_type while creating new array
or assembling array, prepare to add a new bitmap.
Currently available options are:
cat /sys/block/md0/md/bitmap_type
none [bitmap]
Link: https://lore.kernel.org/linux-raid/20250829080426.1441678-6-yukuai1@huaweicloud.com
Signed-off-by: Yu Kuai <yukuai3@huawei.com >
Reviewed-by: Hannes Reinecke <hare@suse.de >
Reviewed-by: Xiao Ni <xni@redhat.com >
Reviewed-by: Li Nan <linan122@huawei.com >
2025-09-06 17:19:04 +08:00
Yu Kuai
300bffa870
md: add a new mddev field 'bitmap_id'
...
Prepare to store the bitmap id selected by user, also refactor
mddev_set_bitmap_ops a bit in case the value is invalid.
Link: https://lore.kernel.org/linux-raid/20250829080426.1441678-5-yukuai1@huaweicloud.com
Signed-off-by: Yu Kuai <yukuai3@huawei.com >
Reviewed-by: Hannes Reinecke <hare@suse.de >
Reviewed-by: Li Nan <linan122@huawei.com >
Reviewed-by: Xiao Ni <xni@redhat.com >
2025-09-06 17:18:48 +08:00
Yu Kuai
ac9dad8faa
md/md-bitmap: support discard for bitmap ops
...
Use two new methods {start, end}_discard in bitmap_ops and a new field 'rw'
in struct md_io_clone to handle discard IO, prepare to support new md
bitmap.
Since all bitmap functions to hanlde write IO are the same, also add
typedef to make code cleaner.
Link: https://lore.kernel.org/linux-raid/20250829080426.1441678-4-yukuai1@huaweicloud.com
Signed-off-by: Yu Kuai <yukuai3@huawei.com >
Reviewed-by: Xiao Ni <xni@redhat.com >
Reviewed-by: Hannes Reinecke <hare@suse.de >
Reviewed-by: Li Nan <linan122@huawei.com >
2025-09-06 17:18:19 +08:00
Yu Kuai
7797da149d
md: factor out a helper raid_is_456()
...
There are no functional changes, the helper will be used by llbitmap in
following patches.
Link: https://lore.kernel.org/linux-raid/20250829080426.1441678-3-yukuai1@huaweicloud.com
Signed-off-by: Yu Kuai <yukuai3@huawei.com >
Reviewed-by: Xiao Ni <xni@redhat.com >
Reviewed-by: Christoph Hellwig <hch@lst.de >
Reviewed-by: Hannes Reinecke <hare@suse.de >
Reviewed-by: Li Nan <linan122@huawei.com >
2025-09-06 17:17:58 +08:00
Yu Kuai
d01acbce39
md: add a new parameter 'offset' to md_super_write()
...
The parameter is always set to 0 for now, following patches will use
this helper to write llbitmap to underlying disks, allow writing
dirty sectors instead of the whole page.
Also rename md_super_write to md_write_metadata since there is nothing
super-block specific.
Link: https://lore.kernel.org/linux-raid/20250829080426.1441678-2-yukuai1@huaweicloud.com
Signed-off-by: Yu Kuai <yukuai3@huawei.com >
Reviewed-by: Xiao Ni <xni@redhat.com >
Reviewed-by: Christoph Hellwig <hch@lst.de >
Reviewed-by: Hannes Reinecke <hare@suse.de >
Reviewed-by: Li Nan <linan122@huawei.com >
2025-09-06 17:17:26 +08:00
Yu Kuai
c27474ac1d
md/md-bitmap: introduce CONFIG_MD_BITMAP
...
Now that all implementations are internal, it's sensible to add a config
option for md-bitmap, and it's a good way for isolation.
Link: https://lore.kernel.org/linux-raid/20250707012711.376844-16-yukuai1@huaweicloud.com
Signed-off-by: Yu Kuai <yukuai3@huawei.com >
Reviewed-by: Xiao Ni <xni@redhat.com >
2025-09-06 17:12:22 +08:00
Yu Kuai
26292657ad
md: check before referencing mddev->bitmap_ops
...
Prepare to introduce CONFIG_MD_BITMAP.
Link: https://lore.kernel.org/linux-raid/20250707012711.376844-15-yukuai1@huaweicloud.com
Signed-off-by: Yu Kuai <yukuai3@huawei.com >
Reviewed-by: Xiao Ni <xni@redhat.com >
2025-09-06 17:12:19 +08:00
Yu Kuai
0e18745420
md/dm-raid: check before referencing mddev->bitmap_ops
...
Prepare to introduce CONFIG_MD_BITMAP.
Link: https://lore.kernel.org/linux-raid/20250707012711.376844-14-yukuai1@huaweicloud.com
Signed-off-by: Yu Kuai <yukuai3@huawei.com >
Reviewed-by: Xiao Ni <xni@redhat.com >
2025-09-06 17:12:15 +08:00
Yu Kuai
bb9317b13a
md/raid5: check before referencing mddev->bitmap_ops
...
Prepare to introduce CONFIG_MD_BITMAP.
Link: https://lore.kernel.org/linux-raid/20250707012711.376844-13-yukuai1@huaweicloud.com
Signed-off-by: Yu Kuai <yukuai3@huawei.com >
Reviewed-by: Xiao Ni <xni@redhat.com >
2025-09-06 17:12:11 +08:00
Yu Kuai
969f996243
md/raid10: check before referencing mddev->bitmap_ops
...
Prepare to introduce CONFIG_MD_BITMAP.
Link: https://lore.kernel.org/linux-raid/20250707012711.376844-12-yukuai1@huaweicloud.com
Signed-off-by: Yu Kuai <yukuai3@huawei.com >
Reviewed-by: Xiao Ni <xni@redhat.com >
2025-09-06 17:12:07 +08:00
Yu Kuai
8d31ed3b77
md/raid1: check before referencing mddev->bitmap_ops
...
Prepare to introduce CONFIG_MD_BITMAP.
Link: https://lore.kernel.org/linux-raid/20250707012711.376844-11-yukuai1@huaweicloud.com
Signed-off-by: Yu Kuai <yukuai3@huawei.com >
Reviewed-by: Xiao Ni <xni@redhat.com >
2025-09-06 17:12:02 +08:00
Yu Kuai
20cecae877
md/raid1: check bitmap before behind write
...
behind write rely on bitmap, because the number of IO are recorded in
bitmap->behind_writes, and callers rely on bitmap_wait_behind_writes()
to wait for IO to be done.
However, currently callers doesn't check if bitmap is enabeld before
calling into behind methods. Hence if behind write start without bitmap,
readers will not wait for slow write IO to be done and old data can be
read in some corner cases.
Link: https://lore.kernel.org/linux-raid/20250707012711.376844-10-yukuai1@huaweicloud.com
Signed-off-by: Yu Kuai <yukuai3@huawei.com >
Reviewed-by: Xiao Ni <xni@redhat.com >
2025-09-06 17:11:58 +08:00
Yu Kuai
bb74b093c3
md/md-bitmap: handle the case bitmap is not enabled before end_sync()
...
This case can be handled without knowing internal implementation.
Prepare to introduce CONFIG_MD_BITMAP.
Link: https://lore.kernel.org/linux-raid/20250707012711.376844-9-yukuai1@huaweicloud.com
Signed-off-by: Yu Kuai <yukuai3@huawei.com >
Reviewed-by: Xiao Ni <xni@redhat.com >
2025-09-06 17:11:54 +08:00
Yu Kuai
5ae58d1500
md/md-bitmap: handle the case bitmap is not enabled before start_sync()
...
This case can be handled without knowing internal implementation.
Prepare to introduce CONFIG_MD_BITMAP.
Link: https://lore.kernel.org/linux-raid/20250707012711.376844-8-yukuai1@huaweicloud.com
Signed-off-by: Yu Kuai <yukuai3@huawei.com >
Reviewed-by: Xiao Ni <xni@redhat.com >
2025-09-06 17:11:50 +08:00
Yu Kuai
110332074d
md/md-bitmap: add md_bitmap_registered/enabled() helper
...
There are no functional changes, prepare to handle the case that
mddev->bitmap_ops can be NULL, which is possible after introducing
CONFIG_MD_BITMAP.
Link: https://lore.kernel.org/linux-raid/20250707012711.376844-7-yukuai1@huaweicloud.com
Signed-off-by: Yu Kuai <yukuai3@huawei.com >
Reviewed-by: Xiao Ni <xni@redhat.com >
2025-09-06 17:11:45 +08:00
Yu Kuai
9c41ead04e
md/md-bitmap: add a new parameter 'flush' to bitmap_ops->enabled
...
The method is only used from raid1/raid10 IO path, to check if write
bio should be pluged, the parameter is always set to true for now,
following patch will use this helper in other context like updating
superblock.
Link: https://lore.kernel.org/linux-raid/20250707012711.376844-6-yukuai1@huaweicloud.com
Signed-off-by: Yu Kuai <yukuai3@huawei.com >
Reviewed-by: Xiao Ni <xni@redhat.com >
2025-09-06 17:11:42 +08:00
Yu Kuai
9307dbac0e
md/md-bitmap: merge md_bitmap_group into bitmap_operations
...
Now that all bitmap implementations are internal, it doesn't make sense
to export md_bitmap_group anymore.
Link: https://lore.kernel.org/linux-raid/20250707012711.376844-5-yukuai1@huaweicloud.com
Signed-off-by: Yu Kuai <yukuai3@huawei.com >
Reviewed-by: Xiao Ni <xni@redhat.com >
2025-09-06 17:11:40 +08:00
Yu Kuai
e57b225c28
md/md-bitmap: remove the parameter 'init' for bitmap_ops->resize()
...
It's set to 'false' for all callers, hence it's useless and can be
removed.
Link: https://lore.kernel.org/linux-raid/20250707012711.376844-3-yukuai1@huaweicloud.com
Signed-off-by: Yu Kuai <yukuai3@huawei.com >
Reviewed-by: Xiao Ni <xni@redhat.com >
2025-09-06 17:11:33 +08:00
Yu Kuai
ba28afbd9e
blk-mq: fix blk_mq_tags double free while nr_requests grown
...
In the case user trigger tags grow by queue sysfs attribute nr_requests,
hctx->sched_tags will be freed directly and replaced with a new
allocated tags, see blk_mq_tag_update_depth().
The problem is that hctx->sched_tags is from elevator->et->tags, while
et->tags is still the freed tags, hence later elevator exit will try to
free the tags again, causing kernel panic.
Fix this problem by replacing et->tags with new allocated tags as well.
Noted there are still some long term problems that will require some
refactor to be fixed thoroughly[1].
[1] https://lore.kernel.org/all/20250815080216.410665-1-yukuai1@huaweicloud.com/
Fixes: f5a6604f7a ("block: fix lockdep warning caused by lock dependency in elv_iosched_store")
Signed-off-by: Yu Kuai <yukuai3@huawei.com >
Reviewed-by: Ming Lei <ming.lei@redhat.com >
Reviewed-by: Nilay Shroff <nilay@linux.ibm.com >
Reviewed-by: Hannes Reinecke <hare@suse.de >
Reviewed-by: Li Nan <linan122@huawei.com >
Link: https://lore.kernel.org/r/20250821060612.1729939-3-yukuai1@huaweicloud.com
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2025-09-05 13:52:52 -06:00
Yu Kuai
7d337eef4a
blk-mq: fix elevator depth_updated method
...
Current depth_updated has some problems:
1) depth_updated() will be called for each hctx, while all elevators
will update async_depth for the disk level, this is not related to hctx;
2) In blk_mq_update_nr_requests(), if previous hctx update succeed and
this hctx update failed, q->nr_requests will not be updated, while
async_depth is already updated with new nr_reqeuests in previous
depth_updated();
3) All elevators are using q->nr_requests to calculate async_depth now,
however, q->nr_requests is still the old value when depth_updated() is
called from blk_mq_update_nr_requests();
Those problems are first from error path, then mq-deadline, and recently
for bfq and kyber, fix those problems by:
- pass in request_queue instead of hctx;
- move depth_updated() after q->nr_requests is updated in
blk_mq_update_nr_requests();
- add depth_updated() call inside init_sched() method to initialize
async_depth;
- remove init_hctx() method for mq-deadline and bfq that is useless now;
Fixes: 77f1e0a52d ("bfq: update internal depth state when queue depth changes")
Fixes: 39823b47bb ("block/mq-deadline: Fix the tag reservation code")
Fixes: 42e6c6ce03 ("lib/sbitmap: convert shallow_depth from one word to the whole sbitmap")
Signed-off-by: Yu Kuai <yukuai3@huawei.com >
Reviewed-by: Hannes Reinecke <hare@suse.de >
Reviewed-by: Li Nan <linan122@huawei.com >
Reviewed-by: Nilay Shroff <nilay@linux.ibm.com >
Link: https://lore.kernel.org/r/20250821060612.1729939-2-yukuai1@huaweicloud.com
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2025-09-05 13:52:52 -06:00
Caleb Sander Mateos
225dc96f35
ublk: inline __ublk_ch_uring_cmd()
...
ublk_ch_uring_cmd_local() is a thin wrapper around __ublk_ch_uring_cmd()
that copies the ublksrv_io_cmd from user-mapped memory to the stack
using READ_ONCE(). This ublksrv_io_cmd is passed by pointer to
__ublk_ch_uring_cmd() and __ublk_ch_uring_cmd() is a large function
unlikely to be inlined, so __ublk_ch_uring_cmd() will have to load the
ublksrv_io_cmd fields back from the stack. Inline __ublk_ch_uring_cmd()
into ublk_ch_uring_cmd_local() and load the ublksrv_io_cmd fields into
local variables with READ_ONCE(). This allows the compiler to delay
loading the fields until they are needed and choose whether to store
them in registers or on the stack.
Signed-off-by: Caleb Sander Mateos <csander@purestorage.com >
Reviewed-by: Ming Lei <ming.lei@redhat.com >
Link: https://lore.kernel.org/r/20250808153251.282107-1-csander@purestorage.com
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2025-09-03 17:35:54 -06:00
Jens Axboe
4dbe13c784
Merge tag 'pull-getgeo' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs into for-6.18/block
...
Pull struct block_device getgeo changes from Al.
"switching ->getgeo() from struct block_device to struct gendisk
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk >"
* tag 'pull-getgeo' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
block: switch ->getgeo() to struct gendisk
scsi: switch ->bios_param() to passing gendisk
scsi: switch scsi_bios_ptable() and scsi_partsize() to gendisk
2025-09-03 15:15:43 -06:00
Qianfeng Rong
b0b4518c99
block: use int to store blk_stack_limits() return value
...
Change the 'ret' variable in blk_stack_limits() from unsigned int to int,
as it needs to store negative value -1.
Storing the negative error codes in unsigned type, or performing equality
comparisons (e.g., ret == -1), doesn't cause an issue at runtime [1] but
can be confusing. Additionally, assigning negative error codes to unsigned
type may trigger a GCC warning when the -Wsign-conversion flag is enabled.
No effect on runtime.
Link: https://lore.kernel.org/all/x3wogjf6vgpkisdhg3abzrx7v7zktmdnfmqeih5kosszmagqfs@oh3qxrgzkikf/ #1
Signed-off-by: Qianfeng Rong <rongqianfeng@vivo.com >
Reviewed-by: John Garry <john.g.garry@oracle.com >
Fixes: fe0b393f2c ("block: Correct handling of bottom device misaligment")
Reviewed-by: Bart Van Assche <bvanassche@acm.org >
Link: https://lore.kernel.org/r/20250902130930.68317-1-rongqianfeng@vivo.com
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2025-09-02 19:19:25 -06:00
Andreas Hindborg
34585dc649
rnull: add soft-irq completion support
...
rnull currently only supports direct completion. Add option for completing
requests across CPU nodes via soft IRQ or IPI.
Reviewed-by: Alice Ryhl <aliceryhl@google.com >
Reviewed-by: Daniel Almeida <daniel.almeida@collabora.com >
Signed-off-by: Andreas Hindborg <a.hindborg@kernel.org >
Link: https://lore.kernel.org/r/20250902-rnull-up-v6-16-v7-17-b5212cc89b98@kernel.org
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2025-09-02 05:23:56 -06:00
Andreas Hindborg
4ec052841a
rust: block: add remote completion to Request
...
Allow users of rust block device driver API to schedule completion of
requests via `blk_mq_complete_request_remote`.
Reviewed-by: Alice Ryhl <aliceryhl@google.com >
Reviewed-by: Daniel Almeida <daniel.almeida@collabora.com >
Signed-off-by: Andreas Hindborg <a.hindborg@kernel.org >
Link: https://lore.kernel.org/r/20250902-rnull-up-v6-16-v7-16-b5212cc89b98@kernel.org
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2025-09-02 05:23:56 -06:00
Andreas Hindborg
bde50e28f7
rust: block: mq: fix spelling in a safety comment
...
Add code block quotes to a safety comment.
Reviewed-by: Alice Ryhl <aliceryhl@google.com >
Reviewed-by: Daniel Almeida <daniel.almeida@collabora.com >
Signed-off-by: Andreas Hindborg <a.hindborg@kernel.org >
Link: https://lore.kernel.org/r/20250902-rnull-up-v6-16-v7-15-b5212cc89b98@kernel.org
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2025-09-02 05:23:56 -06:00
Andreas Hindborg
90d952fac8
rust: block: add GenDisk private data support
...
Allow users of the rust block device driver API to install private data in
the `GenDisk` structure.
Reviewed-by: Alice Ryhl <aliceryhl@google.com >
Reviewed-by: Daniel Almeida <daniel.almeida@collabora.com >
Signed-off-by: Andreas Hindborg <a.hindborg@kernel.org >
Link: https://lore.kernel.org/r/20250902-rnull-up-v6-16-v7-14-b5212cc89b98@kernel.org
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2025-09-02 05:23:56 -06:00
Andreas Hindborg
d969d504bc
rnull: enable configuration via configfs
...
Allow rust null block devices to be configured and instantiated via
`configfs`.
Reviewed-by: Daniel Almeida <daniel.almeida@collabora.com >
Reviewed-by: Alice Ryhl <aliceryhl@google.com >
Signed-off-by: Andreas Hindborg <a.hindborg@kernel.org >
Link: https://lore.kernel.org/r/20250902-rnull-up-v6-16-v7-13-b5212cc89b98@kernel.org
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2025-09-02 05:23:56 -06:00
Andreas Hindborg
edd8650691
rnull: move driver to separate directory
...
The rust null block driver is about to gain some additional modules. Rather
than pollute the current directory, move the driver to a subdirectory.
Reviewed-by: Alice Ryhl <aliceryhl@google.com >
Reviewed-by: Daniel Almeida <daniel.almeida@collabora.com >
Signed-off-by: Andreas Hindborg <a.hindborg@kernel.org >
Link: https://lore.kernel.org/r/20250902-rnull-up-v6-16-v7-12-b5212cc89b98@kernel.org
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2025-09-02 05:23:56 -06:00
Andreas Hindborg
19c37c91b4
rust: block: add block related constants
...
Add a few block subsystem constants to the rust `kernel::block` name space.
This makes it easier to access the constants from rust code.
Reviewed-by: Alice Ryhl <aliceryhl@google.com >
Reviewed-by: Daniel Almeida <daniel.almeida@collabora.com >
Signed-off-by: Andreas Hindborg <a.hindborg@kernel.org >
Link: https://lore.kernel.org/r/20250902-rnull-up-v6-16-v7-11-b5212cc89b98@kernel.org
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2025-09-02 05:23:56 -06:00
Andreas Hindborg
8c32697c4e
rust: block: remove trait bound from mq::Request definition
...
Remove the trait bound `T:Operations` from `mq::Request`. The bound is not
required, so remove it to reduce complexity.
Reviewed-by: Alice Ryhl <aliceryhl@google.com >
Reviewed-by: Daniel Almeida <daniel.almeida@collabora.com >
Signed-off-by: Andreas Hindborg <a.hindborg@kernel.org >
Link: https://lore.kernel.org/r/20250902-rnull-up-v6-16-v7-10-b5212cc89b98@kernel.org
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2025-09-02 05:23:56 -06:00
Andreas Hindborg
f52689fcd8
rust: block: remove RawWriter
...
`RawWriter` is now dead code, so remove it.
Reviewed-by: Alice Ryhl <aliceryhl@google.com >
Reviewed-by: Daniel Almeida <daniel.almeida@collabora.com >
Signed-off-by: Andreas Hindborg <a.hindborg@kernel.org >
Link: https://lore.kernel.org/r/20250902-rnull-up-v6-16-v7-9-b5212cc89b98@kernel.org
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2025-09-02 05:23:56 -06:00
Andreas Hindborg
c3a54220b5
rust: block: use NullTerminatedFormatter
...
Use the new `NullTerminatedFormatter` to write the name of a `GenDisk` to
the name buffer. This new formatter automatically adds a trailing null
marker after the written characters, so we don't need to append that at the
call site any longer.
Reviewed-by: Alice Ryhl <aliceryhl@google.com >
Reviewed-by: Daniel Almeida <daniel.almeida@collabora.com >
Signed-off-by: Andreas Hindborg <a.hindborg@kernel.org >
Link: https://lore.kernel.org/r/20250902-rnull-up-v6-16-v7-8-b5212cc89b98@kernel.org
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2025-09-02 05:23:56 -06:00
Andreas Hindborg
f4b72f1558
rust: block: normalize imports for gen_disk.rs
...
Clean up the import statements in `gen_disk.rs` to make the code easier to
maintain.
Reviewed-by: Alice Ryhl <aliceryhl@google.com >
Reviewed-by: Daniel Almeida <daniel.almeida@collabora.com >
Signed-off-by: Andreas Hindborg <a.hindborg@kernel.org >
Link: https://lore.kernel.org/r/20250902-rnull-up-v6-16-v7-7-b5212cc89b98@kernel.org
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2025-09-02 05:23:56 -06:00
Andreas Hindborg
60e1eeed8b
rust: configfs: re-export configfs_attrs from configfs module
...
Re-export `configfs_attrs` from `configfs` module, so that users can import
the macro from the `configfs` module rather than the root of the `kernel`
crate.
Also update users to import from the new path.
Reviewed-by: Alice Ryhl <aliceryhl@google.com >
Reviewed-by: Daniel Almeida <daniel.almeida@collabora.com >
Signed-off-by: Andreas Hindborg <a.hindborg@kernel.org >
Link: https://lore.kernel.org/r/20250902-rnull-up-v6-16-v7-6-b5212cc89b98@kernel.org
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2025-09-02 05:23:56 -06:00
Andreas Hindborg
b1dae0be89
rust: str: introduce kstrtobool function
...
Add a Rust wrapper for the kernel's `kstrtobool` function that converts
common user inputs into boolean values.
Reviewed-by: Daniel Almeida <daniel.almeida@collabora.com >
Signed-off-by: Andreas Hindborg <a.hindborg@kernel.org >
Reviewed-by: Alice Ryhl <aliceryhl@google.com >
Link: https://lore.kernel.org/r/20250902-rnull-up-v6-16-v7-5-b5212cc89b98@kernel.org
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2025-09-02 05:23:56 -06:00
Andreas Hindborg
cdde7a1951
rust: str: introduce NullTerminatedFormatter
...
Add `NullTerminatedFormatter`, a formatter that writes a null terminated
string to an array or slice buffer. Because this type needs to manage the
trailing null marker, the existing formatters cannot be used to implement
this type.
Reviewed-by: Alice Ryhl <aliceryhl@google.com >
Reviewed-by: Daniel Almeida <daniel.almeida@collabora.com >
Signed-off-by: Andreas Hindborg <a.hindborg@kernel.org >
Link: https://lore.kernel.org/r/20250902-rnull-up-v6-16-v7-4-b5212cc89b98@kernel.org
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2025-09-02 05:23:56 -06:00
Andreas Hindborg
8c5ac71cf1
rust: str: expose str::{Formatter, RawFormatter} publicly.
...
rnull is going to make use of `str::Formatter` and `str::RawFormatter`, so
expose them with public visibility.
Reviewed-by: Alice Ryhl <aliceryhl@google.com >
Reviewed-by: Daniel Almeida <daniel.almeida@collabora.com >
Signed-off-by: Andreas Hindborg <a.hindborg@kernel.org >
Link: https://lore.kernel.org/r/20250902-rnull-up-v6-16-v7-3-b5212cc89b98@kernel.org
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2025-09-02 05:23:56 -06:00
Andreas Hindborg
87482d6d91
rust: str: allow str::Formatter to format into &mut [u8].
...
Improve `Formatter` so that it can write to an array or slice buffer.
Reviewed-by: Daniel Almeida <daniel.almeida@collabora.com >
Reviewed-by: Alice Ryhl <aliceryhl@google.com >
Signed-off-by: Andreas Hindborg <a.hindborg@kernel.org >
Link: https://lore.kernel.org/r/20250902-rnull-up-v6-16-v7-2-b5212cc89b98@kernel.org
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2025-09-02 05:23:56 -06:00
Andreas Hindborg
d5d060d624
rust: str: normalize imports in str.rs
...
Clean up imports in `str.rs`. This makes future code manipulation more
manageable.
Reviewed-by: Alice Ryhl <aliceryhl@google.com >
Reviewed-by: Daniel Almeida <daniel.almeida@collabora.com >
Signed-off-by: Andreas Hindborg <a.hindborg@kernel.org >
Link: https://lore.kernel.org/r/20250902-rnull-up-v6-16-v7-1-b5212cc89b98@kernel.org
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2025-09-02 05:23:56 -06:00
Yu Kuai
2a06145228
brd: use page reference to protect page lifetime
...
As discussed [1], hold rcu for copying data from/to page is too heavy,
it's better to protect page with rcu around for page lookup and then
grab a reference to prevent page to be freed by discard.
[1] https://lore.kernel.org/all/eb41cab3-5946-4fe3-a1be-843dd6fca159@kernel.dk/
Signed-off-by: Yu Kuai <yukuai3@huawei.com >
Link: https://lore.kernel.org/r/20250811065628.1829339-1-yukuai1@huaweicloud.com
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2025-09-01 08:37:29 -06:00
Li Nan
4c7ef92f6d
blk-mq: check kobject state_in_sysfs before deleting in blk_mq_unregister_hctx
...
In __blk_mq_update_nr_hw_queues() the return value of
blk_mq_sysfs_register_hctxs() is not checked. If sysfs creation for hctx
fails, later changing the number of hw_queues or removing disk will
trigger the following warning:
kernfs: can not remove 'nr_tags', no directory
WARNING: CPU: 2 PID: 637 at fs/kernfs/dir.c:1707 kernfs_remove_by_name_ns+0x13f/0x160
Call Trace:
remove_files.isra.1+0x38/0xb0
sysfs_remove_group+0x4d/0x100
sysfs_remove_groups+0x31/0x60
__kobject_del+0x23/0xf0
kobject_del+0x17/0x40
blk_mq_unregister_hctx+0x5d/0x80
blk_mq_sysfs_unregister_hctxs+0x94/0xd0
blk_mq_update_nr_hw_queues+0x124/0x760
nullb_update_nr_hw_queues+0x71/0xf0 [null_blk]
nullb_device_submit_queues_store+0x92/0x120 [null_blk]
kobjct_del() was called unconditionally even if sysfs creation failed.
Fix it by checkig the kobject creation statusbefore deleting it.
Fixes: 477e19dedc ("blk-mq: adjust debugfs and sysfs register when updating nr_hw_queues")
Signed-off-by: Li Nan <linan122@huawei.com >
Reviewed-by: Yu Kuai <yukuai3@huawei.com >
Link: https://lore.kernel.org/r/20250826084854.1030545-1-linan666@huaweicloud.com
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2025-08-28 19:21:07 -06:00
Andy Shevchenko
d4399e6eb2
floppy: Sort headers alphabetically
...
Sorting headers alphabetically helps locating duplicates, and makes it
easier to figure out where to insert new headers.
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com >
Link: https://lore.kernel.org/r/20250825163545.39303-4-andriy.shevchenko@linux.intel.com
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2025-08-25 14:46:42 -06:00
Andy Shevchenko
8e7ee0f6fa
floppy: Replace custom SZ_64K constant
...
There are only two headers using the K_64 custom constant. Moreover,
its usage tangles a code because the constant is defined in the C
file, while users are in the headers. Replace it with well defined
SZ_64K from sizes.h.
Acked-by: Helge Deller <deller@gmx.de >
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com >
Link: https://lore.kernel.org/r/20250825163545.39303-3-andriy.shevchenko@linux.intel.com
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2025-08-25 14:46:42 -06:00
Andy Shevchenko
d74968780b
floppy: Remove unused CROSS_64KB() macro from arch/ code
...
Since the commit 3d86739c63 ("floppy: always use the track buffer")
the CROSS_64KB() is not used by the driver, remove the leftovers.
Acked-by: Helge Deller <deller@gmx.de > #parisc
Acked-by: Geert Uytterhoeven <geert@linux-m68k.org > # m68k
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com >
Link: https://lore.kernel.org/r/20250825163545.39303-2-andriy.shevchenko@linux.intel.com
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2025-08-25 14:46:42 -06:00
Bart Van Assche
f5d10e6915
block: Move a misplaced comment in queue_wb_lat_store()
...
blk_mq_quiesce_queue() does not wait for pending I/O to finish. Freezing
a queue waits for pending I/O to finish. Hence move the comment that
refers to waiting for pending I/O above the call that freezes the
request queue. This patch moves this comment back to the position where
it was when this comment was introduced. See also commit c125311d96
("blk-wbt: don't maintain inflight counts if disabled").
Cc: Christoph Hellwig <hch@lst.de >
Cc: Nilay Shroff <nilay@linux.ibm.com >
Signed-off-by: Bart Van Assche <bvanassche@acm.org >
Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com >
Link: https://lore.kernel.org/r/20250825151424.1653910-1-bvanassche@acm.org
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2025-08-25 14:43:29 -06:00