• Christoph Hellwig's avatar
    block: simplify bdev/disk lookup in blkdev_get · 22ae8ce8
    Christoph Hellwig authored
    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: default avatarChristoph Hellwig <hch@lst.de>
    Reviewed-by: default avatarJan Kara <jack@suse.cz>
    Reviewed-by: default avatarHannes Reinecke <hare@suse.de>
    Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
    22ae8ce8
core.c 18.6 KB