• A
    block: push down BKL into .open and .release · 6e9624b8
    Arnd Bergmann 提交于
    The open and release block_device_operations are currently
    called with the BKL held. In order to change that, we must
    first make sure that all drivers that currently rely
    on this have no regressions.
    
    This blindly pushes the BKL into all .open and .release
    operations for all block drivers to prepare for the
    next step. The drivers can subsequently replace the BKL
    with their own locks or remove it completely when it can
    be shown that it is not needed.
    
    The functions blkdev_get and blkdev_put are the only
    remaining users of the big kernel lock in the block
    layer, besides a few uses in the ioctl code, none
    of which need to serialize with blkdev_{get,put}.
    
    Most of these two functions is also under the protection
    of bdev->bd_mutex, including the actual calls to
    ->open and ->release, and the common code does not
    access any global data structures that need the BKL.
    Signed-off-by: NArnd Bergmann <arnd@arndb.de>
    Acked-by: NChristoph Hellwig <hch@infradead.org>
    Signed-off-by: NJens Axboe <jaxboe@fusionio.com>
    6e9624b8
block_dev.c 42.5 KB