summaryrefslogtreecommitdiffstats
path: root/drivers/ide
diff options
context:
space:
mode:
authorBorislav Petkov <petkovbb@gmail.com>2008-11-02 21:40:10 +0100
committerBartlomiej Zolnierkiewicz <bzolnier@gmail.com>2008-11-02 21:40:10 +0100
commit52ebb438e952c674e5a5c131292589db9bcf169b (patch)
treeeba090be2781f18d7c6820f131d67c104b0cf548 /drivers/ide
parent7afa05350c42d8427f2d8f6112b64ab0812f3289 (diff)
downloadlinux-52ebb438e952c674e5a5c131292589db9bcf169b.tar.gz
linux-52ebb438e952c674e5a5c131292589db9bcf169b.tar.bz2
linux-52ebb438e952c674e5a5c131292589db9bcf169b.zip
ide-gd: re-get capacity on revalidate
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>
Diffstat (limited to 'drivers/ide')
-rw-r--r--drivers/ide/ide-gd.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/ide/ide-gd.c b/drivers/ide/ide-gd.c
index 7b6662854374..b8078b3231f7 100644
--- a/drivers/ide/ide-gd.c
+++ b/drivers/ide/ide-gd.c
@@ -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;
}