[CentOS] Kernel panic after update to 6.4

Thu Mar 14 15:33:38 UTC 2013
Liam O'Toole <liam.p.otoole at gmail.com>

On 2013-03-14, Johnny Hughes <johnny at centos.org> wrote:

(...)

> Maybe ... try this (everything done as root):
>
> Boot on a kernel that works and do this:
>
> 1. Backup you current initrd:
>
> cp -a /boot/initramfs-2.6.32-358.2.1.el6.x86_64.img
> /boot/initramfs-2.6.32-358.2.1.el6.x86_64.img.bak

OK.

>
> 2. Go to this directory:
>
> cd /lib/modules/2.6.32-358.2.1.el6.x86_64/kernel/drivers/md/

For me the corresponding directory is
/lib/modules/2.6.32-358.2.1.el6.i686/kernel/drivers/md.

>
> 3.  Figure out the md modules loaded in the old kernel:
>
> lsmod | grep dm_
>
> in my case, that output would be this:
>
> [root at localhost md]# lsmod | grep dm_
> dm_round_robin   2525  0
> dm_multipath        17756  1 dm_round_robin
> dm_mirror             14133  0
> dm_region_hash   12085  1 dm_mirror
> dm_log                  9930  2 dm_mirror,dm_region_hash
> dm_mod                82839  12 dm_multipath,dm_mirror,dm_log
>
> (note, dm-mod and dm_mod are the same thing)

In my case I have:

# lsmod | grep dm_
dm_mirror              11678  0 
dm_region_hash          9609  1 dm_mirror
dm_log                  8322  2 dm_mirror,dm_region_hash
dm_mod                 66925  8 dm_mirror,dm_log

>
> 5.  Do an file list and make sure all the modules you need to include
> (in my case the 6 in column 1):
>
> ls
>
> Note: make sure all the modules are listed ad you see the file names
> (should be for me: dm-round-robin.ko, dm-multipath.ko, dm-mirror.ko,
> dm-region-hash.ko, dm-log.ko, dm-mod.ko)

Yes, all are present:

# ls dm*.ko
dm-bufio.ko   dm-log-userspace.ko  dm-queue-length.ko
dm-service-time.ko
dm-crypt.ko   dm-memcache.ko       dm-raid45.ko        dm-snapshot.ko
dm-delay.ko   dm-mirror.ko         dm-raid.ko          dm-thin-pool.ko
dm-flakey.ko  dm-mod.ko            dm-region-hash.ko   dm-zero.ko
dm-log.ko     dm-multipath.ko      dm-round-robin.ko

>
> 4.  Create a new initrd with all the relevant md modules preloaded (in
> my case, this command line ... preload only the modules you need from
> your list .. again, have to do this as root):
>
> mkinitrd -f --preload=3Ddm_round_robin --preload=3Ddm_multipath
> --preload=3Ddm_mirror  --preload=3Ddm_region_hash  --preload=3Ddm_log=20
> --preload=3Ddm_mod  /boot/initramfs-2.6.32-358.2.1.el6.x86_64.img
> 2.6.32-358.2.1.el6.x86_64
>
> Note:  The above mkinitrd command (and all the other commands) should be
> entered all on one line, I am sure it will wrap when posted.

(Indeed it did wrap.) The command I used was

mkinitrd -f --preload=dm_mirror --preload=dm_region_hash
--preload=dm_log --preload=dm_mod
/boot/initramfs-2.6.32-358.2.1.el6.i686.img 2.6.32-358.2.1.el6.i686

That produced a file of similar size to the original:

# ls -l /boot/initramfs-2.6.32-358.2.1.el6.i686.img*
-rw-r--r--. 1 root root 15450686 Mar 14 15:13
/boot/initramfs-2.6.32-358.2.1.el6.i686.img
-rw-r--r--. 1 root root 15450647 Mar 13 17:11
/boot/initramfs-2.6.32-358.2.1.el6.i686.img.bak

>
> 5.  This may not work, because there may need to be some other things
> loaded that are not, like the disc controller's kernel module driver,
> etc.  What I think is going on is either something has been removed from
> this kernel that existed before ... OR ... something is being
> mis-detected with this kernel on your machine.

Unfortunately, when rebooting into kernel 358.2.1 I get the same result
as before.

Thanks for taking the time to look into this. Is it an upstream bug?

-- 

Liam