Merge git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-2.6-fixes
[pandora-kernel.git] / drivers / ide / ide-disk.c
index 3b128dc..33d6503 100644 (file)
@@ -407,32 +407,24 @@ static int ide_disk_get_capacity(ide_drive_t *drive)
        return 0;
 }
 
-static u64 ide_disk_set_capacity(ide_drive_t *drive, u64 capacity)
+static void ide_disk_unlock_native_capacity(ide_drive_t *drive)
 {
-       u64 set = min(capacity, drive->probed_capacity);
        u16 *id = drive->id;
        int lba48 = ata_id_lba48_enabled(id);
 
        if ((drive->dev_flags & IDE_DFLAG_LBA) == 0 ||
            ata_id_hpa_enabled(id) == 0)
-               goto out;
+               return;
 
        /*
         * according to the spec the SET MAX ADDRESS command shall be
         * immediately preceded by a READ NATIVE MAX ADDRESS command
         */
-       capacity = ide_disk_hpa_get_native_capacity(drive, lba48);
-       if (capacity == 0)
-               goto out;
-
-       set = ide_disk_hpa_set_capacity(drive, set, lba48);
-       if (set) {
-               /* needed for ->resume to disable HPA */
-               drive->dev_flags |= IDE_DFLAG_NOHPA;
-               return set;
-       }
-out:
-       return drive->capacity64;
+       if (!ide_disk_hpa_get_native_capacity(drive, lba48))
+               return;
+
+       if (ide_disk_hpa_set_capacity(drive, drive->probed_capacity, lba48))
+               drive->dev_flags |= IDE_DFLAG_NOHPA; /* disable HPA on resume */
 }
 
 static void idedisk_prepare_flush(struct request_queue *q, struct request *rq)
@@ -783,13 +775,13 @@ static int ide_disk_set_doorlock(ide_drive_t *drive, struct gendisk *disk,
 }
 
 const struct ide_disk_ops ide_ata_disk_ops = {
-       .check          = ide_disk_check,
-       .set_capacity   = ide_disk_set_capacity,
-       .get_capacity   = ide_disk_get_capacity,
-       .setup          = ide_disk_setup,
-       .flush          = ide_disk_flush,
-       .init_media     = ide_disk_init_media,
-       .set_doorlock   = ide_disk_set_doorlock,
-       .do_request     = ide_do_rw_disk,
-       .ioctl          = ide_disk_ioctl,
+       .check                  = ide_disk_check,
+       .unlock_native_capacity = ide_disk_unlock_native_capacity,
+       .get_capacity           = ide_disk_get_capacity,
+       .setup                  = ide_disk_setup,
+       .flush                  = ide_disk_flush,
+       .init_media             = ide_disk_init_media,
+       .set_doorlock           = ide_disk_set_doorlock,
+       .do_request             = ide_do_rw_disk,
+       .ioctl                  = ide_disk_ioctl,
 };