block: move bd_set_size() above rescan_partitions() in __blkdev_get()
02e352287a
(block: rescan partitions on invalidated devices on -ENOMEDIA too) relocated partition rescan above explicit bd_set_size() to simplify condition check. As rescan_partitions() does its own bdev size setting, this doesn't break anything; however, rescan_partitions() prints out the following messages when adjusting bdev size, which can be confusing. sda: detected capacity change from 0 to 146815737856 sdb: detected capacity change from 0 to 146815737856 This patch restores the original order and remove the warning messages. stable: Please apply together with02e352287a
(block: rescan partitions on invalidated devices on -ENOMEDIA too). Signed-off-by: Tejun Heo <tj@kernel.org> Reported-by: Tony Luck <tony.luck@gmail.com> Tested-by: Tony Luck <tony.luck@gmail.com> Cc: stable@kernel.org Stable note: 2.6.39 only. Signed-off-by: Jens Axboe <jaxboe@fusionio.com>
This commit is contained in:
@@ -1120,6 +1120,15 @@ static int __blkdev_get(struct block_device *bdev, fmode_t mode, int for_part)
|
|||||||
goto restart;
|
goto restart;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!ret && !bdev->bd_openers) {
|
||||||
|
bd_set_size(bdev,(loff_t)get_capacity(disk)<<9);
|
||||||
|
bdi = blk_get_backing_dev_info(bdev);
|
||||||
|
if (bdi == NULL)
|
||||||
|
bdi = &default_backing_dev_info;
|
||||||
|
bdev_inode_switch_bdi(bdev->bd_inode, bdi);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If the device is invalidated, rescan partition
|
* If the device is invalidated, rescan partition
|
||||||
* if open succeeded or failed with -ENOMEDIUM.
|
* if open succeeded or failed with -ENOMEDIUM.
|
||||||
@@ -1130,14 +1139,6 @@ static int __blkdev_get(struct block_device *bdev, fmode_t mode, int for_part)
|
|||||||
rescan_partitions(disk, bdev);
|
rescan_partitions(disk, bdev);
|
||||||
if (ret)
|
if (ret)
|
||||||
goto out_clear;
|
goto out_clear;
|
||||||
|
|
||||||
if (!bdev->bd_openers) {
|
|
||||||
bd_set_size(bdev,(loff_t)get_capacity(disk)<<9);
|
|
||||||
bdi = blk_get_backing_dev_info(bdev);
|
|
||||||
if (bdi == NULL)
|
|
||||||
bdi = &default_backing_dev_info;
|
|
||||||
bdev_inode_switch_bdi(bdev->bd_inode, bdi);
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
struct block_device *whole;
|
struct block_device *whole;
|
||||||
whole = bdget_disk(disk, 0);
|
whole = bdget_disk(disk, 0);
|
||||||
|
Reference in New Issue
Block a user