When the Event Source Daemon(vxesd) is enabled during boot and the Emulex helper applications are installed, it will prevent any further modules from being loaded after the process vxesd is started. This results in the modules required for LLT and GAB not being loaded, which prevents the cluster from starting.
The cause of this problem is a known bug in the RedHat 4 x64 kernel and how it handles ioctls in 32-64 compatibility mode.
Explanation of problem from RedHat BugID: 185585
https://bugzilla.redhat.com/show_bug.cgi?id=185585This problem occurs on x86_64 systems when there are multiple kernel modules
attempting to handle ioctls in compatibility mode, CONFIG_COMPAT.
One module registers itself via the register_ioctl32_conversion()call,
registering at the same time a handler to handle ioctls in that mode.
An application daemon then issues an ioctl call, which sleeps in the kernel
module to handle asynchronous events.
While this ioctl call is outstanding, if another module tries to register to
handle ioctls via register_ioctl32_conversion() at its load time, that call will
hang, causing the module loading to hang.
WorkArounds:
There are a couple different workarounds for this problem:
1.) Remove the Emulex helper application rpms or disable them from starting.
disabled /etc/init.d/elxlpfc from executing at startup
remove the install lpfcdfc line from modprobe.conf to prevent the module from being loaded during bootup
2.) Change the order in which vxesd is started.
Comment out the following line in the /etc/init.d/vxvm-recover startup script
/usr/sbin/vxddladm start eventsource
Next, add that same line to the /etc/rc.local script. This will ensure it will run after all the other startup scripts have completed.
echo "/usr/sbin/vxddladm start eventsource " >> /etc/rc.local
3.) Disabled the Event Source Daemon from starting.cd
Comment out the following line in the /etc/init.d/vxvm-recover startup script
/usr/sbin/vxddladm start eventsource