[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Multiple Driver Disks can't be run/added to the system - BZ #469709



Hello Folks,

I'm currently experiencing this bug on a RHEL5.3 (anaconda-11.1.2.168-1).

Here's what I found/think:

I grabbed two disk drivers with modules (

Disk1:
mptbase scsi "Fusion MPT base driver"
mptscsih scsi "Fusion MPT scsi base driver"
mptctl misc "Fusion MPT ioctl driver"
mptsas scsi "Fusion MPT SAS driver"
mptspi scsi "Fusion MPT SPI driver"

Disk2:
adpinv scsi "Driver for Adaptec Inverness SAS/SATA Controller"

During the installation if I provide these disks in any order. For the second attempt (loading the second driver disk) it failed. With the following error:

"No devices of the appropriate type were found on the driver disk. Would you
like to manually select the driver, continue anyway, or load another driver
disk?"

If you manually choose the driver it works fine and installation continues.

Going further I added few debug statements in anaconda-11.1.2.168/loader2/driverdisk.c and reproduced the same behaviour and here's what I see:


anaconda.log:

14:16:52 DEBUG   : In loadDriverDisks()
14:17:40 DEBUG   : In loadDriverDisks() -> Calling loadDriverFromMedia()
14:17:40 DEBUG   : Inside loadDriverFromMedia
14:17:40 DEBUG   : DEV_DEVICE: devNames is (nil)
14:17:40 DEBUG   : devices[0] is fd0
14:17:40 DEBUG   : devices[1] is hdc
14:17:40 DEBUG   : devices[2] is hda
14:17:40 DEBUG   : Called getRemovableDevices()
14:17:40 DEBUG   : rc is 3
14:17:58 DEBUG   : In DEV_PART Calling getPartitionsList()
14:17:58 DEBUG   : In DEV_INSERT
14:18:00 DEBUG : In DEV_INSERT. mount looks good moving to verifyDriverDisk
14:18:00 DEBUG   : In DEV_INSERT. After verifyDriverDisk rc is 0
14:18:00 DEBUG   : In DEV_LOAD, calling probeDevices()
14:18:01 DEBUG   : In DEV_LOAD after loadDriverDisk() rc is 0
14:18:01 DEBUG   : In DEV_PROBE
14:18:01 DEBUG   : In DEV_PROBE calling busProbe()
14:18:01 DEBUG : ignoring driverless device VMware Inc Abstract SVGA II Adapter
14:18:01 INFO    : modules to insert mii pcnet32 libata ata_piix
14:18:01 DEBUG   : getModuleLocation: 2.6.18-128.el5/i686
14:18:02 INFO    : loaded mii from /modules/modules.cgz
14:18:02 INFO    : loaded pcnet32 from /modules/modules.cgz
14:18:02 INFO    : loaded libata from /modules/modules.cgz
14:18:02 INFO    : loaded ata_piix from /modules/modules.cgz
14:18:02 INFO    : inserted /tmp/mii.ko
14:18:02 INFO    : inserted /tmp/pcnet32.ko
14:18:02 INFO    : inserted /tmp/libata.ko
14:18:03 INFO    : inserted /tmp/ata_piix.ko
14:18:03 INFO    : load module set done
14:18:03 INFO    : load module set done
14:18:03 DEBUG   : In DEV_PROBE found > before

At this stage it finshed loading the drivers from the first disk. So, what it does here is, In driverdisk.c, look at loadDriverFromMedia(), in particular, 'case DEV_LOAD:' and 'case DEV_PROBE:' near the bottom of the switch.

It calls probeDevices() (from kudzu libraries) in DEV_LOAD and counts up how many devices already have drivers loaded* and stores than in 'before'. Then, in DEV_PROBE, it does it again and stores it in 'found'. If 'found' is greater than 'before', then it must have found the drivers on the driver disk and loaded them, so it's done with that disk.

  * This only works for network devices at the moment...  See kudzu.c
    probeDevices() function...

If found == before, though, that means there was some kind of problem with the driver disk, so it pops up the error message and asks you to manually choose or try another disk.

For second disk (disk2):

14:18:19 DEBUG   : Inside loadDriverFromMedia
14:18:19 DEBUG   : DEV_DEVICE: devNames is (nil)
14:18:19 DEBUG   : devices[0] is fd0
14:18:19 DEBUG   : devices[1] is hdc
14:18:19 DEBUG   : devices[2] is hda
14:18:19 DEBUG   : Called getRemovableDevices()
14:18:19 DEBUG   : rc is 3
14:20:03 DEBUG   : In DEV_PART Calling getPartitionsList()
14:20:03 DEBUG   : In DEV_INSERT
14:20:04 INFO    : trying to mount hdc
14:20:04 DEBUG : In DEV_INSERT. mount looks good moving to verifyDriverDisk
14:20:04 DEBUG   : In DEV_INSERT. After verifyDriverDisk rc is 0
14:20:04 DEBUG   : In DEV_LOAD, calling probeDevices()
14:20:04 DEBUG   : In DEV_LOAD after loadDriverDisk() rc is 0
14:20:04 DEBUG   : In DEV_PROBE
14:20:04 DEBUG   : In DEV_PROBE calling busProbe()
14:20:04 DEBUG   : probing buses
14:20:04 DEBUG   : finished bus probing
14:20:04 DEBUG : ignoring driverless device VMware Inc Abstract SVGA II Adapter
14:20:04 INFO    : modules to insert
14:20:04 DEBUG   : getModuleLocation: 2.6.18-128.el5/i686
14:20:04 INFO    : load module set done

At this stage there could be two things, either the modules that I provided was already present/loaded (which I dont suspect is the case) or there was some issues with the modules that I use (but, even if you swap the disks, i'e provide disk2 first which loads the drivers fine and then insert disk1 then it again fails with the same error).

To rule out the possibility that I'm using incorrect drivers, I'm going to try some other drivers (SCSI and Network) to see if that makes any difference.

I would appreciate if you could shed some light on this issue.

Best regards,

--
Vishal Gaikwad, RHCE.
Red Hat Global Support Services Pune, India.


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]