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

Bug#440161: wrong /etc/fstab when installing on RAID using Adaptec 2100S

I have looked into the problem of using Adaptec 2100S with Debian
Edu/Etch, have have a few observations.  The problem seem to originate
from the fact that two different kernel modules, dpt_i2o and
i2o_block/i2o_core support these cards, and that these modules produce
different device nodes /dev/sda (dpt_i2o) and /dev/i2o/hda
(i2o_block).  During boot, it seem to be arbitary which of the modules
are loaded by udev.  If one is loaded during installation, and another
is loaded during boot, the device path in /etc/fstab is wrong and the
boot fail.  The selected kernel module can change from boot to boot.

A quick look in /lib/modules/2.6.18-5-686/modules.pcimap tell me that
the conflicting kernel module issue only affect one PCI id.  These are
the devices supported by the two modules:

  1044:a511 dpt_i2o i2o_core
  1044:a501 dpt_i2o
  8086:1962 i2o_core

There are at least three problems in Etch related to this issue.

 - The i2o_core and i2o_block modules is missing in the
   scsi-extra-modules udeb.
 - The automatic partitioner do not accept /dev/i2o/hda as an hard
   drive, and fail.
 - Any of the drivers might grab the device during boot, and this is
   not consistent from boot to boot.

The first one was partly addressed in d-i svn by replacing dpt_i2o
with i2o_core, but it will break support for PCI id 1044:a501.  A fix
for this is to reinsert dpt_i2o.

The others are not addressed as far as I know.

A fix for the last problem is to blacklist one of the drivers in
/etc/modprobe.d/blacklist (or equivalent, could be another file), to
make sure the same driver is used during installation and later boot.
Perhaps something like this in an appropriate place (must be before
the kernel modules are loaded):

  # Force the use of dpt_i2o for devices where both it and i2o_core can
  # support the card, to avoid device name confusion.
  if lspci -n | grep -q " 1044:a511 " ; then
      cat >>/etc/modprobe.d/blacklist <<EOF
  # Make sure dpt_i2o is used for PCI device 1044:a511 (Adaptec 2100 RAID)
  blacklist i2o_core
  blacklist i2o_block

It would select the dpt_i2o driver for the card supported by both
drivers.  One could also select the i2o_core driver and blacklist the
dpt_i2o driver.  I have no idea which of these drivers are preferred,
but must admit I personally do not like the /dev/i2o/ device path.

Happy hacking,
Petter Reinholdtsen

Reply to: