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

SCSI - SATA device name conflict



Hello,

I have an Athlon64 Etch box running a backported 2.6.20 kernel. 2.6.20 is necessary to fix a broken LAN driver in 2.6.18.

The root file system is on partition 3 of the only present SATA drive, sda.

When I connect an LTO Tape drive to the PCI SCSI controller this tape drive at next boot becomes sda and the SATA disk becomes sde. This breaks the boot sequence, which tries to load the root fs from /dev/sda3, which is now a non-existent partition on the tape drive. The kernel loads, but before it can load INIT, it comes up with the message"Begin: Waiting for root file system ..." and stalls.

Now if I change the GRUB boot line from root=/dev/sda3 to root=/dev/sde3, the kernel helpfully renumerates the devices again so the tape drive is sde and the hard drive is back to sda, so again no boot. At first I thought I was encountering a random naming collision as mentioned by George Michalopoulos on this list. However this problem appears 100% consistent across multiple reboots.

There are two kludgy workarounds we've found so far: one is using BSD disklabels to boot with root=LABEL=/SATAROOT. The other involves using UDEV to create named symlinks based on the disk model ID. Both are rather inflexible and sub-optimal for a server, where sda should always be the first (non-raid, non-pata) hard disk.

Is there a way to rebuild the initrd to tell it to load sata drivers first, or some flag to pass to the kernel to force the first hard disk to sda?

thanks,
Greg



Reply to: