We have had several servers kernel panic on a variety of different
hardware, maybe one or two kernel panics a week on various servers. None
of them are under high load. Some are running
keepalived+ldirector/ipvsadm, and some plain firewalls just running
keepalived and shorewall/iptables.
Kernel panic: not syncing: fs/block_dev.c:396: spin_lock
(fs/block_dev.c:c035fc40) already locked by fs/block_dev.c/440
It looks like I need to apply this patch to the kernel,
http://lkml.org/lkml/2004/11/24/375 ... which has been included in the
kernel.org kernels. I'm sure the problem is, all these boxes that are
crashing sometimes are running CentOS 4 which is a free version of
RedHat Enterprise 4. They are all running the latest redhat/centos
kernel, 2.6.9-22.0.1.ELsmp. Thanks to Redhat's insane back porting and
weird version numbering I'm not quite sure which kernel.org kernel that
equates to. Other than these occasional kernel panics everything is
working great. I'm guessing Redhat isn't including that patch yet
because I'm still seeing these kernel panics. I tried to check the
redhat kernel source code but that leads me to a problem:
The ipvs source code doesn't seem to be included when I install Redhat's
kernel source. My folder
/usr/src/kernels/2.6.9-22.0.1.EL-smp-i686/net/ipv4/ipvs just contains
two files, a Makefile and Kconfig ... I did find
/usr/src/kernels/2.6.9-22.0.1.EL-smp-i686/include/net/ip_vs.h but its
just a header file. For the life of me I can't find ip_vs_ctl.c to
patch. It is definitely installed though, if I look at /proc/net/ip_vs I
see "IP Virtual Server version 1.2.0 (size=4096)"
1) Think I could grab 126.96.36.199 (latest stable kernel from kernels.org)
and borrow the net/ipv4/ipvs folder/files out of there and try using
that to recompile the centos/redhat kernel?
2) Should I forget about Redhat's crazy kernel and just try using a
kernel.org kernel on top of the existing centos/redhat installations?
I'm afraid that has a high chance of breaking things though.
3) The LVS website does not seem to offer the 2.6 kernel module source
code, it just says 'its already built in to the 2.6 kernel'... there is
ipvsadm source for the 2.6 kernel but no plain ipvs source. Any way I
could just download the 2.6 ipvs module from someplace, make sure its
patched patch and use it to recompile the centos/redhat kernel?
4) Any other solutions to solve the kernel panic other than that patch I
found above? It's odd that we have some firewalls running keepalived but
no ipvsadm/ldirector crashing though keepalived does seem to use ipvs
even when it's not being a load balancer.