summaryrefslogtreecommitdiffstats
path: root/block/genhd.c
diff options
context:
space:
mode:
authorJens Axboe <axboe@kernel.dk>2023-04-14 07:32:02 -0600
committerJens Axboe <axboe@kernel.dk>2023-04-16 13:01:42 -0600
commit9f4107b07b17b5ee68af680150f91227bea2df6f (patch)
tree54f7074442e4411c2770e09724b288422b95d2e6 /block/genhd.c
parent3838c406a594f15600ad6f83c1e3b16bfd1829d0 (diff)
downloadlinux-9f4107b07b17b5ee68af680150f91227bea2df6f.tar.gz
linux-9f4107b07b17b5ee68af680150f91227bea2df6f.tar.bz2
linux-9f4107b07b17b5ee68af680150f91227bea2df6f.zip
block: store bdev->bd_disk->fops->submit_bio state in bdev
We have a long chain of memory dereferencing just to whether or not this disk has a special submit_bio helper. As that's not necessarily the common case, add a bd_has_submit_bio state in the bdev to avoid traversing this memory dependency chain if we don't need to. Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'block/genhd.c')
-rw-r--r--block/genhd.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/block/genhd.c b/block/genhd.c
index 02d9cfb9e077..cadcb472dfc3 100644
--- a/block/genhd.c
+++ b/block/genhd.c
@@ -420,6 +420,9 @@ int __must_check device_add_disk(struct device *parent, struct gendisk *disk,
*/
elevator_init_mq(disk->queue);
+ /* Mark bdev as having a submit_bio, if needed */
+ disk->part0->bd_has_submit_bio = disk->fops->submit_bio != NULL;
+
/*
* If the driver provides an explicit major number it also must provide
* the number of minors numbers supported, and those will be used to