Christoph Hellwig
079caa35f7
init: clear root_wait on all invalid root= strings
...
Instead of only clearing root_wait in devt_from_partuuid when the UUID
format was invalid, do that in parse_root_device for all strings that
failed to parse.
Signed-off-by: Christoph Hellwig <hch@lst.de >
Link: https://lore.kernel.org/r/20230531125535.676098-15-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2023-06-05 10:57:40 -06:00
Christoph Hellwig
cf056a4312
init: improve the name_to_dev_t interface
...
name_to_dev_t has a very misleading name, that doesn't make clear
it should only be used by the early init code, and also has a bad
calling convention that doesn't allow returning different kinds of
errors. Rename it to early_lookup_bdev to make the use case clear,
and return an errno, where -EINVAL means the string could not be
parsed, and -ENODEV means it the string was valid, but there was
no device found for it.
Also stub out the whole call for !CONFIG_BLOCK as all the non-block
root cases are always covered in the caller.
Signed-off-by: Christoph Hellwig <hch@lst.de >
Link: https://lore.kernel.org/r/20230531125535.676098-14-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2023-06-05 10:56:46 -06:00
Christoph Hellwig
c0c1a7dcb6
init: move the nfs/cifs/ram special cases out of name_to_dev_t
...
The nfs/cifs/ram special case only needs to be parsed once, and only in
the boot code. Move them out of name_to_dev_t and into
prepare_namespace.
Signed-off-by: Christoph Hellwig <hch@lst.de >
Link: https://lore.kernel.org/r/20230531125535.676098-13-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2023-06-05 10:55:20 -06:00
Christoph Hellwig
3701c600a3
init: factor the root_wait logic in prepare_namespace into a helper
...
The root_wait logic is a bit obsfucated right now. Expand it and move it
into a helper.
Signed-off-by: Christoph Hellwig <hch@lst.de >
Link: https://lore.kernel.org/r/20230531125535.676098-12-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2023-06-05 10:55:20 -06:00
Christoph Hellwig
07d63cbb67
init: handle ubi/mtd root mounting like all other root types
...
Assign a Root_Generic magic value for UBI/MTD root and handle the root
mounting in mount_root like all other root types. Besides making the
code more clear this also means that UBI/MTD root can be used together
with an initrd (not that anyone should care).
Also factor parsing of the root name into a helper now that it can
be easily done and will get more complicated with subsequent patches.
Signed-off-by: Christoph Hellwig <hch@lst.de >
Link: https://lore.kernel.org/r/20230531125535.676098-11-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2023-06-05 10:55:20 -06:00
Christoph Hellwig
73231b58b1
init: don't remove the /dev/ prefix from error messages
...
Remove the code that drops the /dev/ prefix from root_device_name, which
is only used for error messages when mounting the root device fails.
Signed-off-by: Christoph Hellwig <hch@lst.de >
Link: https://lore.kernel.org/r/20230531125535.676098-10-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2023-06-05 10:55:20 -06:00
Christoph Hellwig
c8643c72bc
init: pass root_device_name explicitly
...
Instead of declaring root_device_name as a global variable pass it as an
argument to the functions using it.
Signed-off-by: Christoph Hellwig <hch@lst.de >
Link: https://lore.kernel.org/r/20230531125535.676098-9-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2023-06-05 10:55:20 -06:00
Christoph Hellwig
a6a41d39c2
init: refactor mount_root
...
Provide stubs for all the lower level mount helpers, and just switch
on ROOT_DEV in the main function.
Signed-off-by: Christoph Hellwig <hch@lst.de >
Link: https://lore.kernel.org/r/20230531125535.676098-8-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2023-06-05 10:55:20 -06:00
Christoph Hellwig
e3102722ff
init: rename mount_block_root to mount_root_generic
...
mount_block_root is also used to mount non-block file systems, so give
it a better name.
Signed-off-by: Christoph Hellwig <hch@lst.de >
Link: https://lore.kernel.org/r/20230531125535.676098-7-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2023-06-05 10:55:20 -06:00
Christoph Hellwig
f5524c3fad
init: remove pointless Root_* values
...
Remove all unused defines, and just use the expanded versions for
the SCSI disk majors.
I've decided to keep Root_RAM0 even if it could be expanded as there
is a lot of special casing for it in the init code.
Signed-off-by: Christoph Hellwig <hch@lst.de >
Link: https://lore.kernel.org/r/20230531125535.676098-6-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2023-06-05 10:55:20 -06:00
Christoph Hellwig
cc89c63e2f
PM: hibernate: move finding the resume device out of software_resume
...
software_resume can be called either from an init call in the boot code,
or from sysfs once the system has finished booting, and the two
invocation methods this can't race with each other.
For the latter case we did just parse the suspend device manually, while
the former might not have one. Split software_resume so that the search
only happens for the boot case, which also means the special lockdep
nesting annotation can go away as the system transition mutex can be
taken a little later and doesn't have the sysfs locking nest inside it.
Signed-off-by: Christoph Hellwig <hch@lst.de >
Acked-by: Rafael J. Wysocki <rafael@kernel.org >
Link: https://lore.kernel.org/r/20230531125535.676098-5-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2023-06-05 10:55:20 -06:00
Christoph Hellwig
d6545e6872
PM: hibernate: remove the global snapshot_test variable
...
Passing call dependent variable in global variables is a huge
antipattern. Fix it up.
Signed-off-by: Christoph Hellwig <hch@lst.de >
Acked-by: Rafael J. Wysocki <rafael@kernel.org >
Link: https://lore.kernel.org/r/20230531125535.676098-4-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2023-06-05 10:55:20 -06:00
Christoph Hellwig
02b42d58f3
PM: hibernate: factor out a helper to find the resume device
...
Split the logic to find the resume device out software_resume and into
a separate helper to start unwindig the convoluted goto logic.
Signed-off-by: Christoph Hellwig <hch@lst.de >
Acked-by: Rafael J. Wysocki <rafael@kernel.org >
Link: https://lore.kernel.org/r/20230531125535.676098-3-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2023-06-05 10:55:20 -06:00
Christoph Hellwig
aa5f6ed8c2
driver core: return bool from driver_probe_done
...
bool is the most sensible return value for a yes/no return. Also
add __init as this funtion is only called from the early boot code.
Signed-off-by: Christoph Hellwig <hch@lst.de >
Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
Link: https://lore.kernel.org/r/20230531125535.676098-2-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2023-06-05 10:55:20 -06:00
Christoph Hellwig
dd2e31afba
ext4: wire up the ->mark_dead holder operation for log devices
...
Implement a set of holder_ops that shut down the file system when the
block device used as log device is removed undeneath the file system.
Signed-off-by: Christoph Hellwig <hch@lst.de >
Reviewed-by: Jan Kara <jack@suse.cz >
Acked-by: Dave Chinner <dchinner@redhat.com >
Reviewed-by: Dave Chinner <dchinner@redhat.com >
Link: https://lore.kernel.org/r/20230601094459.1350643-17-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2023-06-05 10:53:04 -06:00
Christoph Hellwig
f5db130d44
ext4: wire up sops->shutdown
...
Wire up the shutdown method to shut down the file system when the
underlying block device is marked dead.
Signed-off-by: Christoph Hellwig <hch@lst.de >
Reviewed-by: Jan Kara <jack@suse.cz >
Acked-by: Dave Chinner <dchinner@redhat.com >
Reviewed-by: Dave Chinner <dchinner@redhat.com >
Link: https://lore.kernel.org/r/20230601094459.1350643-16-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2023-06-05 10:53:04 -06:00
Christoph Hellwig
97524b454b
ext4: split ext4_shutdown
...
Split ext4_shutdown into a low-level helper that will be reused for
implementing the shutdown super operation and a wrapper for the ioctl
handling.
Signed-off-by: Christoph Hellwig <hch@lst.de >
Reviewed-by: Jan Kara <jack@suse.cz >
Acked-by: Dave Chinner <dchinner@redhat.com >
Reviewed-by: Dave Chinner <dchinner@redhat.com >
Link: https://lore.kernel.org/r/20230601094459.1350643-15-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2023-06-05 10:53:04 -06:00
Christoph Hellwig
8067ca1dcd
xfs: wire up the ->mark_dead holder operation for log and RT devices
...
Implement a set of holder_ops that shut down the file system when the
block device used as log or RT device is removed undeneath the file
system.
Signed-off-by: Christoph Hellwig <hch@lst.de >
Reviewed-by: Darrick J. Wong <djwong@kernel.org >
Acked-by: Dave Chinner <dchinner@redhat.com >
Reviewed-by: Dave Chinner <dchinner@redhat.com >
Link: https://lore.kernel.org/r/20230601094459.1350643-14-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2023-06-05 10:53:04 -06:00
Christoph Hellwig
e7caa877e5
xfs: wire up sops->shutdown
...
Wire up the shutdown method to shut down the file system when the
underlying block device is marked dead. Add a new message to
clearly distinguish this shutdown reason from other shutdowns.
Signed-off-by: Christoph Hellwig <hch@lst.de >
Reviewed-by: Darrick J. Wong <djwong@kernel.org >
Acked-by: Dave Chinner <dchinner@redhat.com >
Reviewed-by: Dave Chinner <dchinner@redhat.com >
Link: https://lore.kernel.org/r/20230601094459.1350643-13-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2023-06-05 10:53:04 -06:00
Christoph Hellwig
87efb39075
fs: add a method to shut down the file system
...
Add a new ->shutdown super operation that can be used to tell the file
system to shut down, and call it from newly created holder ops when the
block device under a file system shuts down.
This only covers the main block device for "simple" file systems using
get_tree_bdev / mount_bdev. File systems their own get_tree method
or opening additional devices will need to set up their own
blk_holder_ops.
Signed-off-by: Christoph Hellwig <hch@lst.de >
Reviewed-by: Christian Brauner <brauner@kernel.org >
Reviewed-by: Jan Kara <jack@suse.cz >
Reviewed-by: Darrick J. Wong <djwong@kernel.org >
Acked-by: Dave Chinner <dchinner@redhat.com >
Reviewed-by: Dave Chinner <dchinner@redhat.com >
Link: https://lore.kernel.org/r/20230601094459.1350643-12-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2023-06-05 10:53:04 -06:00
Christoph Hellwig
f55e017c64
block: add a mark_dead holder operation
...
Add a mark_dead method to blk_holder_ops that is called from blk_mark_disk_dead
to notify the holder that the block device it is using has been marked dead.
Signed-off-by: Christoph Hellwig <hch@lst.de >
Reviewed-by: Jan Kara <jack@suse.cz >
Acked-by: Christian Brauner <brauner@kernel.org >
Acked-by: Dave Chinner <dchinner@redhat.com >
Reviewed-by: Dave Chinner <dchinner@redhat.com >
Link: https://lore.kernel.org/r/20230601094459.1350643-11-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2023-06-05 10:53:04 -06:00
Christoph Hellwig
0718afd47f
block: introduce holder ops
...
Add a new blk_holder_ops structure, which is passed to blkdev_get_by_* and
installed in the block_device for exclusive claims. It will be used to
allow the block layer to call back into the user of the block device for
thing like notification of a removed device or a device resize.
Signed-off-by: Christoph Hellwig <hch@lst.de >
Reviewed-by: Jan Kara <jack@suse.cz >
Acked-by: Dave Chinner <dchinner@redhat.com >
Reviewed-by: Dave Chinner <dchinner@redhat.com >
Link: https://lore.kernel.org/r/20230601094459.1350643-10-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2023-06-05 10:53:04 -06:00
Christoph Hellwig
00080f7fb7
block: remove blk_drop_partitions
...
There is only a single caller left, so fold the loop into that.
Signed-off-by: Christoph Hellwig <hch@lst.de >
Reviewed-by: Jan Kara <jack@suse.cz >
Acked-by: Dave Chinner <dchinner@redhat.com >
Reviewed-by: Dave Chinner <dchinner@redhat.com >
Link: https://lore.kernel.org/r/20230601094459.1350643-9-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2023-06-05 10:53:04 -06:00
Christoph Hellwig
eec1be4c30
block: delete partitions later in del_gendisk
...
Delay dropping the block_devices for partitions in del_gendisk until
after the call to blk_mark_disk_dead, so that we can implementat
notification of removed devices in blk_mark_disk_dead.
This requires splitting a lower-level drop_partition helper out of
delete_partition and using that from del_gendisk, while having a
common loop for the whole device and partitions that calls
remove_inode_hash, fsync_bdev and __invalidate_device before the
call to blk_mark_disk_dead.
Signed-off-by: Christoph Hellwig <hch@lst.de >
Reviewed-by: Jan Kara <jack@suse.cz >
Acked-by: Dave Chinner <dchinner@redhat.com >
Reviewed-by: Dave Chinner <dchinner@redhat.com >
Link: https://lore.kernel.org/r/20230601094459.1350643-8-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2023-06-05 10:53:04 -06:00
Christoph Hellwig
69f90b70bd
block: unhash the inode earlier in delete_partition
...
Move the call to remove_inode_hash to the beginning of delete_partition,
as we want to prevent opening a block_device that is about to be removed
ASAP.
Signed-off-by: Christoph Hellwig <hch@lst.de >
Reviewed-by: Jan Kara <jack@suse.cz >
Acked-by: Dave Chinner <dchinner@redhat.com >
Reviewed-by: Dave Chinner <dchinner@redhat.com >
Link: https://lore.kernel.org/r/20230601094459.1350643-7-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2023-06-05 10:53:04 -06:00
Christoph Hellwig
a4f75764d1
block: avoid repeated work in blk_mark_disk_dead
...
Check if GD_DEAD is already set in blk_mark_disk_dead, and don't
duplicate the work already done.
Signed-off-by: Christoph Hellwig <hch@lst.de >
Reviewed-by: Jan Kara <jack@suse.cz >
Acked-by: Christian Brauner <brauner@kernel.org >
Acked-by: Dave Chinner <dchinner@redhat.com >
Reviewed-by: Dave Chinner <dchinner@redhat.com >
Link: https://lore.kernel.org/r/20230601094459.1350643-6-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2023-06-05 10:53:04 -06:00
Christoph Hellwig
66fddc25fe
block: consolidate the shutdown logic in blk_mark_disk_dead and del_gendisk
...
blk_mark_disk_dead does very similar work a a section of del_gendisk:
- set the GD_DEAD flag
- set the capacity to zero
- start a queue drain
but del_gendisk also sets QUEUE_FLAG_DYING on the queue if it is owned by
the disk, sets the capacity to zero before starting the drain, and both
with sending a uevent and kernel message for this fake capacity change.
Move the exact logic from the more heavily used del_gendisk into
blk_mark_disk_dead and then call blk_mark_disk_dead from del_gendisk.
Signed-off-by: Christoph Hellwig <hch@lst.de >
Reviewed-by: Jan Kara <jack@suse.cz >
Acked-by: Dave Chinner <dchinner@redhat.com >
Reviewed-by: Dave Chinner <dchinner@redhat.com >
Link: https://lore.kernel.org/r/20230601094459.1350643-5-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2023-06-05 10:53:04 -06:00
Christoph Hellwig
74e6464a98
block: turn bdev_lock into a mutex
...
There is no reason for this lock to spin, and being able to sleep under
it will come in handy soon.
Signed-off-by: Christoph Hellwig <hch@lst.de >
Reviewed-by: Jan Kara <jack@suse.cz >
Acked-by: Christian Brauner <brauner@kernel.org >
Acked-by: Dave Chinner <dchinner@redhat.com >
Reviewed-by: Dave Chinner <dchinner@redhat.com >
Link: https://lore.kernel.org/r/20230601094459.1350643-4-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2023-06-05 10:53:03 -06:00
Christoph Hellwig
ae5f855ead
block: refactor bd_may_claim
...
The long if/else chain obsfucates the actual logic. Tidy it up to be
more structured. Also drop the whole argument, as it can be trivially
derived from bdev using bdev_whole, and having the bdev_whole in the
function makes it easier to follow.
Signed-off-by: Christoph Hellwig <hch@lst.de >
Reviewed-by: Jan Kara <jack@suse.cz >
Acked-by: Dave Chinner <dchinner@redhat.com >
Reviewed-by: Dave Chinner <dchinner@redhat.com >
Link: https://lore.kernel.org/r/20230601094459.1350643-3-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2023-06-05 10:53:03 -06:00
Christoph Hellwig
0783b1a7cb
block: factor out a bd_end_claim helper from blkdev_put
...
Move all the logic to release an exclusive claim into a helper.
Signed-off-by: Christoph Hellwig <hch@lst.de >
Reviewed-by: Jan Kara <jack@suse.cz >
Acked-by: Christian Brauner <brauner@kernel.org >
Acked-by: Dave Chinner <dchinner@redhat.com >
Reviewed-by: Dave Chinner <dchinner@redhat.com >
Link: https://lore.kernel.org/r/20230601094459.1350643-2-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2023-06-05 10:53:03 -06:00
Christoph Hellwig
d519df0093
drbd: stop defining __KERNEL_SYSCALLS__
...
__KERNEL_SYSCALLS__ hasn't been needed since Linux 2.6.19 so stop
defining it.
Signed-off-by: Christoph Hellwig <hch@lst.de >
Reviewed-by: Christoph Böhmwalder <christoph.boehmwalder@linbit.com >
Link: https://lore.kernel.org/r/20230601151646.1386867-1-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2023-06-05 10:45:25 -06:00
Ming Lei
b5bbc52fd0
ublk: add control command of UBLK_U_CMD_GET_FEATURES
...
Add control command of UBLK_U_CMD_GET_FEATURES for returning driver's
feature set or capability.
This way can simplify userspace for maintaining compatibility because
userspace doesn't need to send command to one device for querying driver
feature set any more. Such as, with the queried feature set, userspace
can choose to use:
- UBLK_CMD_GET_DEV_INFO2 or UBLK_CMD_GET_DEV_INFO,
- UBLK_U_CMD_* or UBLK_CMD_*
Userspace code:
https://github.com/ming1/ubdsrv/commits/features-cmd
Signed-off-by: Ming Lei <ming.lei@redhat.com >
Link: https://lore.kernel.org/r/20230603040601.775227-1-ming.lei@redhat.com
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2023-06-04 08:34:14 -06:00
Azeem Shaikh
20d099756b
block: Replace all non-returning strlcpy with strscpy
...
strlcpy() reads the entire source buffer first.
This read may exceed the destination size limit.
This is both inefficient and can lead to linear read
overflows if a source string is not NUL-terminated [1].
In an effort to remove strlcpy() completely [2], replace
strlcpy() here with strscpy().
No return values were used, so direct replacement is safe.
[1] https://www.kernel.org/doc/html/latest/process/deprecated.html#strlcpy
[2] https://github.com/KSPP/linux/issues/89
Signed-off-by: Azeem Shaikh <azeemshaikh38@gmail.com >
Reviewed-by: Kees Cook <keescook@chromium.org >
Link: https://lore.kernel.org/r/20230530155608.272266-1-azeemshaikh38@gmail.com
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2023-06-01 09:13:31 -06:00
Yu Kuai
5a0ac57c48
blk-ioc: protect ioc_destroy_icq() by 'queue_lock'
...
Currently, icq is tracked by both request_queue(icq->q_node) and
task(icq->ioc_node), and ioc_clear_queue() from elevator exit is not
safe because it can access the list without protection:
ioc_clear_queue ioc_release_fn
lock queue_lock
list_splice
/* move queue list to a local list */
unlock queue_lock
/*
* lock is released, the local list
* can be accessed through task exit.
*/
lock ioc->lock
while (!hlist_empty)
icq = hlist_entry
lock queue_lock
ioc_destroy_icq
delete icq->ioc_node
while (!list_empty)
icq = list_entry() list_del icq->q_node
/*
* This is not protected by any lock,
* list_entry concurrent with list_del
* is not safe.
*/
unlock queue_lock
unlock ioc->lock
Fix this problem by protecting list 'icq->q_node' by queue_lock from
ioc_clear_queue().
Reported-and-tested-by: Pradeep Pragallapati <quic_pragalla@quicinc.com >
Link: https://lore.kernel.org/lkml/20230517084434.18932-1-quic_pragalla@quicinc.com/
Signed-off-by: Yu Kuai <yukuai3@huawei.com >
Reviewed-by: Christoph Hellwig <hch@lst.de >
Link: https://lore.kernel.org/r/20230531073435.2923422-1-yukuai1@huaweicloud.com
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2023-06-01 09:13:31 -06:00
Johannes Thumshirn
6c500000af
block: mark bio_add_folio as __must_check
...
Now that all callers of bio_add_folio() check the return value, mark it as
__must_check.
Reviewed-by: Matthew Wilcox (Oracle) <willy@infradead.org >
Signed-off-by: Johannes Thumshirn <johannes.thumshirn@wdc.com >
Reviewed-by: Christoph Hellwig <hch@lst.de >
Link: https://lore.kernel.org/r/381360a45ac3684120cfbe1e07685e9c36256e47.1685532726.git.johannes.thumshirn@wdc.com
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2023-06-01 09:13:31 -06:00
Johannes Thumshirn
c2478469f2
fs: iomap: use bio_add_folio_nofail where possible
...
When the iomap buffered-io code can't add a folio to a bio, it allocates a
new bio and adds the folio to that one. This is done using bio_add_folio(),
but doesn't check for errors.
As adding a folio to a newly created bio can't fail, use the newly
introduced bio_add_folio_nofail() function.
Reviewed-by: Christoph Hellwig <hch@lst.de >
Reviewed-by: Matthew Wilcox (Oracle) <willy@infradead.org >
Signed-off-by: Johannes Thumshirn <johannes.thumshirn@wdc.com >
Link: https://lore.kernel.org/r/58fa893c24c67340a63323f09a179fefdca07f2a.1685532726.git.johannes.thumshirn@wdc.com
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2023-06-01 09:13:31 -06:00
Johannes Thumshirn
7a150f1ed1
block: add bio_add_folio_nofail
...
Just like for bio_add_pages() add a no-fail variant for bio_add_folio().
Reviewed-by: Matthew Wilcox (Oracle) <willy@infradead.org >
Signed-off-by: Johannes Thumshirn <johannes.thumshirn@wdc.com >
Reviewed-by: Christoph Hellwig <hch@lst.de >
Link: https://lore.kernel.org/r/924dff4077812804398ef84128fb920507fa4be1.1685532726.git.johannes.thumshirn@wdc.com
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2023-06-01 09:13:31 -06:00
Johannes Thumshirn
83f2caaaf9
block: mark bio_add_page as __must_check
...
Now that all users of bio_add_page check for the return value, mark
bio_add_page as __must_check.
Reviewed-by: Damien Le Moal <damien.lemoal@opensource.wdc.com >
Signed-off-by: Johannes Thumshirn <johannes.thumshirn@wdc.com >
Reviewed-by: Christoph Hellwig <hch@lst.de >
Link: https://lore.kernel.org/r/7ae4a902e08fe2e90c012ee07aeb35d4aae28373.1685532726.git.johannes.thumshirn@wdc.com
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2023-06-01 09:13:31 -06:00
Johannes Thumshirn
2c550517bc
dm-crypt: use __bio_add_page to add single page to clone bio
...
crypt_alloc_buffer() already allocates enough entries in the clone bio's
vector, so adding a page to the bio can't fail. Use __bio_add_page() to
reflect this.
Signed-off-by: Johannes Thumshirn <johannes.thumshirn@wdc.com >
Link: https://lore.kernel.org/r/f9a4dee5e81389fd70ffc442da01006538e55aca.1685532726.git.johannes.thumshirn@wdc.com
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2023-06-01 09:13:31 -06:00
Johannes Thumshirn
0c67dd6441
md: raid1: check if adding pages to resync bio fails
...
Check if adding pages to resync bio fails and if bail out.
As the comment above suggests this cannot happen, WARN if it actually
happens. Technically __bio_add_pages() would be sufficient here, but
asserting the pages actually get added to the bio is preferred.
This way we can mark bio_add_pages as __must_check.
Reviewed-by: Damien Le Moal <damien.lemoal@opensource.wdc.com >
Acked-by: Song Liu <song@kernel.org >
Signed-off-by: Johannes Thumshirn <johannes.thumshirn@wdc.com >
Link: https://lore.kernel.org/r/33aea4c271220dc9bcab58c4b7bec478c1511142.1685532726.git.johannes.thumshirn@wdc.com
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2023-06-01 09:13:31 -06:00
Johannes Thumshirn
f83123223a
md: raid1: use __bio_add_page for adding single page to bio
...
The sync request code uses bio_add_page() to add a page to a newly created bio.
bio_add_page() can fail, but the return value is never checked.
Use __bio_add_page() as adding a single page to a newly created bio is
guaranteed to succeed.
This brings us a step closer to marking bio_add_page() as __must_check.
Reviewed-by: Christoph Hellwig <hch@lst.de >
Reviewed-by: Damien Le Moal <damien.lemoal@opensource.wdc.com >
Acked-by: Song Liu <song@kernel.org >
Signed-off-by: Johannes Thumshirn <johannes.thumshirn@wdc.com >
Link: https://lore.kernel.org/r/6cf7f66c6e646231200d025dfd5f2d3ae75c8fe5.1685532726.git.johannes.thumshirn@wdc.com
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2023-06-01 09:13:31 -06:00
Johannes Thumshirn
b42473cdba
md: check for failure when adding pages in alloc_behind_master_bio
...
alloc_behind_master_bio() can possibly add multiple pages to a bio, but it
is not checking for the return value of bio_add_page() if adding really
succeeded.
Check if the page adding succeeded and if not bail out.
Reviewed-by: Christoph Hellwig <hch@lst.de >
Acked-by: Song Liu <song@kernel.org >
Reviewed-by: Damien Le Moal <damien.lemoal@opensource.wdc.com >
Signed-off-by: Johannes Thumshirn <johannes.thumshirn@wdc.com >
Link: https://lore.kernel.org/r/827aa12d44ebf3f50b41b47f5cedc0f80179f2c1.1685532726.git.johannes.thumshirn@wdc.com
[axboe: fold in s/free_page/put_page fix]
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2023-06-01 09:13:13 -06:00
Johannes Thumshirn
5225229b8f
floppy: use __bio_add_page for adding single page to bio
...
The floppy code uses bio_add_page() to add a page to a newly created bio.
bio_add_page() can fail, but the return value is never checked.
Use __bio_add_page() as adding a single page to a newly created bio is
guaranteed to succeed.
This brings us a step closer to marking bio_add_page() as __must_check.
Reviewed-by: Christoph Hellwig <hch@lst.de >
Reviewed-by: Damien Le Moal <damien.lemoal@opensource.wdc.com >
Signed-off-by: Johannes Thumshirn <johannes.thumshirn@wdc.com >
Link: https://lore.kernel.org/r/33c445a3b431270c72d9be03d5da1b08ae983920.1685532726.git.johannes.thumshirn@wdc.com
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2023-05-31 09:50:02 -06:00
Johannes Thumshirn
34848c910b
zram: use __bio_add_page for adding single page to bio
...
The zram writeback code uses bio_add_page() to add a page to a newly
created bio. bio_add_page() can fail, but the return value is never
checked.
Use __bio_add_page() as adding a single page to a newly created bio is
guaranteed to succeed.
This brings us a step closer to marking bio_add_page() as __must_check.
Reviewed-by: Damien Le Moal <damien.lemoal@opensource.wdc.com >
Reviewed-by: Sergey Senozhatsky <senozhatsky@chromium.org >
Reviewed-by: Christoph Hellwig <hch@lst.de >
Signed-off-by: Johannes Thumshirn <johannes.thumshirn@wdc.com >
Link: https://lore.kernel.org/r/cfd141dd7773315879a126f2aa81b7f698bc0e10.1685532726.git.johannes.thumshirn@wdc.com
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2023-05-31 09:50:02 -06:00
Johannes Thumshirn
0fa5b08cf6
zonefs: use __bio_add_page for adding single page to bio
...
The zonefs superblock reading code uses bio_add_page() to add a page to a
newly created bio. bio_add_page() can fail, but the return value is
never checked.
Use __bio_add_page() as adding a single page to a newly created bio is
guaranteed to succeed.
This brings us a step closer to marking bio_add_page() as __must_check.
Acked-by: Damien Le Moal <damien.lemoal@opensource.wdc.com >
Reviewed-by: Christoph Hellwig <hch@lst.de >
Signed-off-by: Johannes Thumshirn <johannes.thumshirn@wdc.com >
Link: https://lore.kernel.org/r/04c9978ccaa0fc9871cd4248356638d98daccf0c.1685532726.git.johannes.thumshirn@wdc.com
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2023-05-31 09:50:02 -06:00
Johannes Thumshirn
effa7ddeeb
gfs2: use __bio_add_page for adding single page to bio
...
The GFS2 superblock reading code uses bio_add_page() to add a page to a
newly created bio. bio_add_page() can fail, but the return value is never
checked.
Use __bio_add_page() as adding a single page to a newly created bio is
guaranteed to succeed.
This brings us a step closer to marking bio_add_page() as __must_check.
Reviewed-by: Damien Le Moal <damien.lemoal@opensource.wdc.com >
Reviewed-by: Andreas Gruenbacher <agruenba@redhat.com >
Reviewed-by: Christoph Hellwig <hch@lst.de >
Signed-off-by: Johannes Thumshirn <johannes.thumshirn@wdc.com >
Link: https://lore.kernel.org/r/087c67d4e4973f949d3519c1e4822784ce583c5a.1685532726.git.johannes.thumshirn@wdc.com
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2023-05-31 09:50:02 -06:00
Johannes Thumshirn
2896db174c
jfs: logmgr: use __bio_add_page to add single page to bio
...
The JFS IO code uses bio_add_page() to add a page to a newly created bio.
bio_add_page() can fail, but the return value is never checked.
Use __bio_add_page() as adding a single page to a newly created bio is
guaranteed to succeed.
This brings us a step closer to marking bio_add_page() as __must_check.
Reviewed-by: Damien Le Moal <damien.lemoal@opensource.wdc.com >
Acked-by: Dave Kleikamp <dave.kleikamp@oracle.com >
Reviewed-by: Christoph Hellwig <hch@lst.de >
Signed-off-by: Johannes Thumshirn <johannes.thumshirn@wdc.com >
Link: https://lore.kernel.org/r/9fb5ed86d19f6e0b6f64dfc4109a48ff8ff24497.1685532726.git.johannes.thumshirn@wdc.com
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2023-05-31 09:50:02 -06:00
Johannes Thumshirn
6eea4ff852
md: raid5: use __bio_add_page to add single page to new bio
...
The raid5-ppl submission code uses bio_add_page() to add a page to a
newly created bio. bio_add_page() can fail, but the return value is never
checked. For adding consecutive pages, the return is actually checked and
a new bio is allocated if adding the page fails.
Use __bio_add_page() as adding a single page to a newly created bio is
guaranteed to succeed.
This brings us a step closer to marking bio_add_page() as __must_check.
Reviewed-by: Christoph Hellwig <hch@lst.de >
Reviewed-by: Damien Le Moal <damien.lemoal@opensource.wdc.com >
Acked-by: Song Liu <song@kernel.org >
Signed-off-by: Johannes Thumshirn <johannes.thumshirn@wdc.com >
Link: https://lore.kernel.org/r/27e6bcd762354bff74602e89159cdd12ae3d1fa9.1685532726.git.johannes.thumshirn@wdc.com
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2023-05-31 09:50:02 -06:00
Johannes Thumshirn
b0a2f17cad
md: raid5-log: use __bio_add_page to add single page
...
The raid5 log metadata submission code uses bio_add_page() to add a page
to a newly created bio. bio_add_page() can fail, but the return value is
never checked.
Use __bio_add_page() as adding a single page to a newly created bio is
guaranteed to succeed.
This brings us a step closer to marking bio_add_page() as __must_check.
Reviewed-by: Christoph Hellwig <hch@lst.de >
Reviewed-by: Damien Le Moal <damien.lemoal@opensource.wdc.com >
Acked-by: Song Liu <song@kernel.org >
Signed-off-by: Johannes Thumshirn <johannes.thumshirn@wdc.com >
Link: https://lore.kernel.org/r/832a810d6c9e71f88b0a39cb076a8c70e8bcb821.1685532726.git.johannes.thumshirn@wdc.com
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2023-05-31 09:50:02 -06:00
Johannes Thumshirn
3c383235c5
md: use __bio_add_page to add single page
...
The md-raid superblock writing code uses bio_add_page() to add a page to a
newly created bio. bio_add_page() can fail, but the return value is never
checked.
Use __bio_add_page() as adding a single page to a newly created bio is
guaranteed to succeed.
This brings us a step closer to marking bio_add_page() as __must_check.
Signed-of_-by: Johannes Thumshirn <johannes.thumshirn@wdc.com >
Reviewed-by: Damien Le Moal <damien.lemoal@opensource.wdc.com >
Reviewed-by: Christoph Hellwig <hch@lst.de >
Acked-by: Song Liu <song@kernel.org >
Link: https://lore.kernel.org/r/ca196f5e650e318106dbb4496eb6cbac4bc800bd.1685532726.git.johannes.thumshirn@wdc.com
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2023-05-31 09:50:02 -06:00