[PATCH 25/45] block: simplify bdev/disk lookup in blkdev_get
Hannes Reinecke
hare at suse.de
Mon Nov 30 02:36:19 EST 2020
On 11/28/20 5:14 PM, Christoph Hellwig wrote:
> To simplify block device lookup and a few other upcoming areas, make sure
> that we always have a struct block_device available for each disk and
> each partition, and only find existing block devices in bdget. The only
> downside of this is that each device and partition uses a little more
> memory. The upside will be that a lot of code can be simplified.
>
> With that all we need to look up the block device is to lookup the inode
> and do a few sanity checks on the gendisk, instead of the separate lookup
> for the gendisk. For blk-cgroup which wants to access a gendisk without
> opening it, a new blkdev_{get,put}_no_open low-level interface is added
> to replace the previous get_gendisk use.
>
> Note that the change to look up block device directly instead of the two
> step lookup using struct gendisk causes a subtile change in behavior:
> accessing a non-existing partition on an existing block device can now
> cause a call to request_module. That call is harmless, and in practice
> no recent system will access these nodes as they aren't created by udev
> and static /dev/ setups are unusual.
>
> Signed-off-by: Christoph Hellwig <hch at lst.de>
> ---
> block/blk-cgroup.c | 42 ++++----
> block/blk-iocost.c | 36 +++----
> block/blk.h | 2 +-
> block/genhd.c | 210 +++++--------------------------------
> block/partitions/core.c | 29 ++---
> fs/block_dev.c | 177 +++++++++++++++++--------------
> include/linux/blk-cgroup.h | 4 +-
> include/linux/blkdev.h | 6 ++
> include/linux/genhd.h | 7 +-
> 9 files changed, 194 insertions(+), 319 deletions(-)
>
Reviewed-by: Hannes Reinecke <hare at suse.de>
Cheers,
Hannes
--
Dr. Hannes Reinecke Kernel Storage Architect
hare at suse.de +49 911 74053 688
SUSE Software Solutions GmbH, Maxfeldstr. 5, 90409 Nürnberg
HRB 36809 (AG Nürnberg), Geschäftsführer: Felix Imendörffer
More information about the linux-mtd
mailing list