ide-gd: re-get capacity on revalidate
authorBorislav Petkov <petkovbb@gmail.com>
Sun, 2 Nov 2008 20:40:10 +0000 (21:40 +0100)
committerBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Sun, 2 Nov 2008 20:40:10 +0000 (21:40 +0100)
We need to re-get a removable media's capacity when revalidating the
disk so that its partitions get rescanned by the block layer.

Signed-off-by: Borislav Petkov <petkovbb@gmail.com>
Cc: Tejun Heo <tj@kernel.org>
Cc: axboe@kernel.dk
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
drivers/ide/ide-gd.c

index 7b66628..b8078b3 100644 (file)
@@ -281,7 +281,12 @@ static int ide_gd_media_changed(struct gendisk *disk)
 static int ide_gd_revalidate_disk(struct gendisk *disk)
 {
        struct ide_disk_obj *idkp = ide_drv_g(disk, ide_disk_obj);
-       set_capacity(disk, ide_gd_capacity(idkp->drive));
+       ide_drive_t *drive = idkp->drive;
+
+       if (ide_gd_media_changed(disk))
+               drive->disk_ops->get_capacity(drive);
+
+       set_capacity(disk, ide_gd_capacity(drive));
        return 0;
 }