Pages - Menu

Sunday, June 1, 2014

kernel panic scsi_wait_scan on elrepo kernel-ml

Browsing around ELRepo, you can see they have the elrepo-kernel repository which contains the long-life kernel-lt (currently 3.10) and mainline kernel-ml (currently 3.14) packages.

I'd always been curious about these, so I spun up a test VM and did a CentOS 6 Basic Server install, then added ELRepo and installed them.

kernel-lt works fine first time.

However, kernel-ml will not boot, and simply repeats:
FATAL: Module scsi_wait_scan not found.
This was discussed on the upstream kernel bug tracker:

Bug 60758 - module scsi_wait_scan not found kernel panic on boot https://bugzilla.kernel.org/show_bug.cgi?id=60758

As noted in that bug, the problem can be permanently resolved by adding a file like:

echo 'add_drivers+="virtio_blk"' >/etc/dracut.conf.d/force-vitio_blk-to-ensure-boot.conf

Then backup and rebuild the initramfs:

cp /boot/initramfs-3.14.4-1.el6.elrepo.x86_64.img /boot/initramfs-3.14.4-1.el6.elrepo.x86_64.img.bak
dracut -f /boot/initramfs-3.14.4-1.el6.elrepo.x86_64.img 3.14.4-1.el6.elrepo.x86_64

The root cause is that the virtio disk driver has changed from using blk_init_queue() in EL6 kernel to blk_mq_init_queue() in kernel 3.13 onwards, but the older EL6 dracut does not consider the latter symbol to be required for the storage drivers, so the initramfs is built without the storage driver.

This was fixed on Fedora 20 Bug 1067669, and has been cloned to RHEL6 Bug 1103455.

1 comment:

Anonymous said...

The kernel-lt pacakges for me had disks missing from /dev/disk/by-path