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 <h...@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 <h...@suse.de>
Cheers,
Hannes
--
Dr. Hannes Reinecke Kernel Storage Architect
h...@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
--
dm-devel mailing list
dm-devel@redhat.com
https://www.redhat.com/mailman/listinfo/dm-devel