ide-disk: set non-rotational queue flag for SSD and CF devices
authorBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Thu, 23 Oct 2008 21:22:09 +0000 (23:22 +0200)
committerBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Thu, 23 Oct 2008 21:22:09 +0000 (23:22 +0200)
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
drivers/ide/ide-disk.c

index 223750c1b5a6a170bccfcd0b6171b022df0c5caa..e5adebe8ac2c88501ff9d0e11a049a7eb530655c 100644 (file)
@@ -600,6 +600,7 @@ static int ide_disk_check(ide_drive_t *drive, const char *s)
 static void ide_disk_setup(ide_drive_t *drive)
 {
        struct ide_disk_obj *idkp = drive->driver_data;
+       struct request_queue *q = drive->queue;
        ide_hwif_t *hwif = drive->hwif;
        u16 *id = drive->id;
        char *m = (char *)&id[ATA_ID_PROD];
@@ -626,11 +627,14 @@ static void ide_disk_setup(ide_drive_t *drive)
                if (max_s > hwif->rqsize)
                        max_s = hwif->rqsize;
 
-               blk_queue_max_sectors(drive->queue, max_s);
+               blk_queue_max_sectors(q, max_s);
        }
 
        printk(KERN_INFO "%s: max request size: %dKiB\n", drive->name,
-                        drive->queue->max_sectors / 2);
+               q->max_sectors / 2);
+
+       if (ata_id_is_ssd(id) || ata_id_is_cfa(id))
+               queue_flag_set_unlocked(QUEUE_FLAG_NONROT, q);
 
        /* calculate drive capacity, and select LBA if possible */
        ide_disk_get_capacity(drive);