ahci: ignore atapi devices which are not cdroms
authorGerd Hoffmann <kraxel@redhat.com>
Thu, 4 Aug 2011 17:36:29 +0000 (19:36 +0200)
committerKevin O'Connor <kevin@koconnor.net>
Sat, 6 Aug 2011 17:57:53 +0000 (13:57 -0400)
Also simplify the code a bit further down the road
as we know iscd must be true ;)

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
src/ahci.c

index 55ada5f7499a198f47bab90f66e03a2e2d5cb2ed..c1b436d6713bdff340b48c923539b5cfd4463983 100644 (file)
@@ -547,19 +547,20 @@ static int ahci_port_init(struct ahci_port_s *port)
         port->drive.blksize = CDROM_SECTOR_SIZE;
         port->drive.sectors = (u64)-1;
         u8 iscd = ((buffer[0] >> 8) & 0x1f) == 0x05;
+        if (!iscd) {
+            dprintf(1, "AHCI/%d: atapi device is'nt a cdrom\n", port->pnr);
+            return -1;
+        }
         char *desc = znprintf(MAXDESCSIZE
-                              , "DVD/CD [AHCI/%d: %s ATAPI-%d %s]"
+                              , "DVD/CD [AHCI/%d: %s ATAPI-%d DVD/CD]"
                               , port->pnr
                               , ata_extract_model(model, MAXMODEL, buffer)
-                              , ata_extract_version(buffer)
-                              , (iscd ? "DVD/CD" : "Device"));
+                              , ata_extract_version(buffer));
         dprintf(1, "%s\n", desc);
 
         // fill cdidmap
-        if (iscd) {
-            int prio = bootprio_find_ata_device(ctrl->pci_tmp, pnr, 0);
-            boot_add_cd(&port->drive, desc, prio);
-        }
+        int prio = bootprio_find_ata_device(ctrl->pci_tmp, pnr, 0);
+        boot_add_cd(&port->drive, desc, prio);
     }
     return 0;
 }