On Wed 15-05-19 08:57:40, Jan Kara wrote:
> When hidden gendisk is revalidated, there's no point in revalidating
> associated block device as there's none. We would thus just create new
> bdev inode, report "detected capacity change from 0 to XXX" message and
> evict the bdev inode again. Avoid this pointless dance and confusing
> message in the kernel log.
>
> Signed-off-by: Jan Kara <[email protected]>
Jens, ping?
Honza
> ---
> fs/block_dev.c | 25 ++++++++++++++++---------
> 1 file changed, 16 insertions(+), 9 deletions(-)
>
> diff --git a/fs/block_dev.c b/fs/block_dev.c
> index 0f7552a87d54..9e671bbf7362 100644
> --- a/fs/block_dev.c
> +++ b/fs/block_dev.c
> @@ -1405,20 +1405,27 @@ void check_disk_size_change(struct gendisk *disk,
> struct block_device *bdev,
> */
> int revalidate_disk(struct gendisk *disk)
> {
> - struct block_device *bdev;
> int ret = 0;
>
> if (disk->fops->revalidate_disk)
> ret = disk->fops->revalidate_disk(disk);
> - bdev = bdget_disk(disk, 0);
> - if (!bdev)
> - return ret;
>
> - mutex_lock(&bdev->bd_mutex);
> - check_disk_size_change(disk, bdev, ret == 0);
> - bdev->bd_invalidated = 0;
> - mutex_unlock(&bdev->bd_mutex);
> - bdput(bdev);
> + /*
> + * Hidden disks don't have associated bdev so there's no point in
> + * revalidating it.
> + */
> + if (!(disk->flags & GENHD_FL_HIDDEN)) {
> + struct block_device *bdev = bdget_disk(disk, 0);
> +
> + if (!bdev)
> + return ret;
> +
> + mutex_lock(&bdev->bd_mutex);
> + check_disk_size_change(disk, bdev, ret == 0);
> + bdev->bd_invalidated = 0;
> + mutex_unlock(&bdev->bd_mutex);
> + bdput(bdev);
> + }
> return ret;
> }
> EXPORT_SYMBOL(revalidate_disk);
> --
> 2.16.4
>
--
Jan Kara <[email protected]>
SUSE Labs, CR