|
@@ -1556,8 +1556,6 @@ static int __blkdev_get(struct block_device *bdev, fmode_t mode, int for_part)
|
|
|
bdev->bd_disk = disk;
|
|
|
bdev->bd_queue = disk->queue;
|
|
|
bdev->bd_contains = bdev;
|
|
|
- if (bdev->bd_bdi == &noop_backing_dev_info)
|
|
|
- bdev->bd_bdi = bdi_get(disk->queue->backing_dev_info);
|
|
|
|
|
|
if (!partno) {
|
|
|
ret = -ENXIO;
|
|
@@ -1622,6 +1620,9 @@ static int __blkdev_get(struct block_device *bdev, fmode_t mode, int for_part)
|
|
|
}
|
|
|
bd_set_size(bdev, (loff_t)bdev->bd_part->nr_sects << 9);
|
|
|
}
|
|
|
+
|
|
|
+ if (bdev->bd_bdi == &noop_backing_dev_info)
|
|
|
+ bdev->bd_bdi = bdi_get(disk->queue->backing_dev_info);
|
|
|
} else {
|
|
|
if (bdev->bd_contains == bdev) {
|
|
|
ret = 0;
|
|
@@ -1653,8 +1654,6 @@ static int __blkdev_get(struct block_device *bdev, fmode_t mode, int for_part)
|
|
|
bdev->bd_disk = NULL;
|
|
|
bdev->bd_part = NULL;
|
|
|
bdev->bd_queue = NULL;
|
|
|
- bdi_put(bdev->bd_bdi);
|
|
|
- bdev->bd_bdi = &noop_backing_dev_info;
|
|
|
if (bdev != bdev->bd_contains)
|
|
|
__blkdev_put(bdev->bd_contains, mode, 1);
|
|
|
bdev->bd_contains = NULL;
|